List of usage examples for org.eclipse.jdt.core IJavaElement COMPILATION_UNIT
int COMPILATION_UNIT
To view the source code for org.eclipse.jdt.core IJavaElement COMPILATION_UNIT.
Click Source Link
From source file:org.eclipse.jdt.core.dom.CompilationUnitResolver.java
License:Open Source License
public static IBinding[] resolve(final IJavaElement[] elements, int apiLevel, Map compilerOptions, IJavaProject javaProject, WorkingCopyOwner owner, int flags, IProgressMonitor monitor) { final int length = elements.length; final HashMap sourceElementPositions = new HashMap(); // a map from ICompilationUnit to int[] (positions in elements) int cuNumber = 0; final HashtableOfObjectToInt binaryElementPositions = new HashtableOfObjectToInt(); // a map from String (binding key) to int (position in elements) for (int i = 0; i < length; i++) { IJavaElement element = elements[i]; if (!(element instanceof SourceRefElement)) throw new IllegalStateException(element + " is not part of a compilation unit or class file"); //$NON-NLS-1$ Object cu = element.getAncestor(IJavaElement.COMPILATION_UNIT); if (cu != null) { // source member IntArrayList intList = (IntArrayList) sourceElementPositions.get(cu); if (intList == null) { sourceElementPositions.put(cu, intList = new IntArrayList()); cuNumber++;/*from w w w . j a v a2 s. c om*/ } intList.add(i); } else { // binary member try { String key = ((BinaryMember) element).getKey(true/*open to get resolved info*/); binaryElementPositions.put(key, i); } catch (JavaModelException e) { throw new IllegalArgumentException(element + " does not exist"); //$NON-NLS-1$ } } } ICompilationUnit[] cus = new ICompilationUnit[cuNumber]; sourceElementPositions.keySet().toArray(cus); int bindingKeyNumber = binaryElementPositions.size(); String[] bindingKeys = new String[bindingKeyNumber]; binaryElementPositions.keysToArray(bindingKeys); class Requestor extends ASTRequestor { IBinding[] bindings = new IBinding[length]; public void acceptAST(ICompilationUnit source, CompilationUnit ast) { // TODO (jerome) optimize to visit the AST only once IntArrayList intList = (IntArrayList) sourceElementPositions.get(source); for (int i = 0; i < intList.length; i++) { final int index = intList.list[i]; SourceRefElement element = (SourceRefElement) elements[index]; DOMFinder finder = new DOMFinder(ast, element, true/*resolve binding*/); try { finder.search(); } catch (JavaModelException e) { throw new IllegalArgumentException(element + " does not exist"); //$NON-NLS-1$ } this.bindings[index] = finder.foundBinding; } } public void acceptBinding(String bindingKey, IBinding binding) { int index = binaryElementPositions.get(bindingKey); this.bindings[index] = binding; } } Requestor requestor = new Requestor(); resolve(cus, bindingKeys, requestor, apiLevel, compilerOptions, javaProject, owner, flags, monitor); return requestor.bindings; }
From source file:org.eclipse.jdt.internal.core.CopyResourceElementsOperation.java
License:Open Source License
/** * Returns the children of <code>source</code> which are affected by this operation. * If <code>source</code> is a <code>K_SOURCE</code>, these are the <code>.java</code> * files, if it is a <code>K_BINARY</code>, they are the <code>.class</code> files. *///w w w . j a v a 2 s .com private IResource[] collectResourcesOfInterest(IPackageFragment source) throws JavaModelException { IJavaElement[] children = source.getChildren(); int childOfInterest = IJavaElement.COMPILATION_UNIT; if (source.getKind() == IPackageFragmentRoot.K_BINARY) { childOfInterest = IJavaElement.CLASS_FILE; } ArrayList correctKindChildren = new ArrayList(children.length); for (int i = 0; i < children.length; i++) { IJavaElement child = children[i]; if (child.getElementType() == childOfInterest) { correctKindChildren.add(((JavaElement) child).resource()); } } // Gather non-java resources Object[] nonJavaResources = source.getNonJavaResources(); int actualNonJavaResourceCount = 0; for (int i = 0, max = nonJavaResources.length; i < max; i++) { if (nonJavaResources[i] instanceof IResource) actualNonJavaResourceCount++; } IResource[] actualNonJavaResources = new IResource[actualNonJavaResourceCount]; for (int i = 0, max = nonJavaResources.length, index = 0; i < max; i++) { if (nonJavaResources[i] instanceof IResource) actualNonJavaResources[index++] = (IResource) nonJavaResources[i]; } if (actualNonJavaResourceCount != 0) { int correctKindChildrenSize = correctKindChildren.size(); IResource[] result = new IResource[correctKindChildrenSize + actualNonJavaResourceCount]; correctKindChildren.toArray(result); System.arraycopy(actualNonJavaResources, 0, result, correctKindChildrenSize, actualNonJavaResourceCount); return result; } else { IResource[] result = new IResource[correctKindChildren.size()]; correctKindChildren.toArray(result); return result; } }
From source file:org.eclipse.jdt.internal.core.CopyResourceElementsOperation.java
License:Open Source License
/** * @see MultiOperation/*w ww . ja v a2 s . c om*/ * This method delegates to <code>processCompilationUnitResource</code> or * <code>processPackageFragmentResource</code>, depending on the type of * <code>element</code>. */ protected void processElement(IJavaElement element) throws JavaModelException { IJavaElement dest = getDestinationParent(element); switch (element.getElementType()) { case IJavaElement.COMPILATION_UNIT: processCompilationUnitResource((ICompilationUnit) element, (PackageFragment) dest); this.createdElements.add(((IPackageFragment) dest).getCompilationUnit(element.getElementName())); break; case IJavaElement.PACKAGE_FRAGMENT: processPackageFragmentResource((PackageFragment) element, (PackageFragmentRoot) dest, getNewNameFor(element)); break; default: throw new JavaModelException( new JavaModelStatus(IJavaModelStatusConstants.INVALID_ELEMENT_TYPES, element)); } }
From source file:org.eclipse.jdt.internal.core.CopyResourceElementsOperation.java
License:Open Source License
/** * @see MultiOperation//w w w.jav a2 s . c o m */ protected void verify(IJavaElement element) throws JavaModelException { if (element == null || !element.exists()) error(IJavaModelStatusConstants.ELEMENT_DOES_NOT_EXIST, element); if (element.isReadOnly() && (isRename() || isMove())) error(IJavaModelStatusConstants.READ_ONLY, element); IResource resource = ((JavaElement) element).resource(); if (resource instanceof IFolder) { if (resource.isLinked()) { error(IJavaModelStatusConstants.INVALID_RESOURCE, element); } } int elementType = element.getElementType(); if (elementType == IJavaElement.COMPILATION_UNIT) { org.eclipse.jdt.internal.core.CompilationUnit compilationUnit = (org.eclipse.jdt.internal.core.CompilationUnit) element; if (isMove() && compilationUnit.isWorkingCopy() && !compilationUnit.isPrimary()) error(IJavaModelStatusConstants.INVALID_ELEMENT_TYPES, element); } else if (elementType != IJavaElement.PACKAGE_FRAGMENT) { error(IJavaModelStatusConstants.INVALID_ELEMENT_TYPES, element); } JavaElement dest = (JavaElement) getDestinationParent(element); verifyDestination(element, dest); if (this.renamings != null) { verifyRenaming(element); } }
From source file:org.eclipse.jdt.internal.core.JavaModelManager.java
License:Open Source License
public synchronized Object removeInfoAndChildren(JavaElement element) throws JavaModelException { Object info = this.cache.peekAtInfo(element); if (info != null) { boolean wasVerbose = false; try {/*from w ww . j av a2s. c o m*/ if (JavaModelCache.VERBOSE) { String elementType; switch (element.getElementType()) { case IJavaElement.JAVA_PROJECT: elementType = "project"; //$NON-NLS-1$ break; case IJavaElement.PACKAGE_FRAGMENT_ROOT: elementType = "root"; //$NON-NLS-1$ break; case IJavaElement.PACKAGE_FRAGMENT: elementType = "package"; //$NON-NLS-1$ break; case IJavaElement.CLASS_FILE: elementType = "class file"; //$NON-NLS-1$ break; case IJavaElement.COMPILATION_UNIT: elementType = "compilation unit"; //$NON-NLS-1$ break; default: elementType = "element"; //$NON-NLS-1$ } System.out.println(Thread.currentThread() + " CLOSING " + elementType + " " //$NON-NLS-1$//$NON-NLS-2$ + element.toStringWithAncestors()); wasVerbose = true; JavaModelCache.VERBOSE = false; } element.closing(info); if (element instanceof IParent) { closeChildren(info); } this.cache.removeInfo(element); if (wasVerbose) { System.out.println(this.cache.toStringFillingRation("-> ")); //$NON-NLS-1$ } } finally { JavaModelCache.VERBOSE = wasVerbose; } return info; } return null; }
From source file:org.eclipse.jdt.internal.core.JavaProject.java
License:Open Source License
public boolean isOnClasspath(IJavaElement element) { IClasspathEntry[] rawClasspath;/*from w ww . j ava 2 s . co m*/ try { rawClasspath = getRawClasspath(); } catch (JavaModelException e) { return false; // not a Java project } int elementType = element.getElementType(); boolean isPackageFragmentRoot = false; boolean isFolderPath = false; boolean isSource = false; switch (elementType) { case IJavaElement.JAVA_MODEL: return false; case IJavaElement.JAVA_PROJECT: break; case IJavaElement.PACKAGE_FRAGMENT_ROOT: isPackageFragmentRoot = true; break; case IJavaElement.PACKAGE_FRAGMENT: isFolderPath = !((IPackageFragmentRoot) element.getParent()).isArchive(); break; case IJavaElement.COMPILATION_UNIT: isSource = true; break; default: isSource = element.getAncestor(IJavaElement.COMPILATION_UNIT) != null; break; } IPath elementPath = element.getPath(); // first look at unresolved entries int length = rawClasspath.length; for (int i = 0; i < length; i++) { IClasspathEntry entry = rawClasspath[i]; switch (entry.getEntryKind()) { case IClasspathEntry.CPE_LIBRARY: case IClasspathEntry.CPE_PROJECT: case IClasspathEntry.CPE_SOURCE: if (isOnClasspathEntry(elementPath, isFolderPath, isPackageFragmentRoot, entry)) return true; break; } } // no need to go further for compilation units and elements inside a compilation unit // it can only be in a source folder, thus on the raw classpath if (isSource) return false; // https://bugs.eclipse.org/bugs/show_bug.cgi?id=304081 // All the resolved classpath entries need to be considered, including the referenced classpath entries IClasspathEntry[] resolvedClasspath = null; try { resolvedClasspath = getResolvedClasspath(); } catch (JavaModelException e) { return false; // Perhaps, not a Java project } for (int index = 0; index < resolvedClasspath.length; index++) { if (isOnClasspathEntry(elementPath, isFolderPath, isPackageFragmentRoot, resolvedClasspath[index])) return true; } return false; }
From source file:org.eclipse.jem.workbench.utility.JavaModelListener.java
License:Open Source License
/** * Dispatch the java element delta. This method should normally not be overridden. One * usage would be to add delta types that are to be processed and dispatched by the * subclasses. For example also dispatch on {@link IJavaElement#IMPORT_CONTAINER}. Subclasses * should call <code>super.processDelta(IJavaElementDelta)</code> if it is not one they * are interested in./* w w w .j av a 2 s . co m*/ * * @param delta * * @since 1.2.0 */ public void processDelta(IJavaElementDelta delta) { IJavaElement element = delta.getElement(); // if the class path has changed we refresh the resolved container cache int flags = delta.getFlags(); if (((flags & IJavaElementDelta.F_RESOLVED_CLASSPATH_CHANGED) != 0) && !resolvedContainers.isEmpty()) { resolvedContainers.clear(); } switch (element.getElementType()) { case IJavaElement.JAVA_MODEL: processJavaElementChanged((IJavaModel) element, delta); break; case IJavaElement.JAVA_PROJECT: processJavaElementChanged((IJavaProject) element, delta); break; case IJavaElement.PACKAGE_FRAGMENT_ROOT: processJavaElementChanged((IPackageFragmentRoot) element, delta); break; case IJavaElement.PACKAGE_FRAGMENT: processJavaElementChanged((IPackageFragment) element, delta); break; case IJavaElement.COMPILATION_UNIT: processJavaElementChanged((ICompilationUnit) element, delta); processContentChanged(delta); break; case IJavaElement.CLASS_FILE: processJavaElementChanged((IClassFile) element, delta); break; case IJavaElement.TYPE: processJavaElementChanged((IType) element, delta); break; // Note: if we are to update the Method/Field adapters, we should process the // IJavaElement.METHOD and IJavaElement.FIELD } }
From source file:org.eclipse.jpt.common.core.tests.internal.resource.java.JavaResourceModelTestCase.java
License:Open Source License
/** * NB: this is copied from GenericJpaProject, so it might need to be * kept in synch with that code if it changes... yech... *///w w w .j a v a2 s. c om protected void syncWithJavaDelta(IJavaElementDelta delta) { switch (delta.getElement().getElementType()) { case IJavaElement.JAVA_MODEL: case IJavaElement.JAVA_PROJECT: case IJavaElement.PACKAGE_FRAGMENT_ROOT: case IJavaElement.PACKAGE_FRAGMENT: this.syncWithJavaDeltaChildren(delta); break; case IJavaElement.COMPILATION_UNIT: this.javaCompilationUnitChanged(delta); break; default: break; // ignore the elements inside a compilation unit } }
From source file:org.eclipse.jpt.jaxb.core.internal.AbstractJaxbProject.java
License:Open Source License
/** * We recurse back here from {@link #processJavaDeltaChildren(IJavaElementDelta)}. *//*from ww w . j av a2 s .co m*/ protected void processJavaDelta(IJavaElementDelta delta) { switch (delta.getElement().getElementType()) { case IJavaElement.JAVA_MODEL: this.processJavaModelDelta(delta); break; case IJavaElement.JAVA_PROJECT: this.processJavaProjectDelta(delta); break; case IJavaElement.PACKAGE_FRAGMENT_ROOT: this.processJavaPackageFragmentRootDelta(delta); break; case IJavaElement.PACKAGE_FRAGMENT: this.processJavaPackageFragmentDelta(delta); break; case IJavaElement.COMPILATION_UNIT: this.processJavaCompilationUnitDelta(delta); break; default: break; // ignore the elements inside a compilation unit } }
From source file:org.eclipse.jpt.jpa.core.internal.InternalJpaProjectManager.java
License:Open Source License
/** * We recurse back here from {@link #handleJavaDeltaChildren(IJavaElementDelta)}. *//*from w w w. ja va2s . co m*/ protected boolean handleJavaDelta(IJavaElementDelta delta) { switch (delta.getElement().getElementType()) { case IJavaElement.JAVA_MODEL: return this.handleJavaModelDelta(delta); case IJavaElement.JAVA_PROJECT: return this.handleJavaProjectDelta(delta); case IJavaElement.PACKAGE_FRAGMENT_ROOT: return this.handleJavaPackageFragmentRootDelta(delta); case IJavaElement.PACKAGE_FRAGMENT: return this.processJavaPackageFragmentDelta(delta); case IJavaElement.COMPILATION_UNIT: return this.handleJavaCompilationUnitDelta(delta); default: break; // ignore the elements inside a compilation unit } return false; }