Example usage for org.eclipse.jdt.internal.core JavaElement JEM_TYPE_PARAMETER

List of usage examples for org.eclipse.jdt.internal.core JavaElement JEM_TYPE_PARAMETER

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.core JavaElement JEM_TYPE_PARAMETER.

Prototype

char JEM_TYPE_PARAMETER

To view the source code for org.eclipse.jdt.internal.core JavaElement JEM_TYPE_PARAMETER.

Click Source Link

Usage

From source file:org.eclipse.ajdt.core.AJMementoTokenizer.java

License:Open Source License

public String nextToken() {
    int start = this.index;
    StringBuffer buffer = null;//from www  . ja v a  2s.c o  m
    switch (this.memento[this.index++]) {
    case JavaElement.JEM_ESCAPE:
        buffer = new StringBuffer();
        buffer.append(this.memento[this.index]);
        start = ++this.index;
        break;
    case JavaElement.JEM_COUNT:
        return COUNT;
    case JavaElement.JEM_JAVAPROJECT:
        return JAVAPROJECT;
    case JavaElement.JEM_PACKAGEFRAGMENTROOT:
        return PACKAGEFRAGMENTROOT;
    case JavaElement.JEM_PACKAGEFRAGMENT:
        return PACKAGEFRAGMENT;
    case JavaElement.JEM_FIELD:
        return FIELD;
    case JavaElement.JEM_METHOD:
        return METHOD;
    case JavaElement.JEM_INITIALIZER:
        return INITIALIZER;
    case JavaElement.JEM_COMPILATIONUNIT:
        return COMPILATIONUNIT;
    case JavaElement.JEM_CLASSFILE:
        return CLASSFILE;
    case JavaElement.JEM_TYPE:
        return TYPE;
    case JavaElement.JEM_PACKAGEDECLARATION:
        return PACKAGEDECLARATION;
    case JavaElement.JEM_IMPORTDECLARATION:
        return IMPORTDECLARATION;
    case JavaElement.JEM_LOCALVARIABLE:
        return LOCALVARIABLE;
    case JavaElement.JEM_TYPE_PARAMETER:
        return TYPE_PARAMETER;
    case JavaElement.JEM_ANNOTATION:
        return ANNOTATION;
    // begin AspectJ change
    case AspectElement.JEM_ADVICE:
        return ADVICE;
    case AspectElement.JEM_ASPECT_TYPE:
        return ASPECT_TYPE;
    case AspectElement.JEM_CODEELEMENT:
        return CODEELEMENT;
    case AspectElement.JEM_ITD_METHOD:
        return ITD_METHOD;
    case AspectElement.JEM_ITD_FIELD:
        return ITD_FIELD;
    case AspectElement.JEM_DECLARE:
        return DECLARE;
    case AspectElement.JEM_POINTCUT:
        return POINTCUT;

    case AspectElement.JEM_ASPECT_CU:
        // only return here if JDT weaving is off
        // if JDT weaving is on, then a * here
        // means that we are in an on demand import declaration
        if (!AspectJPlugin.USING_CU_PROVIDER) {
            return ASPECT_CU;
        }
        // end AspectJ change
    }
    loop: while (this.index < this.length) {
        switch (this.memento[this.index]) {
        case JavaElement.JEM_ESCAPE:
            if (buffer == null)
                buffer = new StringBuffer();
            buffer.append(this.memento, start, this.index - start);
            start = ++this.index;
            break;
        case JavaElement.JEM_COUNT:
        case JavaElement.JEM_JAVAPROJECT:
        case JavaElement.JEM_PACKAGEFRAGMENTROOT:
        case JavaElement.JEM_PACKAGEFRAGMENT:
        case JavaElement.JEM_FIELD:
        case JavaElement.JEM_METHOD:
        case JavaElement.JEM_INITIALIZER:
        case JavaElement.JEM_COMPILATIONUNIT:
        case JavaElement.JEM_CLASSFILE:
        case JavaElement.JEM_TYPE:
        case JavaElement.JEM_PACKAGEDECLARATION:
        case JavaElement.JEM_IMPORTDECLARATION:
        case JavaElement.JEM_LOCALVARIABLE:
        case JavaElement.JEM_TYPE_PARAMETER:
        case JavaElement.JEM_ANNOTATION:
            // begin AspectJ change
        case AspectElement.JEM_ADVICE:
        case AspectElement.JEM_ASPECT_TYPE:
        case AspectElement.JEM_CODEELEMENT:
        case AspectElement.JEM_ITD_METHOD:
        case AspectElement.JEM_ITD_FIELD:
        case AspectElement.JEM_DECLARE:
        case AspectElement.JEM_POINTCUT:
            break loop;
        // end AspectJ change

        // begin AspectJ change
        case AspectElement.JEM_ASPECT_CU:
            // only break here if JDT weaving is off
            // if JDT weaving is on, then a * here
            // means that we are in an on demand import declaration
            if (!AspectJPlugin.USING_CU_PROVIDER) {
                break loop;
            }
            // end AspectJ change
        }
        this.index++;
    }
    if (buffer != null) {
        buffer.append(this.memento, start, this.index - start);
        return buffer.toString();
    }
    return new String(this.memento, start, this.index - start);
}

From source file:org.eclipse.ajdt.core.javaelements.AspectElement.java

License:Open Source License

public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento,
        WorkingCopyOwner workingCopyOwner) {
    if (token.charAt(0) == AspectElement.JEM_ADVICE) {
        token = null;/* w  w w  .j  a  va 2 s.com*/
        if (!memento.hasMoreTokens())
            return this;
        String name = memento.nextToken();

        ArrayList params = new ArrayList();
        nextParam: while (memento.hasMoreTokens()) {
            token = memento.nextToken();
            switch (token.charAt(0)) {
            case JEM_TYPE:
                break nextParam;
            case JavaElement.JEM_TYPE_PARAMETER:
                token = null;
                break nextParam;
            case JEM_ADVICE:
                if (!memento.hasMoreTokens())
                    return this;
                String param = memento.nextToken();
                StringBuffer buffer = new StringBuffer();
                while (param.length() == 1 && Signature.C_ARRAY == param.charAt(0)) { // backward
                                                                                      // compatible
                                                                                      // with
                                                                                      // 3.0
                                                                                      // mementos
                    buffer.append(Signature.C_ARRAY);
                    if (!memento.hasMoreTokens())
                        return this;
                    param = memento.nextToken();
                }
                params.add(buffer.toString() + param);
                token = null;
                break;
            default:
                break nextParam;
            }
        }
        String[] parameters = new String[params.size()];
        params.toArray(parameters);

        JavaElement advice = new AdviceElement(this, name, parameters);
        if (token != null) {
            return advice.getHandleFromMemento(token, memento, workingCopyOwner);
        } else {
            return advice;
        }
    } else if (token.charAt(0) == AspectElement.JEM_ITD_METHOD) {
        String name = memento.nextToken();
        ArrayList<String> params = new ArrayList<String>();
        nextParam: while (memento.hasMoreTokens()) {
            token = memento.nextToken();
            switch (token.charAt(0)) {
            case JEM_TYPE:
            case JEM_TYPE_PARAMETER:
                break nextParam;
            case JEM_ITD_METHOD:
                if (!memento.hasMoreTokens())
                    return this;
                String param = memento.nextToken();
                StringBuffer buffer = new StringBuffer();
                while (param.length() == 1 && Signature.C_ARRAY == param.charAt(0)) { // backward
                                                                                      // compatible
                                                                                      // with
                                                                                      // 3.0
                                                                                      // mementos
                    buffer.append(Signature.C_ARRAY);
                    if (!memento.hasMoreTokens())
                        return this;
                    param = memento.nextToken();
                }
                params.add(buffer.toString() + param);
                break;
            default:
                break nextParam;
            }
        }
        String[] parameters = new String[params.size()];
        params.toArray(parameters);
        JavaElement itd = new MethodIntertypeElement(this, name, parameters);
        if (memento.hasMoreTokens()) {
            //                token = memento.nextToken();
            return itd.getHandleFromMemento(token, memento, workingCopyOwner);
        } else {
            return itd;
        }
    } else if (token.charAt(0) == AspectElement.JEM_ITD_FIELD) {
        String name = memento.nextToken();
        JavaElement itd = new FieldIntertypeElement(this, name);
        if (memento.hasMoreTokens()) {
            token = memento.nextToken();
            return itd.getHandleFromMemento(token, memento, workingCopyOwner);
        } else {
            return itd;
        }
    } else if (token.charAt(0) == AspectElement.JEM_DECLARE) {
        String name = memento.nextToken();
        ArrayList params = new ArrayList();
        nextParam: while (memento.hasMoreTokens()) {
            token = memento.nextToken();
            switch (token.charAt(0)) {
            case JEM_TYPE:
            case JEM_TYPE_PARAMETER:
                break nextParam;
            case JEM_DECLARE:
                if (!memento.hasMoreTokens())
                    return this;
                String param = memento.nextToken();
                StringBuffer buffer = new StringBuffer();
                while (param.length() == 1 && Signature.C_ARRAY == param.charAt(0)) { // backward
                                                                                      // compatible
                                                                                      // with
                                                                                      // 3.0
                                                                                      // mementos
                    buffer.append(Signature.C_ARRAY);
                    if (!memento.hasMoreTokens())
                        return this;
                    param = memento.nextToken();
                }
                params.add(buffer.toString() + param);
                break;
            default:
                break nextParam;
            }
        }
        String[] parameters = new String[params.size()];
        params.toArray(parameters);
        JavaElement itd = new DeclareElement(this, name, parameters);
        if (token.charAt(0) == JavaElement.JEM_COUNT) {
            return itd.getHandleFromMemento(token, memento, workingCopyOwner);
        }
        return itd.getHandleFromMemento(memento, workingCopyOwner);
    } else if (token.charAt(0) == AspectElement.JEM_POINTCUT) {
        String name = memento.nextToken();
        ArrayList params = new ArrayList();
        nextParam: while (memento.hasMoreTokens()) {
            token = memento.nextToken();
            switch (token.charAt(0)) {
            case JEM_TYPE:
            case JEM_TYPE_PARAMETER:
                break nextParam;
            case JEM_POINTCUT:
                if (!memento.hasMoreTokens())
                    return this;
                String param = memento.nextToken();
                StringBuffer buffer = new StringBuffer();
                while (param.length() == 1 && Signature.C_ARRAY == param.charAt(0)) { // backward
                                                                                      // compatible
                                                                                      // with
                                                                                      // 3.0
                                                                                      // mementos
                    buffer.append(Signature.C_ARRAY);
                    if (!memento.hasMoreTokens())
                        return this;
                    param = memento.nextToken();
                }
                params.add(buffer.toString() + param);
                break;
            default:
                break nextParam;
            }
        }
        String[] parameters = new String[params.size()];
        params.toArray(parameters);
        JavaElement pointcut = new PointcutElement(this, name, parameters);
        return pointcut.getHandleFromMemento(memento, workingCopyOwner);
    } else if (token.charAt(0) == AspectElement.JEM_METHOD
            && !(this.getOpenable() instanceof AJCompilationUnit)) {
        // method must be mocked up if we are an aspect in a
        // .class or .java file
        // cannot get the JavaElementInfo otherwise
        String name = memento.nextToken();
        ArrayList params = new ArrayList();
        nextParam: while (memento.hasMoreTokens()) {
            token = memento.nextToken();
            switch (token.charAt(0)) {
            case JEM_TYPE:
            case JEM_TYPE_PARAMETER:
            case JEM_ANNOTATION:
                break nextParam;
            case JEM_METHOD:
                if (!memento.hasMoreTokens())
                    return this;
                String param = memento.nextToken();
                StringBuffer buffer = new StringBuffer();
                while (param.length() == 1 && Signature.C_ARRAY == param.charAt(0)) { // backward
                                                                                      // compatible
                                                                                      // with
                                                                                      // 3.0
                                                                                      // mementos
                    buffer.append(Signature.C_ARRAY);
                    if (!memento.hasMoreTokens())
                        return this;
                    param = memento.nextToken();
                }
                params.add(buffer.toString() + param);
                break;
            default:
                break nextParam;
            }
        }
        String[] parameters = new String[params.size()];
        params.toArray(parameters);
        MockSourceMethod mockMethod = new MockSourceMethod(this, name, parameters);
        switch (token.charAt(0)) {
        case JEM_TYPE:
        case JEM_TYPE_PARAMETER:
        case JEM_LOCALVARIABLE:
        case JEM_ANNOTATION:
            return mockMethod.getHandleFromMemento(token, memento, workingCopyOwner);
        default:
            return mockMethod;
        }
    } else if (token.charAt(0) == AspectElement.JEM_ASPECT_TYPE) {
        // static inner aspect inside an aspect...rare, but could happen
        String typeName;
        if (memento.hasMoreTokens()) {
            typeName = memento.nextToken();
            char firstChar = typeName.charAt(0);
            if (firstChar == JEM_FIELD || firstChar == JEM_INITIALIZER || firstChar == JEM_METHOD
                    || firstChar == JEM_TYPE || firstChar == JEM_COUNT) {
                token = typeName;
                typeName = ""; //$NON-NLS-1$
            } else {
                token = null;
            }
        } else {
            typeName = ""; //$NON-NLS-1$
            token = null;
        }
        JavaElement type = (JavaElement) getAspect(typeName);
        if (token == null) {
            return type.getHandleFromMemento(memento, workingCopyOwner);
        } else {
            return type.getHandleFromMemento(token, memento, workingCopyOwner);
        }
    }
    return super.getHandleFromMemento(token, memento, workingCopyOwner);
}