Java 랩퍼 생성의 출력
Java™ 랩퍼 생성의 출력은 다음과 같습니다.
- 빌드 계획(genProject 빌드 디스크립터 옵션이 생략되는 경우)
- Java 서버 프로그램에 대한 호출을 랩핑하기 위한 JavaBeans(Java 랩퍼 참조)
- 특정 상황의 EJB 세션 Bean(세부사항은 연계 옵션 파트에서 callLink 요소에 대한 설명 참조)
- 결과 파일(genProject가 생략되는 경우)
- 서버용 Bean
- 레코드 매개변수용 Bean
- 레코드 배열 행용 Bean
다음 표에서는 다양한 유형의 생성된 Java 랩퍼 파트의 이름을 보여줍니다.
| 파트 유형 및 이름 | 생성되는 항목 |
|---|---|
| 이름이 P인 프로그램 | PWrapper.java에서 이름이 PWrapper인 클래스 |
| 매개변수 또는 입력 레코드로 사용되는 이름이 R인 레코드 | R.java에서 이름이 R인 클래스 |
| 매개변수로 사용되는 R 레코드의 하위 구조화된 영역 S | R.java에서 이름이 R.S인 클래스 |
| 이름이 L인 연계 옵션 파트 | 이름이 L.properties인 연계 특성 파일 |
- 표시된 파트 유형의 경우 동일한 이름을 가진 둘 이상의 파트가 존재할 수 있습니다. 이 경우 두 번째 파트의 이름에는 접미부 $v2가 추가됩니다. 세 번째 파트의 이름에는 $v3 접미부가 추가되고 네 번째 파트의 이름에는 $v4 접미부가 추가되는 방식으로 이름에 접미부가 추가됩니다.
프로그램 파트를 Java 랩퍼로 생성하도록 요청하면 EGL은 다음과 같은 실행 파일 각각에 대해 Java 클래스를 생성합니다.
- 프로그램 파트
- 프로그램 매개변수로 선언되는 각각의 레코드
- 세션 Bean(연계 옵션 파트를 지정하며 생성된 프로그램에 대한 callLink 요소의 링크 유형이 ejbCall인 경우)
- 해당 레코드 중 하나의 내부 구조에 있음
- 하나 이상의 하위 구조 필드를 가지고 있음(즉, 구조화되어 있음)
- 배열임(이 경우에는 하위 구조화된 배열)
- 이름은 소문자로 변환됩니다.
- 모든 하이픈 또는 빼기(-) 또는 밑줄(_)이 삭제됩니다. 하이픈 또는 밑줄 다음의 문자는 대문자로 변경됩니다.
- 이름이 클래스 이름으로 사용되거나 메소드 이름 내에서 사용되면 첫 번째 문자가 다시 대문자로 변환됩니다.
프로그램에 대한 매개변수 중 하나가 레코드인 경우 EGL은 해당 변수에 대한 랩퍼 클래스도 생성합니다. 프로그램 Prog에 Rec라는 typeDef를 가진 레코드 매개변수가 있으면 매개변수에 대한 랩퍼 클래스를 Rec라고 부릅니다. 매개변수의 typeDef가 프로그램과 동일한 이름을 가진 경우 매개변수에 대한 랩퍼 클래스는 "Record"라는 접미부를 가집니다.
레코드 매개변수에 배열 필드가 있고 이 필드의 아래에 다른 필드가 있는 경우 생성기는 랩퍼도 생성합니다. 이 하위 구조화된 배열 랩퍼는 레코드 랩퍼의 내부 클래스가 됩니다. 대부분의 경우 Rec에서 AField라는 하위 구조화된 배열 필드는 Rec.AField라는 클래스에 의해 랩핑됩니다. 레코드는 동일한 이름을 가진 두 개의 하위 구조화된 배열 필드를 포함할 수 있으며 이 경우 필드 랩퍼의 이름은 필드의 규정된 이름을 사용하여 지정됩니다. 첫 번째 AField의 규정된 이름이 Top1.AField이고 두 번째의 규정된 이름이 Top2.Middle2.AField인 경우 클래스의 이름은 Rec.Top1$_aField 및 Rec.Top2$_middle2$_aField로 지정됩니다. 하위 구조화된 배열의 이름이 프로그램의 이름과 동일한 경우 하위 구조화된 배열에 대한 랩퍼 클래스는 Structure 접미부를 가지게 됩니다.
하위 레벨 필드의 값을 설정하고 가져오는 메소드는 각각의 레코드 랩퍼 및 하위 구조화된 배열 랩퍼에 생성됩니다. 레코드 또는 하위 구조화된 배열의 두 개의 하위 레벨 필드가 동일한 이름을 가진 경우 생성기는 이전 단락에서 설명된 규정된 이름 체계를 사용합니다.
추가적인 메소드는 SQL 레코드에 대한 랩퍼에 생성됩니다. 레코드의 각 필드에 대해 생성기는 해당 널 표시기 값을 가져오고 설정하는 메소드와 해당 SQL 길이 표시기를 가져오고 설정하는 메소드를 작성합니다.
클래스가 컴파일된 후에는 Javadoc 도구를 사용하여 classname.html 파일을 빌드할 수 있습니다. HTML 파일은 클래스에 대한 공용 인터페이스를 기술합니다. Javadoc으로 작성된 HTML 파일을 사용하는 경우 해당 파일이 EGL Java 랩퍼인지 확인하십시오. VisualAge® Generator Java 랩퍼에서 생성된 HTML 파일은 EGL Java 랩퍼에서 생성된 HTML 파일과 다릅니다.
예제
하위 구조화된 배열을 가진 레코드 파트의 예제는 다음과 같습니다.
Record myRecord type basicRecord
10 MyTopStructure[3];
15 MyStructureField01 CHAR(3);
15 MyStructureField02 CHAR(3);
end
aliasWrapper.java
여기서 - alias
- 프로그램 파트에서 지정되는 별명 이름입니다(있는 경우). 외부 이름이 지정되지 않은 경우에는 프로그램 파트의 이름이 사용됩니다.
recordName.java
여기서 - recordName
- 레코드 파트의 이름입니다.
- 배열 이름이 레코드에서 고유한 경우 내부 클래스는 레코드
클래스 내에 있으며 다음과 같이 이름이 지정됩니다.
여기서recordName.siName- recordName
- 레코드 파트의 이름입니다.
- siName
- 배열의 이름입니다.
- 배열 이름이 레코드에서 고유하지 않은 경우 내부 클래스의 이름은
배열의 완전한 이름을 기반으로 하며 하나의 규정자는 달러 표시($) 및
밑줄(_)의 조합으로 다음 규정자와 구분됩니다. 예를 들어, 배열이 레코드의
세 번째 레벨에 있는 경우 생성된 클래스는 레코드 클래스의 내부 클래스이며
다음과 같이 이름이 지정됩니다.
여기서Topname$_Secondname$_Siname- Topname
- 최상위 레벨 구조 필드의 이름입니다.
- Secondname
- 두 번째 레벨 구조 필드의 이름입니다.
- Siname
- 하위 구조화된 배열 필드의 이름입니다.
동일한 이름의 또다른 배열이 레코드의 최상위 레벨의 직속 하위인 경우에는 내부 클래스도 레코드 클래스 내에 있으며 다음과 같이 이름이 지정됩니다.
여기서Topname$_Siname- Topname
- 최상위 레벨 구조 필드의 이름입니다.
- Siname
- 하위 구조화된 배열 필드의 이름입니다.
최종적으로 하위 구조화된 배열의 이름이 레코드에서 고유하지 않고 배열이 이름이 레코드에서 고유하지 않은 또다른 하위 구조화된 배열의 하위인 경우를 생각해 보십시오. 하위 배열에 대한 클래스는 내부 클래스의 내부 클래스로 생성됩니다.
Java 랩퍼를 생성할 때 연계 옵션을 런타임 시 설정하도록 요청하는 경우에는 Java 특성 파일 및 연계 특성 파일도 생성합니다.