List of usage examples for org.eclipse.jdt.core IJavaElement PACKAGE_FRAGMENT_ROOT
int PACKAGE_FRAGMENT_ROOT
To view the source code for org.eclipse.jdt.core IJavaElement PACKAGE_FRAGMENT_ROOT.
Click Source Link
From source file:org.jboss.tools.jst.jsp.jspeditor.info.JavaStringELInfoHover.java
License:Open Source License
/** * Adds full information to the hover//from w ww . ja va 2s .c om * Returns base URL if exists * * @param buffer * @param element * @return */ private static String addFullInfo(StringBuffer buffer, IJavaElement element, boolean useFullHTML) { String base = null; if (element instanceof IMember) { IMember member = (IMember) element; HTMLPrinter.addSmallHeader(buffer, getInfoText(member, true, useFullHTML)); Reader reader; try { String content = JavadocContentAccess2.getHTMLContent(member, true); reader = content == null ? null : new StringReader(content); // Provide hint why there's no Javadoc if (reader == null && member.isBinary()) { boolean hasAttachedJavadoc = JavaDocLocations.getJavadocBaseLocation(member) != null; IPackageFragmentRoot root = (IPackageFragmentRoot) member .getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); boolean hasAttachedSource = root != null && root.getSourceAttachmentPath() != null; IOpenable openable = member.getOpenable(); boolean hasSource = openable.getBuffer() != null; if (!hasAttachedSource && !hasAttachedJavadoc) reader = new StringReader(ELInfoHoverMessages.ELInfoHover_noAttachments); else if (!hasAttachedJavadoc && !hasSource) reader = new StringReader(ELInfoHoverMessages.ELInfoHover_noAttachedJavadoc); else if (!hasAttachedSource) reader = new StringReader(ELInfoHoverMessages.ELInfoHover_noAttachedJavaSource); else if (!hasSource) reader = new StringReader(ELInfoHoverMessages.ELInfoHover_noInformation); } else { base = JavaDocLocations.getBaseURL(member); } } catch (JavaModelException ex) { reader = new StringReader(ELInfoHoverMessages.ELInfoHover_error_gettingJavadoc); JavaPlugin.log(ex); } if (reader != null) { HTMLPrinter.addParagraph(buffer, reader); } } else if (element.getElementType() == IJavaElement.LOCAL_VARIABLE || element.getElementType() == IJavaElement.TYPE_PARAMETER) { HTMLPrinter.addSmallHeader(buffer, getInfoText(element, true, useFullHTML)); } return base; }
From source file:org.jboss.tools.ws.creation.core.utils.JBossWSCreationUtils.java
License:Open Source License
public static ICompilationUnit findUnitByFileName(IJavaElement javaElem, String filePath) throws Exception { ICompilationUnit unit = null;/*from ww w. j a v a2s . c om*/ if (!javaElem.getOpenable().isOpen()) { javaElem.getOpenable().open(null); } IJavaElement[] elems = null; if (javaElem instanceof IParent) { IParent parent = (IParent) javaElem; elems = parent.getChildren(); } if (elems == null) { return null; } for (IJavaElement elem : elems) { if (elem.getElementType() == IJavaElement.PACKAGE_FRAGMENT_ROOT) { IPackageFragmentRoot root = (IPackageFragmentRoot) elem; if (root.getKind() == IPackageFragmentRoot.K_SOURCE) { unit = findUnitByFileName(elem, filePath); if (unit != null) { return unit; } } } else if ((elem.getElementType() == IJavaElement.PACKAGE_FRAGMENT) || (elem.getElementType() == IJavaElement.JAVA_PROJECT)) { unit = findUnitByFileName(elem, filePath); if (unit != null) { return unit; } } else if (elem.getElementType() == IJavaElement.COMPILATION_UNIT) { ICompilationUnit compUnit = (ICompilationUnit) elem; if (compUnit.getPath().toString().equals(filePath)) { compUnit.open(null); return compUnit; } } } return null; }
From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JavaElementDeltaFilter.java
License:Open Source License
/** * /*from w w w. j a v a 2s . co m*/ * @param element * @return true if the given java element is a Jar archive. */ private boolean isJarArchive(IJavaElement element) { return (element.getElementType() == IJavaElement.PACKAGE_FRAGMENT_ROOT && ((IPackageFragmentRoot) element).isArchive()); }
From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JavaElementDeltaScanner.java
License:Open Source License
/** * Recursively analyse the given Java Element Delta. * /* www . j av a2s. c o m*/ * @param delta * @param eventType * @throws CoreException * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=100267 */ private List<JavaElementChangedEvent> scanDelta(final IJavaElementDelta delta, final int eventType) throws CoreException { final List<JavaElementChangedEvent> events = new ArrayList<JavaElementChangedEvent>(); final IJavaElement element = delta.getElement(); // skip as the project is closed if (element == null) { Logger.debug("** skipping this build because the delta element is null **"); return Collections.emptyList(); } else if (element.getElementType() == IJavaElement.JAVA_PROJECT && !element.getJavaProject().getProject().isOpen() && delta.getFlags() != F_OPENED) { Logger.debug("** skipping this build because the java project is closed. **"); return Collections.emptyList(); } else if ((element.getElementType() == IJavaElement.PACKAGE_FRAGMENT_ROOT)) { final IPackageFragmentRoot packageFragmentRoot = (IPackageFragmentRoot) element; if (!packageFragmentRoot.isExternal() && (packageFragmentRoot.getResource() == null || !packageFragmentRoot.getResource().exists())) { return Collections.emptyList(); } } else if (element.getResource() == null || !element.getResource().exists()) { return Collections.emptyList(); } final int elementKind = element.getElementType(); final int deltaKind = retrieveDeltaKind(delta); final Flags flags = new Flags(delta.getFlags()); if (elementKind == JAVA_PROJECT) { final JavaElementChangedEvent event = new JavaElementChangedEvent(element, delta.getKind(), eventType, null, new Flags(delta.getFlags())); if (javaElementChangedEventFilter.apply(event)) { events.add(event); // skip anything below return events; } } final CompilationUnit compilationUnitAST = getCompilationUnitAST(delta); if (elementKind == COMPILATION_UNIT) { final ICompilationUnit compilationUnit = (ICompilationUnit) element; // compilationUnitAST is null when the given compilation unit'w // working copy is being commited (ie, Java Editor is being closed // for the given compilation unit, etc.) if (compilationUnit.exists() // see https://issues.jboss.org/browse/JBIDE-12760: compilationUnit may not exist && compilationUnit.isWorkingCopy() && compilationUnitAST != null) { // assuming possible changes in the method signatures (return type, // param types and param annotations). Other changes in methods // (renaming, adding/removing params) result in add+remove // events on the given method itself. if (requiresDiffsComputation(flags)) { for (IType type : compilationUnit.getAllTypes()) { for (IMethod javaMethod : type.getMethods()) { final JavaElementChangedEvent event = new JavaElementChangedEvent(javaMethod, CHANGED, eventType, compilationUnitAST, new Flags(F_SIGNATURE)); if (javaElementChangedEventFilter.apply(event)) { events.add(event); } } } } } } // element is part of the compilation unit else if (compilationUnitAST != null) { final JavaElementChangedEvent event = new JavaElementChangedEvent(element, deltaKind, eventType, compilationUnitAST, flags); if (javaElementChangedEventFilter.apply(event)) { events.add(event); } } // continue with children elements, both on annotations and other java // elements. for (IJavaElementDelta affectedChild : delta.getAffectedChildren()) { events.addAll(scanDelta(affectedChild, eventType)); } for (IJavaElementDelta annotation : delta.getAnnotationDeltas()) { events.addAll(scanDelta(annotation, eventType)); } return events; }
From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.ResourceChangedProcessor.java
License:Open Source License
public List<JaxrsElementDelta> processEvent(ResourceDelta event, IProgressMonitor progressMonitor) throws CoreException { Logger.debug("Processing {}", event); final List<JaxrsElementDelta> results = new ArrayList<JaxrsElementDelta>(); final IResource resource = event.getResource(); if (resource == null) { return results; }/*from w w w .j a v a 2 s . c om*/ final IJavaElement javaElement = JavaCore.create(resource); final JaxrsMetamodel metamodel = JaxrsMetamodelLocator.get(resource.getProject()); final int deltaKind = event.getDeltaKind(); if (javaElement != null && // ignore changes on binary files (added/removed/changed jars to improve builder performances) !(javaElement.getElementType() == IJavaElement.PACKAGE_FRAGMENT_ROOT && ((IPackageFragmentRoot) javaElement).isArchive())) { switch (deltaKind) { case ADDED: case CHANGED: results.addAll( processApplicationChangesOnScopeAdditionOrChange(javaElement, metamodel, progressMonitor)); results.addAll( processHttpMethodChangesOnScopeAdditionOrChange(javaElement, metamodel, progressMonitor)); results.addAll(processResourceChangesOnScopeAdditionOrChange(javaElement, metamodel, deltaKind, progressMonitor)); break; case REMOVED: results.addAll(processApplicationChangesOnScopeRemoval(javaElement, metamodel, progressMonitor)); results.addAll(processHttpMethodChangesOnScopeRemoval(javaElement, metamodel, progressMonitor)); results.addAll(processResourceChangesOnScopeRemoval(javaElement, metamodel, progressMonitor)); break; } } else if (WtpUtils.isWebDeploymentDescriptor(resource)) { switch (deltaKind) { case ADDED: case CHANGED: results.addAll( processApplicationChangesOnWebxmlAdditionOrChange(resource, metamodel, progressMonitor)); break; case REMOVED: results.addAll(processApplicationChangesOnWebxmlRemoval(resource, metamodel, progressMonitor)); break; } } for (JaxrsElementDelta delta : results) { Logger.debug("Resulting event: {}", delta); } return results; }
From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsElementFactory.java
License:Open Source License
private static Set<IJaxrsElement> internalCreateElements(final IJavaElement scope, final CompilationUnit ast, final JaxrsMetamodel metamodel, final IProgressMonitor progressMonitor) throws CoreException { if (scope.getElementType() == IJavaElement.PACKAGE_FRAGMENT_ROOT && ((IPackageFragmentRoot) scope).isArchive()) { Logger.debug("Ignoring archive {}", scope.getElementName()); return Collections.emptySet(); }/* w w w . j a v a 2s. c om*/ final Set<IJaxrsElement> elements = new HashSet<IJaxrsElement>(); // let's see if the given scope contains JAX-RS Application final Set<IType> matchingApplicationTypes = JavaElementsSearcher.findApplicationTypes(scope, progressMonitor); for (IType type : matchingApplicationTypes) { final JaxrsJavaApplication application = JaxrsJavaApplication.from(type).withMetamodel(metamodel) .build(); if (application != null) { elements.add(application); } } // let's see if the given scope contains JAX-RS HTTP Methods final Set<IType> matchingHttpMethodTypes = JavaElementsSearcher.findHttpMethodTypes(scope, progressMonitor); for (IType type : matchingHttpMethodTypes) { final JaxrsHttpMethod httpMethod = JaxrsHttpMethod.from(type).withMetamodel(metamodel).build(); if (httpMethod != null) { elements.add(httpMethod); } } // let's see if the given scope contains JAX-RS Name Bindings final Set<IType> matchingNameBindingsTypes = JavaElementsSearcher.findNameBindingTypes(scope, progressMonitor); for (IType type : matchingNameBindingsTypes) { final JaxrsNameBinding nameBinding = JaxrsNameBinding.from(type).withMetamodel(metamodel).build(); if (nameBinding != null) { elements.add(nameBinding); } } // let's see if the given scope contains JAX-RS Resources final Set<IType> matchingResourceTypes = JavaElementsSearcher.findResourceTypes(scope, progressMonitor); for (IType type : matchingResourceTypes) { final JaxrsResource resource = JaxrsResource.from(type, metamodel.findAllHttpMethodNames()) .withMetamodel(metamodel).build(); if (resource != null) { elements.add(resource); elements.addAll(resource.getAllMethods()); elements.addAll(resource.getAllFields()); } } // now,let's see if the given type can be a ParamConverterProvider final Set<IType> matchingParamConverterProviderTypes = JavaElementsSearcher .findParamConverterProviderTypes(scope, progressMonitor); for (IType type : matchingParamConverterProviderTypes) { final JaxrsParamConverterProvider paramConverterProvider = JaxrsParamConverterProvider.from(type) .withMetamodel(metamodel).build(); if (paramConverterProvider != null) { elements.add(paramConverterProvider); } } // now,let's see if the given type can be a Parameter Aggregator final Set<IType> matchingParameterAggregatorTypes = JavaElementsSearcher.findParameterAggregatorTypes(scope, progressMonitor); for (IType type : matchingParameterAggregatorTypes) { final JaxrsParameterAggregator parameterAggregator = JaxrsParameterAggregator.from(type) .buildInMetamodel(metamodel); if (parameterAggregator != null) { elements.add(parameterAggregator); elements.addAll(parameterAggregator.getAllProperties()); elements.addAll(parameterAggregator.getAllFields()); } } // let's see if the given scope contains JAX-RS Providers final Set<IType> matchingProviderTypes = JavaElementsSearcher.findProviderTypes(scope, progressMonitor); for (IType type : matchingProviderTypes) { final JaxrsProvider provider = JaxrsProvider.from(type).withMetamodel(metamodel).build(); if (provider != null) { elements.add(provider); } } return elements; }
From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsMetamodel.java
License:Open Source License
/** * Process a single Java Element change//from w ww .j a v a 2s. c om * * @param delta * @param progressMonitor * @throws CoreException */ public void processJavaElementChange(final JavaElementChangedEvent delta, final IProgressMonitor progressMonitor) throws CoreException { try { Logger.debug("Processing {}", delta); readWriteLock.writeLock().lock(); final IJavaElement element = delta.getElement(); final CompilationUnit ast = delta.getCompilationUnitAST(); final int deltaKind = delta.getKind(); switch (element.getElementType()) { case IJavaElement.JAVA_PROJECT: case IJavaElement.PACKAGE_FRAGMENT_ROOT: processProject(progressMonitor); break; case IJavaElement.ANNOTATION: processJavaAnnotationChange((IAnnotation) element, deltaKind, ast, progressMonitor); break; case IJavaElement.COMPILATION_UNIT: case IJavaElement.TYPE: case IJavaElement.METHOD: case IJavaElement.FIELD: processJavaElementChange(element, deltaKind, ast, progressMonitor); break; default: // ignore break; } } finally { this.initializing = false; progressMonitor.done(); readWriteLock.writeLock().unlock(); setBuildStatus(Status.OK_STATUS); Logger.debug("Done processing Java changes: " + getStatus()); } }
From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsMetamodel.java
License:Open Source License
/** * Search for the JAX-RS java-based elements matching the given * {@link IJavaElement} in the metamodel. * /*from ww w . ja va 2 s .c o m*/ * @param element * @param ast * @return the matching JAX-RS Elements or an empty set if no JAX-RS * element matched in the metamodel. * @throws JavaModelException */ private List<IJaxrsElement> searchJaxrsElements(final IJavaElement element) throws JavaModelException { if (element == null) { return Collections.emptyList(); } try { readWriteLock.readLock().lock(); final List<IJaxrsElement> result = new ArrayList<IJaxrsElement>(); final Term javaElementTerm = new Term(FIELD_JAVA_ELEMENT, Boolean.TRUE.toString()); switch (element.getElementType()) { case IJavaElement.JAVA_PROJECT: final Term javaProjectIdentifier = new Term(FIELD_JAVA_PROJECT_IDENTIFIER, element.getHandleIdentifier()); result.addAll(searchJaxrsElements(javaElementTerm, javaProjectIdentifier)); break; case IJavaElement.PACKAGE_FRAGMENT_ROOT: final Term packageFragmentRootIdentifier = new Term(FIELD_PACKAGE_FRAGMENT_ROOT_IDENTIFIER, element.getHandleIdentifier()); result.addAll(searchJaxrsElements(javaElementTerm, packageFragmentRootIdentifier)); break; case IJavaElement.COMPILATION_UNIT: final Term compilationUnitTerm = new Term(FIELD_COMPILATION_UNIT_IDENTIFIER, element.getHandleIdentifier()); result.addAll(searchJaxrsElements(javaElementTerm, compilationUnitTerm)); break; case IJavaElement.TYPE: case IJavaElement.FIELD: case IJavaElement.METHOD: final IJaxrsElement foundElement = this.elements.get(element.getHandleIdentifier()); if (foundElement != null) { result.add(foundElement); } break; } return result; } finally { readWriteLock.readLock().unlock(); } }
From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsMetamodel.java
License:Open Source License
/** * Searches and returns all JAX-RS Java-based Elements matching the given * {@link IJavaElement}, which can be {@link Annotation} {@link IProject}, * {@link IPackageFragmentRoot}, {@link ICompilationUnit} or an * {@link IMember}// w w w. jav a 2s. c om * * @param javaElement * the java element * * @return the JAX-RS Elements matching the given Java Element or empty list * if none matches. */ public <T extends IJaxrsElement> Set<T> findElements(final IJavaElement javaElement) { if (javaElement == null) { return Collections.emptySet(); } try { readWriteLock.readLock().lock(); final String identifier = javaElement.getHandleIdentifier(); switch (javaElement.getElementType()) { case IJavaElement.JAVA_PROJECT: return searchJaxrsElements(new Term(FIELD_JAVA_PROJECT_IDENTIFIER, identifier)); case IJavaElement.PACKAGE_FRAGMENT_ROOT: return searchJaxrsElements(new Term(FIELD_PACKAGE_FRAGMENT_ROOT_IDENTIFIER, identifier)); case IJavaElement.COMPILATION_UNIT: return searchJaxrsElements(new Term(FIELD_COMPILATION_UNIT_IDENTIFIER, identifier)); default: return searchJaxrsElements(LuceneDocumentFactory.getIdentifierTerm(javaElement)); } } finally { readWriteLock.readLock().unlock(); } }
From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.indexation.LuceneDocumentFactory.java
License:Open Source License
/** * Initialize a base Lucene Document for the given JAX-RS element. * /*from ww w . jav a2 s .c om*/ * @param element * @return a base document, to be completed with specific fields within the * calling method. */ private static Document createBaseDocument(JaxrsJavaElement<?> element) { final Document document = new Document(); addFieldToDocument(document, FIELD_JAVA_PROJECT_IDENTIFIER, getHandleIdentifier(element.getMetamodel().getJavaProject())); addFieldToDocument(document, FIELD_CATEGORY, element.getElementKind().getCategory().toString()); addFieldToDocument(document, FIELD_IDENTIFIER, element.getIdentifier()); if (element.getJavaElement() != null) { addFieldToDocument(document, FIELD_JAVA_ELEMENT, Boolean.TRUE.toString()); addFieldToDocument(document, FIELD_COMPILATION_UNIT_IDENTIFIER, getHandleIdentifier(element.getJavaElement().getAncestor(IJavaElement.COMPILATION_UNIT))); addFieldToDocument(document, FIELD_PACKAGE_FRAGMENT_ROOT_IDENTIFIER, getHandleIdentifier(element.getJavaElement().getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT))); if (element.getJavaElement().getElementType() == IJavaElement.TYPE) { addFieldToDocument(document, FIELD_JAVA_CLASS_NAME, ((IType) element.getJavaElement()).getFullyQualifiedName()); } } for (Entry<String, Annotation> entry : element.getAnnotations().entrySet()) { addFieldToDocument(document, FIELD_ANNOTATION_NAME, entry.getValue().getFullyQualifiedName()); addFieldToDocument(document, FIELD_PARENT_IDENTIFIER, getHandleIdentifier(entry.getValue().getJavaParent())); } if (element.getResource() != null) { addFieldToDocument(document, FIELD_RESOURCE_PATH, element.getResource().getFullPath().toPortableString()); } return document; }