JDT AST에서 Java JET2로 변환 참조 안내서

이 문서는 JDT AST에서 Java 코드를 생성할 수 있는 JET2 변환 요소 및 구조를 설명합니다. 특히 이 변환을 사용하여 JDT AST에서 Java 코드를 생성하는 개발자에게 유용합니다.

JDT에서 코드 JET2로 변환

JDT에서 코드 JET2로의 변환은 최상위 레벨의 변환입니다.

JDT에서 코드 JET2로 변환
ID com.ibm.xtools.transform.java.jet2templates
소스 java.util.Map(org.eclipse.jdt.core.IJavaProject와 해당 프로젝트에 대한 Collection of org.eclipse.jdt.core.dom.CompilationUnit 요소의 콜렉션 간 맵핑)
생성 해당 프로젝트의 각 CompilationUnit별 Java 파일

변환 시 루트 값으로는 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 확장
ID com.ibm.xtools.transform.java.jet2.IJavaJET2ListenerProvider
요소 JavaJET2ListenerProvider
속성 class
구현 com.ibm.xtools.transform.java.jet2.listeners.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>