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 IJavaElement getHandleFromMemento(MementoTokenizer memento, WorkingCopyOwner owner) 

Source Link

Usage

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

License:Open Source License

public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento,
        WorkingCopyOwner workingCopyOwner) {
    switch (token.charAt(0)) {
    case JEM_COUNT:
        return getHandleUpdatingCountFromMemento(memento, workingCopyOwner);
    case JEM_FIELD:
        if (!memento.hasMoreTokens())
            return this;
        String fieldName = memento.nextToken();
        JavaElement field = (JavaElement) getField(fieldName);
        return field.getHandleFromMemento(memento, workingCopyOwner);
    case JEM_INITIALIZER:
        if (!memento.hasMoreTokens())
            return this;
        String count = memento.nextToken();
        JavaElement initializer = (JavaElement) getInitializer(Integer.parseInt(count));
        return initializer.getHandleFromMemento(memento, workingCopyOwner);
    case JEM_METHOD:
        if (!memento.hasMoreTokens())
            return this;
        String selector = 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();
                }/*from w w  w  . j ava2s  .c  om*/
                params.add(buffer.toString() + param);
                break;
            default:
                break nextParam;
            }
        }
        String[] parameters = new String[params.size()];
        params.toArray(parameters);
        JavaElement method = (JavaElement) getMethod(selector, parameters);
        switch (token.charAt(0)) {
        case JEM_LAMBDA_EXPRESSION:
        case JEM_TYPE:
        case JEM_TYPE_PARAMETER:
        case JEM_LOCALVARIABLE:
        case JEM_ANNOTATION:
            return method.getHandleFromMemento(token, memento, workingCopyOwner);
        default:
            return method;
        }
    case JEM_TYPE:
        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) getType(typeName);
        if (token == null) {
            return type.getHandleFromMemento(memento, workingCopyOwner);
        } else {
            return type.getHandleFromMemento(token, memento, workingCopyOwner);
        }
    case JEM_TYPE_PARAMETER:
        //         if (!memento.hasMoreTokens()) return this;
        //         String typeParameterName = memento.nextToken();
        //         JavaElement typeParameter = new TypeParameter(this, typeParameterName);
        //         return typeParameter.getHandleFromMemento(memento, workingCopyOwner);
        throw new UnsupportedOperationException();
    case JEM_ANNOTATION:
        //         if (!memento.hasMoreTokens()) return this;
        //         String annotationName = memento.nextToken();
        //         JavaElement annotation = new Annotation(this, annotationName);
        //         return annotation.getHandleFromMemento(memento, workingCopyOwner);
        throw new UnsupportedOperationException();
    }
    return null;
}

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

License:Open Source License

public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner owner) {
    switch (token.charAt(0)) {
    case JEM_TYPE:
        if (!memento.hasMoreTokens())
            return this;
        String typeName = memento.nextToken();
        JavaElement type = new BinaryType(this, manager, typeName);
        return type.getHandleFromMemento(memento, owner);
    }//from  w ww  .  j a  v a 2  s .  c o m
    return null;
}

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

License:Open Source License

public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento,
        WorkingCopyOwner workingCopyOwner) {
    switch (token.charAt(0)) {
    case JEM_COUNT:
        return getHandleUpdatingCountFromMemento(memento, workingCopyOwner);
    case JEM_LAMBDA_EXPRESSION:
        //                if (!memento.hasMoreTokens() || memento.nextToken() != MementoTokenizer.STRING)
        //                    return this;
        //                if (!memento.hasMoreTokens()) return this;
        //                String interphase = memento.nextToken();
        //                if (!memento.hasMoreTokens() || memento.nextToken() != MementoTokenizer.COUNT)
        //                    return this;
        //                int sourceStart = Integer.parseInt(memento.nextToken());
        //                if (!memento.hasMoreTokens() || memento.nextToken() != MementoTokenizer.COUNT)
        //                    return this;
        //                int sourceEnd = Integer.parseInt(memento.nextToken());
        //                if (!memento.hasMoreTokens() || memento.nextToken() != MementoTokenizer.COUNT)
        //                    return this;
        //                int arrowPosition = Integer.parseInt(memento.nextToken());
        //                LambdaExpression expression = LambdaFactory.createLambdaExpression(this, interphase, sourceStart, sourceEnd,
        // arrowPosition);
        //                if (!memento.hasMoreTokens() || (token = memento.nextToken()) != MementoTokenizer.LAMBDA_METHOD)
        //                    return expression;
        //                return expression.getHandleFromMemento(token, memento, workingCopyOwner);
        throw new UnsupportedOperationException();
    case JEM_TYPE:
        String typeName;//from  w ww . j  ava  2  s.  c  o m
        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) getType(typeName, 1);
        if (token == null) {
            return type.getHandleFromMemento(memento, workingCopyOwner);
        } else {
            return type.getHandleFromMemento(token, memento, workingCopyOwner);
        }
    case JEM_LOCALVARIABLE:
        if (!memento.hasMoreTokens())
            return this;
        String varName = memento.nextToken();
        if (!memento.hasMoreTokens())
            return this;
        memento.nextToken(); // JEM_COUNT
        if (!memento.hasMoreTokens())
            return this;
        int declarationStart = Integer.parseInt(memento.nextToken());
        if (!memento.hasMoreTokens())
            return this;
        memento.nextToken(); // JEM_COUNT
        if (!memento.hasMoreTokens())
            return this;
        int declarationEnd = Integer.parseInt(memento.nextToken());
        if (!memento.hasMoreTokens())
            return this;
        memento.nextToken(); // JEM_COUNT
        if (!memento.hasMoreTokens())
            return this;
        int nameStart = Integer.parseInt(memento.nextToken());
        if (!memento.hasMoreTokens())
            return this;
        memento.nextToken(); // JEM_COUNT
        if (!memento.hasMoreTokens())
            return this;
        int nameEnd = Integer.parseInt(memento.nextToken());
        if (!memento.hasMoreTokens())
            return this;
        memento.nextToken(); // JEM_COUNT
        if (!memento.hasMoreTokens())
            return this;
        String typeSignature = memento.nextToken();
        memento.nextToken(); // JEM_COUNT
        if (!memento.hasMoreTokens())
            return this;
        int flags = Integer.parseInt(memento.nextToken());
        memento.nextToken(); // JEM_COUNT
        if (!memento.hasMoreTokens())
            return this;
        boolean isParameter = Boolean.valueOf(memento.nextToken()).booleanValue();
        return new LocalVariable(this, manager, varName, declarationStart, declarationEnd, nameStart, nameEnd,
                typeSignature, null, flags, isParameter);
    //                throw new UnsupportedOperationException();
    case JEM_TYPE_PARAMETER:
        if (!memento.hasMoreTokens())
            return this;
        String typeParameterName = memento.nextToken();
        JavaElement typeParameter = new TypeParameter(this, manager, typeParameterName);
        return typeParameter.getHandleFromMemento(memento, workingCopyOwner);
    case JEM_ANNOTATION:
        if (!memento.hasMoreTokens())
            return this;
        String annotationName = memento.nextToken();
        JavaElement annotation = new Annotation(this, manager, annotationName);
        return annotation.getHandleFromMemento(memento, workingCopyOwner);

    }
    return null;
}

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

License:Open Source License

public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner owner) {
    switch (token.charAt(0)) {
    case JEM_CLASSFILE:
        if (!memento.hasMoreTokens())
            return this;
        String classFileName = memento.nextToken();
        JavaElement classFile = (JavaElement) getClassFile(classFileName);
        return classFile.getHandleFromMemento(memento, owner);
    case JEM_COMPILATIONUNIT:
        if (!memento.hasMoreTokens())
            return this;
        String cuName = memento.nextToken();
        JavaElement cu = new CompilationUnit(this, manager, cuName, owner);
        return cu.getHandleFromMemento(memento, owner);
    }/*from   w ww. j  a  va  2  s .  c  o  m*/
    return null;
}

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

License:Open Source License

public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento,
        WorkingCopyOwner workingCopyOwner) {
    JavaElement type = this;
    if (!(memento instanceof AJMementoTokenizer)) {
        memento = new AJMementoTokenizer(memento, name);
    }/*w w w.  java2s.c om*/
    if ((token.charAt(0) == JavaElement.JEM_IMPORTDECLARATION)
            || (token.charAt(0) == JavaElement.JEM_PACKAGEDECLARATION)) {
        return super.getHandleFromMemento(token, memento, workingCopyOwner);
    }

    // need to handle types ourselves, because they may contain inner aspects
    // (or inner classes containing inner aspects etc)
    while ((token.charAt(0) == AspectElement.JEM_ASPECT_TYPE) || (token.charAt(0) == JavaElement.JEM_TYPE)
            || (token.charAt(0) == JavaElement.JEM_ANNOTATION)) {
        // note that we are also testing for JEM_ANNOTATION here.
        // this is because when the type handle identifiers were changed prior to 2.1.1,
        // JEM_ASPECT_TYPE and JEM_ANNOTATION were the same.
        // Some people have had problems in that the old handles were cached.
        // this can probably be safely removed post 2.1.2.
        if (!memento.hasMoreTokens())
            return type;
        String typeName = memento.nextToken();
        if (token.charAt(0) == AspectElement.JEM_ASPECT_TYPE || token.charAt(0) == JavaElement.JEM_ANNOTATION) {
            type = new AspectElement(type, typeName);
        } else if (token.charAt(0) == JavaElement.JEM_TYPE) {
            type = getType(type, typeName);
            if (type == null)
                type = (JavaElement) getType(typeName);
        }
        if (!memento.hasMoreTokens())
            return type;
        token = memento.nextToken();
    }
    // handle pointcuts in a class (bug 124992)
    if (!(type instanceof AspectElement) && (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(type, name, parameters);
        return pointcut.getHandleFromMemento(memento, workingCopyOwner);
    }

    return type.getHandleFromMemento(token, memento, workingCopyOwner);
}

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

License:Open Source License

@Override
public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner owner) {
    switch (token.charAt(0)) {
    case JEM_PACKAGEFRAGMENT:
        String[] pkgName;//  w w w. j av  a2 s  . c o m
        if (memento.hasMoreTokens()) {
            token = memento.nextToken();
            char firstChar = token.charAt(0);
            if (firstChar == JEM_CLASSFILE || firstChar == JEM_COMPILATIONUNIT || firstChar == JEM_COUNT) {
                pkgName = CharOperation.NO_STRINGS;
            } else {
                pkgName = Util.splitOn('.', token, 0, token.length());
                token = null;
            }
        } else {
            pkgName = CharOperation.NO_STRINGS;
            token = null;
        }
        JavaElement pkg = getPackageFragment(pkgName);
        if (token == null) {
            return pkg.getHandleFromMemento(memento, owner);
        } else {
            return pkg.getHandleFromMemento(token, memento, owner);
        }
    }
    return null;
}

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

License:Open Source License

public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner owner) {
    switch (token.charAt(0)) {
    case JEM_CLASSFILE:
        if (!memento.hasMoreTokens())
            return this;
        String classFileName = memento.nextToken();
        JavaElement classFile = (JavaElement) getClassFile(classFileName);
        return classFile.getHandleFromMemento(memento, owner);
    case JEM_COMPILATIONUNIT:
        if (!memento.hasMoreTokens())
            return this;
        String cuName = memento.nextToken();
        // GROOVY start
        /* old {/* ww  w.  java  2s.  c o m*/
        JavaElement cu = new CompilationUnit(this, cuName, owner);
        } new */
        JavaElement cu = LanguageSupportFactory.newCompilationUnit(this, cuName, owner);
        // GROOVY end

        return cu.getHandleFromMemento(memento, owner);
    }
    return null;
}