이 문서는 JDT AST에서 Java 코드를 생성할 수 있는 JET2 변환 요소 및 구조를 설명합니다. 특히 이 변환을 사용하여 JDT AST에서 Java 코드를 생성하는 개발자에게 유용합니다.
JDT에서 코드 JET2로의 변환은 최상위 레벨의 변환입니다.
| JDT에서 코드 JET2로 변환 |
|
변환 시 루트 값으로는 Map<IJavaProject,Collection<CompilationUnit>>이 예상됩니다. 그런 다음 프로젝트별 콜렉션을 처리하고, 해당 프로젝트에서 해당 소스 파일을 생성합니다. CompilationUnit 요소에는 필수 정보(예: 패키지 선언, 가져오기 선언 등)가 모두 포함됩니다.
변환에서는 org.eclipse.jet.modelInspectors 확장을 사용하여 JET 템플리트에서 JDT AST를 순회합니다. 검사기는 XPath 정보 모델에 오브젝트를 적용하는 오브젝트입니다. 각각의 검사기는 적용할 수 있는 오브젝트 유형을 정의하고 이러한 오브젝트를 통해서만 전달됩니다. 각 ASTNode의 XPath 조회에 응답하는 ASTNode마다 검사기가 있습니다. 이러한 검사기는 com.ibm.xtools.transform.java.jet2 플러그인에 구현되어 있습니다.
호출된 변환이 변환 실행 중 사용자 정의 조치를 수행할 수 있도록 변환에는 com.ibm.xtools.transform.java.jet2.IJavaJET2ListenerProvider 확장점이 제공됩니다. IJavaJET2ListenerProvider는 각각의 ASTNode에 Java JET2 변환을 통해, 작성된 각 파일에는 org.eclipse.jet.IWriterListener를 통해 클라이언트가 리스너를 등록할 수 있도록 하는 인터페이스입니다. 확장점의 구조는 아래에 설명되어 있습니다.
| IJavaJET2ListenerProvider 확장 |
|
IJavaJET2ListenerProvider 인터페이스는 다음과 같이 정의되어 있습니다.
| 공용 인터페이스 IJavaJET2ListenerProvider { 공용 IJavaJET2Listener getJavaJET2Listener(문자열 activityId); 공용 IWriterListener getWriterListener(문자열 activityId); } |
IWriterListener가 각 파일이 커미트되기 전/후에 호출되는 파일 레벨 리스너인 반면, IJavaJET2Listener는 각 ASTNode가 처리되기 전/후에 호출되는 노드 레벨 리스너입니다. 컨트리뷰터는 관심이 있는 특정 activityId에만 리스너를 제공할 수 있습니다. ActivityId는 Java JET2 변환의 클라이언트가 지정할 수 있는 ID이고, 컨트리뷰터가 activityId에 리스너를 제공할 수 있으므로 컨트리뷰터는 Java JET2 변환을 호출하는 변환을 확장할 수 있습니다. 인터페이스 IJavaJET2Listener는 아래와 같이 정의되어 있습니다.
| 공용 인터페이스 IJavaJET2Listener { 공용 void preVisit (ASTNode 노드, JET2Writer 작성기); 공용 void postVisit(ASTNode 노드, JET2Writer 작성기); } |
<TBD>
<TBD>