List of usage examples for org.eclipse.jdt.internal.core JavaElement getHandleFromMemento
public abstract IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner owner);
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; }