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

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

Introduction

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

Prototype

public abstract IJavaElement getHandleFromMemento(String token, MementoTokenizer memento,
            WorkingCopyOwner owner);

Source Link

Usage

From source file:com.codenvy.ide.ext.java.server.internal.core.CompilationUnit.java

License:Open Source License

public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento,
        WorkingCopyOwner workingCopyOwner) {
    switch (token.charAt(0)) {
    case JEM_IMPORTDECLARATION:
        JavaElement container = (JavaElement) getImportContainer();
        return container.getHandleFromMemento(token, memento, workingCopyOwner);
    case JEM_PACKAGEDECLARATION:
        if (!memento.hasMoreTokens())
            return this;
        String pkgName = memento.nextToken();
        JavaElement pkgDecl = (JavaElement) getPackageDeclaration(pkgName);
        return pkgDecl.getHandleFromMemento(memento, workingCopyOwner);
    case JEM_TYPE:
        if (!memento.hasMoreTokens())
            return this;
        String typeName = memento.nextToken();
        JavaElement type = (JavaElement) getType(typeName);
        return type.getHandleFromMemento(memento, workingCopyOwner);
    }//from  w  w  w .j a v a 2  s  .c om
    return null;
}

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

License:Open Source License

public static IJavaElement create(String handleIdentifier, WorkingCopyOwner owner) {

    if (handleIdentifier == null) {
        return null;
    }/* w w w .j  a v a2  s .  co  m*/
    Map aspectsInJavaFiles = new HashMap();

    boolean isCodeElement = false;
    String codeElementHandle = ""; //$NON-NLS-1$

    int codeElementDelimPos = indexOfIgnoringEscapes(handleIdentifier, AspectElement.JEM_CODEELEMENT);
    if (codeElementDelimPos != -1) {
        isCodeElement = true;
        codeElementHandle = handleIdentifier.substring(codeElementDelimPos + 1);
        handleIdentifier = handleIdentifier.substring(0, codeElementDelimPos);
    }

    AJMementoTokenizer memento = new AJMementoTokenizer(handleIdentifier);
    while (memento.hasMoreTokens()) {
        String token = memento.nextToken();
        if ((token.charAt(0) == AspectElement.JEM_ASPECT_CU)
                || (token.charAt(0) == JavaElement.JEM_COMPILATIONUNIT)
                || (token.charAt(0) == JavaElement.JEM_CLASSFILE)) {

            int index;
            if (token.charAt(0) == AspectElement.JEM_ASPECT_CU) {
                index = handleIdentifier.indexOf(AspectElement.JEM_ASPECT_CU);
            } else if (token.charAt(0) == JavaElement.JEM_COMPILATIONUNIT) {
                index = handleIdentifier.indexOf(JavaElement.JEM_COMPILATIONUNIT);
            } else { // JEM_CLASSFILE 
                index = handleIdentifier.indexOf(JavaElement.JEM_CLASSFILE);
            }

            if (index != -1) {
                IJavaElement je = JavaCore.create(handleIdentifier.substring(0, index));
                if (je instanceof PackageFragment) {
                    PackageFragment pf = (PackageFragment) je;
                    String cuName = handleIdentifier.substring(index + 1);
                    int ind1 = cuName.indexOf(JavaElement.JEM_TYPE);
                    if (ind1 != -1) {
                        cuName = cuName.substring(0, ind1);
                    }
                    int ind2 = cuName.indexOf(AspectElement.JEM_ASPECT_TYPE);
                    if (ind2 != -1) {
                        cuName = cuName.substring(0, ind2);
                    }
                    int ind3 = cuName.indexOf(AspectElement.JEM_ITD_METHOD);
                    if (ind3 != -1) {
                        cuName = cuName.substring(0, ind3);
                    }
                    ind3 = cuName.indexOf(AspectElement.JEM_ITD_FIELD);
                    if (ind3 != -1) {
                        cuName = cuName.substring(0, ind3);
                    }
                    int ind4 = cuName.indexOf(AspectElement.JEM_DECLARE);
                    if (ind4 != -1) {
                        cuName = cuName.substring(0, ind4);
                    }
                    int ind5 = cuName.indexOf(AspectElement.JEM_IMPORTDECLARATION);
                    if (ind5 != -1) {
                        cuName = cuName.substring(0, ind5);
                    }
                    int ind6 = cuName.indexOf(AspectElement.JEM_PACKAGEDECLARATION);
                    if (ind6 != -1) {
                        cuName = cuName.substring(0, ind6);
                    }
                    if (CoreUtils.ASPECTJ_SOURCE_ONLY_FILTER.accept(cuName)) {
                        // no need to use a cuprovider because we know this
                        // is an AJCompilationUnit
                        JavaElement cu = new AJCompilationUnit(pf, cuName, owner);
                        token = memento.nextToken();
                        if (!memento.hasMoreTokens()) {
                            return cu;
                        }
                        IJavaElement restEl = cu.getHandleFromMemento(memento.nextToken(), memento, owner);
                        if (restEl != null) {
                            if (isCodeElement) {
                                // there was an AJCodeElement at the end of
                                // the handle
                                IJavaElement codeEl = getCodeElement(codeElementHandle, (JavaElement) restEl);
                                if (codeEl != null) {
                                    return codeEl;
                                }
                            }
                            return restEl;
                        }
                    } else {
                        // Use the default working copy owner for Java elements
                        IJavaElement restEl = pf.getHandleFromMemento(token, memento,
                                DefaultWorkingCopyOwner.PRIMARY);
                        if (restEl != null) {
                            if (isCodeElement) {
                                // there was an AJCodeElement at the end of
                                // the handle
                                IJavaElement codeEl = getCodeElement(codeElementHandle, (JavaElement) restEl);
                                if (codeEl != null) {
                                    return codeEl;
                                }
                            }
                            return restEl;
                        } else if (ind2 != -1) { // An aspect in a .java file...
                            int index3 = handleIdentifier.indexOf(AspectElement.JEM_ASPECT_TYPE);
                            String aspectName = handleIdentifier.substring(index3 + 1);
                            boolean identifierIsAspect = true;
                            int ind7 = aspectName.indexOf(AspectElement.JEM_DECLARE);
                            if (ind7 != -1) {
                                aspectName = aspectName.substring(0, ind7);
                                identifierIsAspect = false;
                            }
                            int ind8 = aspectName.indexOf(AspectElement.JEM_ADVICE);
                            if (ind8 != -1) {
                                aspectName = aspectName.substring(0, ind8);
                                identifierIsAspect = false;
                            }
                            int ind9 = aspectName.indexOf(AspectElement.JEM_ITD_METHOD);
                            if (ind9 != -1) {
                                aspectName = aspectName.substring(0, ind9);
                                identifierIsAspect = false;
                            }
                            ind9 = aspectName.indexOf(AspectElement.JEM_ITD_FIELD);
                            if (ind9 != -1) {
                                aspectName = aspectName.substring(0, ind9);
                                identifierIsAspect = false;
                            }
                            int ind10 = aspectName.indexOf(AspectElement.JEM_ASPECT_TYPE);
                            if (ind10 != -1) {
                                aspectName = aspectName.substring(0, ind10);
                                identifierIsAspect = false;
                            }
                            int ind11 = aspectName.indexOf(AspectElement.JEM_TYPE);
                            if (ind11 != -1) {
                                aspectName = aspectName.substring(0, ind11);
                                identifierIsAspect = false;
                            }
                            int ind12 = aspectName.indexOf(AspectElement.JEM_FIELD);
                            if (ind12 != -1) {
                                aspectName = aspectName.substring(0, ind12);
                                identifierIsAspect = false;
                            }
                            int ind13 = aspectName.indexOf(AspectElement.JEM_METHOD);
                            if (ind13 != -1) {
                                aspectName = aspectName.substring(0, ind13);
                                identifierIsAspect = false;
                            }
                            int ind14 = aspectName.indexOf(AspectElement.JEM_POINTCUT);
                            if (ind14 != -1) {
                                aspectName = aspectName.substring(0, ind14);
                                identifierIsAspect = false;
                            }
                            IOpenable openable;
                            if (cuName.endsWith(".class")) {
                                openable = pf.getClassFile(cuName);
                            } else {
                                openable = pf.getCompilationUnit(cuName);
                            }
                            List l;
                            if (aspectsInJavaFiles.get(openable) instanceof List) {
                                l = (List) aspectsInJavaFiles.get(openable);
                            } else {
                                l = new ArrayList();
                                aspectsInJavaFiles.put(openable, l);
                            }
                            JavaElement aspectEl = null;
                            for (Iterator iter = l.iterator(); iter.hasNext();) {
                                AspectElement element = (AspectElement) iter.next();
                                if (element.getElementName().equals(aspectName)) {
                                    aspectEl = element;
                                }
                            }
                            if (aspectEl == null) {
                                if (openable instanceof ClassFile) {
                                    ClassFile cOpenable = (ClassFile) openable;
                                    aspectEl = new BinaryAspectElement((JavaElement) cOpenable, aspectName);
                                } else {
                                    aspectEl = new AspectElement((JavaElement) openable, aspectName);
                                }
                                l.add(aspectEl);
                            }
                            int afterAspectIndex = index3 + aspectName.length() + 1;

                            if (identifierIsAspect) {
                                return aspectEl;
                            } else {
                                memento.setIndexTo(afterAspectIndex);
                                return aspectEl.getHandleFromMemento(memento.nextToken(), memento, owner);
                            }
                        }
                    }
                }
            }
        }
    }
    // XXX can we get here???
    if (isCodeElement) {
        // an injar aspect with no parent
        return new AJInjarElement(codeElementHandle);
    }
    return JavaCore.create(handleIdentifier);
}

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;//from w w w  .  ja v  a  2s . c  om
        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);
}

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

License:Open Source License

public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento,
        WorkingCopyOwner workingCopyOwner) {
    if (token.charAt(0) == AspectElement.JEM_ADVICE) {
        token = null;/*from   w  ww.j  ava  2s .c o m*/
        if (!memento.hasMoreTokens())
            return this;
        String name = memento.nextToken();

        ArrayList<String> params = new ArrayList<String>();
        nextParam: while (memento.hasMoreTokens()) {
            token = memento.nextToken();
            switch (token.charAt(0)) {
            case JEM_TYPE:
                break nextParam;
            case JEM_TYPE_PARAMETER:
                token = null;
                break nextParam;
            case AspectElement.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 AspectElement.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()) {
            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()) {
            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 AspectElement.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 AspectElement.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;
        }
    }
    return super.getHandleFromMemento(token, memento, workingCopyOwner);
}

From source file:org.eclipse.che.jdt.internal.core.JavaProject.java

License:Open Source License

@Override
public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner owner) {
    switch (token.charAt(0)) {
    case JEM_PACKAGEFRAGMENTROOT:
        String rootPath = IPackageFragmentRoot.DEFAULT_PACKAGEROOT_PATH;
        token = null;/*from   w ww. j a  v a  2 s  . c o  m*/
        while (memento.hasMoreTokens()) {
            token = memento.nextToken();
            // https://bugs.eclipse.org/bugs/show_bug.cgi?id=331821
            if (token == MementoTokenizer.PACKAGEFRAGMENT || token == MementoTokenizer.COUNT) {
                break;
            }
            rootPath += token;
        }
        JavaElement root = (JavaElement) getPackageFragmentRoot(new File(rootPath));
        if (token != null && token.charAt(0) == JEM_PACKAGEFRAGMENT) {
            return root.getHandleFromMemento(token, memento, owner);
        } else {
            return root.getHandleFromMemento(memento, owner);
        }
    }
    return null;
}

From source file:org.eclipse.jdt.internal.core.JavaProject.java

License:Open Source License

public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner owner) {
    switch (token.charAt(0)) {
    case JEM_PACKAGEFRAGMENTROOT:
        String rootPath = IPackageFragmentRoot.DEFAULT_PACKAGEROOT_PATH;
        token = null;/*from  w ww  . j a v a  2s  .c  o m*/
        while (memento.hasMoreTokens()) {
            token = memento.nextToken();
            // https://bugs.eclipse.org/bugs/show_bug.cgi?id=331821
            if (token == MementoTokenizer.PACKAGEFRAGMENT || token == MementoTokenizer.COUNT) {
                break;
            }
            rootPath += token;
        }
        JavaElement root = (JavaElement) getPackageFragmentRoot(new Path(rootPath));
        if (token != null && token.charAt(0) == JEM_PACKAGEFRAGMENT) {
            return root.getHandleFromMemento(token, memento, owner);
        } else {
            return root.getHandleFromMemento(memento, owner);
        }
    }
    return null;
}