Example usage for org.eclipse.jdt.internal.compiler ISourceElementRequestor exitField

List of usage examples for org.eclipse.jdt.internal.compiler ISourceElementRequestor exitField

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.compiler ISourceElementRequestor exitField.

Prototype

void exitField(int initializationStart, int declarationEnd, int declarationSourceEnd);

Source Link

Usage

From source file:lombok.eclipse.agent.PatchConstructorAndDataEclipse.java

License:Open Source License

public static void onSourceElementRequestor_exitField(ISourceElementRequestor requestor,
        int initializationStart, int declarationEnd, int declarationSourceEnd,
        FieldDeclaration fieldDeclaration, TypeDeclaration typeDeclaration) throws Exception {
    if (requestor instanceof CompilationUnitStructureRequestor) {
        boolean isAnnotatedWithConstructorOrData = false;
        if (typeDeclaration.annotations != null)
            for (Annotation annotation : typeDeclaration.annotations) {
                TypeReference annotationType = annotation.type;
                if (annotationType == null)
                    continue;
                String type = new String(annotationType.getLastToken());
                if (type.equals("Data") || type.equals("AllArgsConstructor") || type.equals("NoArgsConstructor")
                        || type.equals("RequiredArgsConstructor")) {
                    isAnnotatedWithConstructorOrData = true;
                    break;
                }// w w w.  j  a  v a  2  s.com
            }
        if (isAnnotatedWithConstructorOrData) {
            if (fieldDeclaration.initialization != null)
                initializationStart = fieldDeclaration.initialization.sourceStart;
            if (initializationStart != -1) {
                CompilationUnitStructureRequestor cusRequestor = (CompilationUnitStructureRequestor) requestor;
                JavaElement handle = (JavaElement) getHandleStack(cusRequestor).peek();
                requestor.exitField(initializationStart, declarationEnd, declarationSourceEnd);
                SourceFieldElementInfo info = (SourceFieldElementInfo) getNewElements(cusRequestor).get(handle);
                int length = declarationEnd - initializationStart;
                if (length > 0) {
                    char[] initializer = new char[length];
                    System.arraycopy(getParser(cusRequestor).scanner.source, initializationStart, initializer,
                            0, length);
                    setInitializationSource(info, initializer);
                }
                return;
            }
        }
    }
    requestor.exitField(initializationStart, declarationEnd, declarationSourceEnd);
}