List of usage examples for org.eclipse.jdt.core IPackageFragmentRoot K_BINARY
int K_BINARY
To view the source code for org.eclipse.jdt.core IPackageFragmentRoot K_BINARY.
Click Source Link
From source file:org.eclipse.jdt.internal.core.PackageFragment.java
License:Open Source License
/** * @see Openable/*from w ww .java 2 s. c o m*/ */ protected boolean buildStructure(OpenableElementInfo info, IProgressMonitor pm, Map newElements, IResource underlyingResource) throws JavaModelException { // add compilation units/class files from resources HashSet vChildren = new HashSet(); int kind = getKind(); try { PackageFragmentRoot root = getPackageFragmentRoot(); char[][] inclusionPatterns = root.fullInclusionPatternChars(); char[][] exclusionPatterns = root.fullExclusionPatternChars(); IResource[] members = ((IContainer) underlyingResource).members(); int length = members.length; if (length > 0) { IJavaProject project = getJavaProject(); String sourceLevel = project.getOption(JavaCore.COMPILER_SOURCE, true); String complianceLevel = project.getOption(JavaCore.COMPILER_COMPLIANCE, true); for (int i = 0; i < length; i++) { IResource child = members[i]; if (child.getType() != IResource.FOLDER && !Util.isExcluded(child, inclusionPatterns, exclusionPatterns)) { IJavaElement childElement; if (kind == IPackageFragmentRoot.K_SOURCE && Util.isValidCompilationUnitName(child.getName(), sourceLevel, complianceLevel)) { // GROOVY start /* old { childElement = new CompilationUnit(this, child.getName(), DefaultWorkingCopyOwner.PRIMARY); } new */ childElement = LanguageSupportFactory.newCompilationUnit(this, child.getName(), DefaultWorkingCopyOwner.PRIMARY); // GROOVY end vChildren.add(childElement); } else if (kind == IPackageFragmentRoot.K_BINARY && Util.isValidClassFileName(child.getName(), sourceLevel, complianceLevel)) { childElement = getClassFile(child.getName()); vChildren.add(childElement); } } } } } catch (CoreException e) { throw new JavaModelException(e); } if (kind == IPackageFragmentRoot.K_SOURCE) { // add primary compilation units ICompilationUnit[] primaryCompilationUnits = getCompilationUnits(DefaultWorkingCopyOwner.PRIMARY); for (int i = 0, length = primaryCompilationUnits.length; i < length; i++) { ICompilationUnit primary = primaryCompilationUnits[i]; vChildren.add(primary); } } IJavaElement[] children = new IJavaElement[vChildren.size()]; vChildren.toArray(children); info.setChildren(children); return true; }
From source file:org.eclipse.jst.j2ee.internal.dialogs.TypeJavaSearchScope.java
License:Open Source License
public void add(IJavaElement element) throws JavaModelException { IPackageFragmentRoot root = null;// w ww . j a va2 s. co m switch (element.getElementType()) { case IJavaElement.JAVA_MODEL: // a workspace sope should be used break; case IJavaElement.JAVA_PROJECT: this.add((IJavaProject) element, true, new HashSet(2)); break; case IJavaElement.PACKAGE_FRAGMENT_ROOT: root = (IPackageFragmentRoot) element; this.add(root.getPath(), true); break; case IJavaElement.PACKAGE_FRAGMENT: root = (IPackageFragmentRoot) element.getParent(); if (root.isArchive()) { this.add(root.getPath().append(new Path(element.getElementName().replace('.', '/'))), false); } else { IResource resource = element.getUnderlyingResource(); if (resource != null && resource.isAccessible()) { this.add(resource.getFullPath(), false); } } break; default: // remember sub-cu (or sub-class file) java elements if (element instanceof IMember) { if (this.elements == null) { this.elements = new ArrayList(); } this.elements.add(element); } this.add(this.fullPath(element), true); // find package fragment root including this java element IJavaElement parent = element.getParent(); while (parent != null && !(parent instanceof IPackageFragmentRoot)) { parent = parent.getParent(); } if (parent instanceof IPackageFragmentRoot) { root = (IPackageFragmentRoot) parent; } } if (root != null) { if (root.getKind() == IPackageFragmentRoot.K_BINARY) { this.addEnclosingProjectOrJar(root.getPath()); } else { this.addEnclosingProjectOrJar(root.getJavaProject().getProject().getFullPath()); } } }
From source file:org.eclipse.jst.servlet.ui.internal.navigator.CompressedJavaProject.java
License:Open Source License
public List getNonExternalSourceFolders() { List nonExternalSourceFolders = null; IPackageFragmentRoot[] sourceFolders; try {//from w ww . j a v a 2 s .c om IJavaProject jProject = JavaCore.create(project); sourceFolders = jProject.getPackageFragmentRoots(); nonExternalSourceFolders = new ArrayList(Arrays.asList(sourceFolders)); for (Iterator iter = nonExternalSourceFolders.iterator(); iter.hasNext();) { IPackageFragmentRoot root = (IPackageFragmentRoot) iter.next(); if (root.isExternal() || root.isArchive() || root.getKind() == IPackageFragmentRoot.K_BINARY) iter.remove(); } } catch (JavaModelException e) { ServletUIPlugin.log(e); } return nonExternalSourceFolders != null ? nonExternalSourceFolders : Collections.EMPTY_LIST; }
From source file:org.eclipse.modisco.java.discoverer.AbstractDiscoverJavaModelFromProject.java
License:Open Source License
public static Set<IPackageFragmentRoot> computeRequiredLibraries(final IJavaProject project) throws JavaModelException { Set<IPackageFragmentRoot> libraries = new LinkedHashSet<IPackageFragmentRoot>(); // we keep package fragments which are binaries for (IPackageFragmentRoot lib : project.getPackageFragmentRoots()) { if (lib.exists() && lib.getKind() == IPackageFragmentRoot.K_BINARY) { libraries.add(lib);/* w w w . ja v a 2s . c o m*/ } } return libraries; }
From source file:org.eclipse.modisco.java.discoverer.DiscoverJavaModelFromLibrary.java
License:Open Source License
public boolean isApplicableTo(final IPackageFragmentRoot packageFragmentRoot) { try {//from www. jav a2 s . c o m return packageFragmentRoot.getKind() == IPackageFragmentRoot.K_BINARY; } catch (JavaModelException e) { MoDiscoLogger.logError(e, JavaActivator.getDefault()); return false; } }
From source file:org.eclipse.pde.api.tools.internal.model.ProjectComponent.java
License:Open Source License
/** * Finds and returns an {@link IApiTypeContainer} for the specified source * folder, or <code>null</code> if it does not exist. If the source folder * shares an output location with a previous source folder, the output * location is shared (a new one is not created). * /*from ww w.j a v a 2 s . c o m*/ * @param location project relative path to the source folder * @return {@link IApiTypeContainer} or <code>null</code> */ private IApiTypeContainer getApiTypeContainer(String location, IApiComponent component) throws CoreException { if (this.fOutputLocationToContainer == null) { baselineDisposed(getBaseline()); } IResource res = fProject.getProject().findMember(new Path(location)); if (res != null) { IPackageFragmentRoot root = fProject.getPackageFragmentRoot(res); if (root.exists()) { if (root.getKind() == IPackageFragmentRoot.K_BINARY) { if (res.getType() == IResource.FOLDER) { // class file folder IPath location2 = res.getLocation(); IApiTypeContainer cfc = fOutputLocationToContainer.get(location2); if (cfc == null) { cfc = new ProjectTypeContainer(component, (IContainer) res); fOutputLocationToContainer.put(location2, cfc); } return cfc; } } else { IClasspathEntry entry = root.getRawClasspathEntry(); IPath outputLocation = entry.getOutputLocation(); if (outputLocation == null) { outputLocation = fProject.getOutputLocation(); } IApiTypeContainer cfc = fOutputLocationToContainer.get(outputLocation); if (cfc == null) { IPath projectFullPath = fProject.getProject().getFullPath(); IContainer container = null; if (projectFullPath.equals(outputLocation)) { // The project is its own output location container = fProject.getProject(); } else { container = fProject.getProject().getWorkspace().getRoot().getFolder(outputLocation); } cfc = new ProjectTypeContainer(component, container); fOutputLocationToContainer.put(outputLocation, cfc); } return cfc; } } } return null; }
From source file:org.eclipse.pde.api.tools.internal.ProjectApiDescription.java
License:Open Source License
@Override protected ManifestNode createNode(ManifestNode parentNode, IElementDescriptor element) { switch (element.getElementType()) { case IElementDescriptor.PACKAGE: try {/*from w w w.j a v a2s .c om*/ IPackageDescriptor pkg = (IPackageDescriptor) element; IPackageFragmentRoot[] roots = getJavaProject().getPackageFragmentRoots(); List<IPackageFragment> fragments = new ArrayList<IPackageFragment>(1); for (int i = 0; i < roots.length; i++) { IPackageFragmentRoot root = roots[i]; IClasspathEntry entry = root.getRawClasspathEntry(); switch (entry.getEntryKind()) { case IClasspathEntry.CPE_SOURCE: case IClasspathEntry.CPE_LIBRARY: IPackageFragment fragment = root.getPackageFragment(pkg.getName()); if (fragment.exists()) { fragments.add(fragment); } break; default: if (!root.isArchive() && root.getKind() == IPackageFragmentRoot.K_BINARY) { // class file folder fragment = root.getPackageFragment(pkg.getName()); if (fragment.exists()) { fragments.add(fragment); } } } } if (fragments.isEmpty()) { return null; } else { return newPackageNode(fragments.toArray(new IPackageFragment[fragments.size()]), parentNode, element, VisibilityModifiers.PRIVATE, RestrictionModifiers.NO_RESTRICTIONS); } } catch (CoreException e) { return null; } case IElementDescriptor.TYPE: IReferenceTypeDescriptor descriptor = (IReferenceTypeDescriptor) element; try { IType type = null; String name = descriptor.getName(); if (parentNode instanceof PackageNode) { IPackageFragment[] fragments = ((PackageNode) parentNode).fFragments; for (int i = 0; i < fragments.length; i++) { IPackageFragment fragment = fragments[i]; if (fragment.getKind() == IPackageFragmentRoot.K_SOURCE) { ICompilationUnit unit = fragment.getCompilationUnit(name + ".java"); //$NON-NLS-1$ try { IResource resource = unit.getUnderlyingResource(); if (resource != null) { type = unit.getType(name); } } catch (JavaModelException jme) { // exception if the resource does not exist if (!jme.getJavaModelStatus().isDoesNotExist()) { throw jme; } } } else { IClassFile file = fragment.getClassFile(name + ".class"); //$NON-NLS-1$ if (file.exists()) { type = file.getType(); } } } } else if (parentNode instanceof TypeNode) { type = ((TypeNode) parentNode).fType.getType(name); } if (type != null) { return newTypeNode(type, parentNode, element, VISIBILITY_INHERITED, RestrictionModifiers.NO_RESTRICTIONS); } } catch (CoreException e) { return null; } return null; default: break; } return super.createNode(parentNode, element); }
From source file:org.eclipse.pde.internal.core.ClasspathComputer.java
License:Open Source License
private static void addSourceFolder(IBuildEntry buildEntry, IProject project, HashSet<IPath> paths, ArrayList<IClasspathEntry> result) throws CoreException { String[] folders = buildEntry.getTokens(); for (int j = 0; j < folders.length; j++) { String folder = folders[j]; IPath path = project.getFullPath().append(folder); if (paths.add(path)) { if (project.findMember(folder) == null) { CoreUtility.createFolder(project.getFolder(folder)); } else { IPackageFragmentRoot root = JavaCore.create(project).getPackageFragmentRoot(path.toString()); if (root.exists() && root.getKind() == IPackageFragmentRoot.K_BINARY) { result.add(root.getRawClasspathEntry()); continue; }//from www. j av a 2 s. c o m } result.add(JavaCore.newSourceEntry(path)); } } }
From source file:org.eclipse.pde.internal.core.ClasspathComputer.java
License:Open Source License
private static void addLibraryEntry(IProject project, IPluginLibrary library, IPath sourceAttachment, IClasspathAttribute[] attrs, ArrayList<IClasspathEntry> result) throws JavaModelException { String name = ClasspathUtilCore.expandLibraryName(library.getName()); IResource jarFile = project.findMember(name); if (jarFile == null) return;/* w w w.j av a 2s . c om*/ IPackageFragmentRoot root = JavaCore.create(project).getPackageFragmentRoot(jarFile); if (root.exists() && root.getKind() == IPackageFragmentRoot.K_BINARY) { IClasspathEntry oldEntry = root.getRawClasspathEntry(); // If we have the same binary root but new or different source, we should recreate the entry if ((sourceAttachment == null && oldEntry.getSourceAttachmentPath() != null) || (sourceAttachment != null && sourceAttachment.equals(oldEntry.getSourceAttachmentPath()))) { if (!result.contains(oldEntry)) { result.add(oldEntry); return; } } } IClasspathEntry entry = createClasspathEntry(project, jarFile, name, sourceAttachment, attrs, library.isExported()); if (!result.contains(entry)) result.add(entry); }
From source file:org.eclipse.pde.internal.ui.editor.plugin.ImportPackageSection.java
License:Open Source License
private void setElements(ConditionalListSelectionDialog dialog) { Set<String> forbidden = getForbiddenIds(); boolean allowJava = "true".equals(getBundle().getHeader(ICoreConstants.ECLIPSE_JREBUNDLE)); //$NON-NLS-1$ ArrayList<ImportItemWrapper> elements = new ArrayList<ImportItemWrapper>(); ArrayList<ImportItemWrapper> conditional = new ArrayList<ImportItemWrapper>(); IPluginModelBase[] models = PluginRegistry.getActiveModels(); Set<NameVersionDescriptor> nameVersions = new HashSet<NameVersionDescriptor>(); // Set of NameVersionDescriptors, used to remove duplicate entries for (int i = 0; i < models.length; i++) { BundleDescription desc = models[i].getBundleDescription(); // If the current model is a fragment, it can export packages only if its parent has hasExtensibleAPI set if (isFragmentThatCannotExportPackages(models[i])) continue; String id = desc == null ? null : desc.getSymbolicName(); if (id == null || forbidden.contains(id)) continue; ExportPackageDescription[] exported = desc.getExportPackages(); for (int j = 0; j < exported.length; j++) { String name = exported[j].getName(); NameVersionDescriptor nameVersion = new NameVersionDescriptor(exported[j].getName(), exported[j].getVersion().toString(), NameVersionDescriptor.TYPE_PACKAGE); if (("java".equals(name) || name.startsWith("java.")) && !allowJava) //$NON-NLS-1$ //$NON-NLS-2$ continue; if (nameVersions.add(nameVersion) && (fHeader == null || !fHeader.hasPackage(name))) elements.add(new ImportItemWrapper(exported[j])); }// w w w. j a va2 s.co m IPluginModelBase model = (IPluginModelBase) getPage().getPDEEditor().getAggregateModel(); if (model instanceof IBundlePluginModelBase) { IBundleModel bmodel = ((IBundlePluginModelBase) model).getBundleModel(); if (bmodel != null) { ExportPackageHeader header = (ExportPackageHeader) bmodel.getBundle() .getManifestHeader(Constants.EXPORT_PACKAGE); if (header != null) { ExportPackageObject[] pkgs = header.getPackages(); for (int j = 0; j < pkgs.length; j++) { String name = pkgs[j].getName(); String version = pkgs[j].getVersion(); NameVersionDescriptor nameVersion = new NameVersionDescriptor(name, version, NameVersionDescriptor.TYPE_PACKAGE); if (nameVersions.add(nameVersion) && (fHeader == null || !fHeader.hasPackage(name))) elements.add(new ImportItemWrapper(pkgs[j])); } } } } } for (int i = 0; i < models.length; i++) { try { // add un-exported packages in workspace non-binary plug-ins IResource resource = models[i].getUnderlyingResource(); IProject project = resource != null ? resource.getProject() : null; if (project == null || !project.hasNature(JavaCore.NATURE_ID) || WorkspaceModelManager.isBinaryProject(project) || !PDEProject.getManifest(project).exists()) continue; // If the current model is a fragment, it can export packages only if its parent has hasExtensibleAPI set if (isFragmentThatCannotExportPackages(models[i])) continue; IJavaProject jp = JavaCore.create(project); IPackageFragmentRoot[] roots = jp.getPackageFragmentRoots(); for (int j = 0; j < roots.length; j++) { if (roots[j].getKind() == IPackageFragmentRoot.K_SOURCE || (roots[j].getKind() == IPackageFragmentRoot.K_BINARY && !roots[j].isExternal())) { IJavaElement[] children = roots[j].getChildren(); for (int k = 0; k < children.length; k++) { IPackageFragment f = (IPackageFragment) children[k]; String name = f.getElementName(); NameVersionDescriptor nameVersion = new NameVersionDescriptor(name, null, NameVersionDescriptor.TYPE_PACKAGE); if (name.equals("")) //$NON-NLS-1$ name = "."; //$NON-NLS-1$ if (nameVersions.add(nameVersion) && (f.hasChildren() || f.getNonJavaResources().length > 0)) conditional.add(new ImportItemWrapper(f)); } } } } catch (CoreException e) { } } dialog.setElements(elements.toArray()); dialog.setConditionalElements(conditional.toArray()); }