List of usage examples for org.eclipse.jdt.internal.core JavaElement JEM_COUNT
char JEM_COUNT
To view the source code for org.eclipse.jdt.internal.core JavaElement JEM_COUNT.
Click Source Link
From source file:org.eclipse.ajdt.core.AJMementoTokenizer.java
License:Open Source License
public String nextToken() { int start = this.index; StringBuffer buffer = null;//from w w w. 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.AspectJCore.java
License:Open Source License
private static IJavaElement getCodeElement(String codeElementHandle, JavaElement parent) { int li = indexOfIgnoringEscapes(codeElementHandle, JavaElement.JEM_COUNT); if (li != -1) { int occurrenceIndex = codeElementHandle.lastIndexOf(JavaElement.JEM_COUNT); if (Character.isDigit(codeElementHandle.charAt(occurrenceIndex + 1))) { int occurrence = Integer.parseInt(codeElementHandle.substring(occurrenceIndex + 1)); String cname = codeElementHandle.substring(0, li); return new AJCodeElement(parent, cname, occurrence); }/*from w w w . j a va 2 s .c o m*/ codeElementHandle = codeElementHandle.substring(0, li); } // no occurrance count return new AJCodeElement(parent, codeElementHandle); }
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 ww . j a va 2s .c o m*/ 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 w w. ja v a 2 s. c om 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.ajdt.core.model.AJProjectModelFacade.java
License:Open Source License
/** * @return a program element that corresponds to the given java element. *//*from ww w . j a va 2 s . com*/ public IProgramElement javaElementToProgramElement(IJavaElement je) { if (!isInitialized) { return IHierarchy.NO_STRUCTURE; } String ajHandle = je.getHandleIdentifier(); boolean isBinary = false; if (isBinaryHandle(ajHandle) || je.isReadOnly()) { ajHandle = convertToAspectJBinaryHandle(ajHandle, false); isBinary = true; } else if (isFromExternalProject(je)) { ajHandle = convertToAspectJBinaryHandle(ajHandle, true); isBinary = true; } // check to see if we need to replace { (compilation unit) with * (aj compilation unit) // if using cuprovider, then aj compilation units have {, but needs to change to * ICompilationUnit cu = null; if (je instanceof IMember) { cu = ((IMember) je).getCompilationUnit(); } else if (je instanceof IPackageDeclaration) { IJavaElement parent = ((IPackageDeclaration) je).getParent(); if (parent instanceof ICompilationUnit) { cu = (ICompilationUnit) parent; } } else if (je instanceof AJCodeElement) { cu = ((AJCodeElement) je).getCompilationUnit(); // get the occurence count int count = ((AJCodeElement) je).occurrenceCount; // need the first bang after the last close paren int lastParen = ajHandle.lastIndexOf(')'); int firstBang = ajHandle.indexOf(JavaElement.JEM_COUNT, lastParen); if (firstBang > -1) { ajHandle = ajHandle.substring(0, firstBang); if (count > 1) { // there is more than one element // with this name ajHandle += "" + JavaElement.JEM_COUNT + count; } } } else if (je instanceof ILocalVariable) { IOpenable openable = ((ILocalVariable) je).getOpenable(); cu = openable instanceof ICompilationUnit ? (ICompilationUnit) openable : null; } else if (je instanceof ImportDeclaration) { cu = ((ImportDeclaration) je).getCompilationUnit(); } else if (je instanceof ImportContainer) { cu = ((ImportContainer) je).getCompilationUnit(); } else if (je instanceof ICompilationUnit) { cu = (ICompilationUnit) je; } if (cu != null) { IResource resource = cu.getResource(); if (resource != null && resource.exists() && CoreUtils.ASPECTJ_SOURCE_ONLY_FILTER.accept(resource.getName())) { ajHandle = ajHandle.replaceFirst("" + JavaElement.JEM_ESCAPE + JavaElement.JEM_COMPILATIONUNIT, Character.toString(AspectElement.JEM_ASPECT_CU)); } } IProgramElement ipe = structureModel.findElementForHandleOrCreate(ajHandle, false); if (ipe == null) { if (isBinary) { // might be an aspect in a class file. JDT doesn't know it is an aspect // try looking for handle again, but use an Aspect token // problem will be if this is an aspect contained in a class or vice versa ajHandle = ajHandle.replace(JavaElement.JEM_TYPE, AspectElement.JEM_ASPECT_TYPE); ipe = structureModel.findElementForHandleOrCreate(ajHandle, false); } if (ipe == null) { // occurs when the handles are not working properly return IHierarchy.NO_STRUCTURE; } } return ipe; }
From source file:org.eclipse.ajdt.core.model.AJProjectModelFacade.java
License:Open Source License
public IJavaElement programElementToJavaElement(String ajHandle) { // check to see if this is a spurious handle. // For ITDs, the aspectj compiler generates program elements before the // rest of the program is in place, and they therfore have no parent. // They should not exist and we can ignore them. if (ajHandle.length() == 0 || ajHandle.charAt(0) != JavaElement.JEM_JAVAPROJECT) { return ERROR_JAVA_ELEMENT; }/*from w w w. j a va2s . c o m*/ String jHandle = ajHandle; // are we dealing with something inside of a classfile? // if so, then we have to handle it specially // because we want to convert this into a source reference if possible if (isBinaryAspectJHandle(jHandle)) { // Bug 274558 ADE HACK...fix aspect handles that are supposed to be binary, but are not. jHandle = jHandle.replace(AspectElement.JEM_ASPECT_CU, JavaElement.JEM_CLASSFILE); jHandle = jHandle.replace(".aj" + JEM_ASPECT_TYPE, ".class" + JEM_ASPECT_TYPE); return getElementFromClassFile(jHandle); } // if using cuprovider, then we don not use the '*' for Aspect compilation units, // it uses the '{' of Java Compilation Units if (AspectJPlugin.USING_CU_PROVIDER) { jHandle = jHandle.replaceFirst("" + JavaElement.JEM_ESCAPE + AspectElement.JEM_ASPECT_CU, Character.toString(JavaElement.JEM_COMPILATIONUNIT)); } int codeEltIndex = jHandle.indexOf(AspectElement.JEM_CODEELEMENT); if (codeEltIndex != -1) { // because code elements are sub classes of local variables // must make the code element's handle look like a local // variable's handle int countIndex = jHandle.lastIndexOf(JavaElement.JEM_COUNT); int count = 0; if (countIndex > codeEltIndex) { try { count = Integer.parseInt(jHandle.substring(countIndex + 1)); jHandle = jHandle.substring(0, countIndex); } catch (NumberFormatException e) { // if the count is not from the code element, but from one of its parents count = 0; } } jHandle += "!0!0!0!0!I!0!false"; if (count > 1) { jHandle += "" + JavaElement.JEM_COUNT + count; } } // add escapes to various sundries jHandle = jHandle.replaceFirst("declare @", "declare \\\\@"); // declare declarations jHandle = jHandle.replaceFirst("\\.\\*", ".\\\\*"); // on demand imports jHandle = jHandle.replaceAll("\\*>", "\\\\*>"); // wild card type parameters IJavaElement je = AspectJCore.create(jHandle); if (je == null) { // occurs when the handles are not working properly return ERROR_JAVA_ELEMENT; } return je; }