Example usage for org.eclipse.jdt.core IPackageFragmentRoot isArchive

List of usage examples for org.eclipse.jdt.core IPackageFragmentRoot isArchive

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IPackageFragmentRoot isArchive.

Prototype

public boolean isArchive();

Source Link

Document

Returns whether this package fragment root's underlying resource is a binary archive (a JAR or zip file).

Usage

From source file:org.eclipse.jst.j2ee.internal.web.operations.WebPropertiesUtil.java

License:Open Source License

public static String validateWebContentName(String webContentName, IProject project, String javaSourceName) {

    String msg = validateFolderName(webContentName);
    if (msg != null)
        return msg;

    if (javaSourceName != null && webContentName.equals(javaSourceName))
        return ProjectSupportResourceHandler.Folder_names_cannot_be_equal_4;

    // If given a java project, check to make sure current package fragment
    // root folders do not overlap with new web content name
    if (project != null) {
        IJavaProject javaProject = JemProjectUtilities.getJavaProject(project);
        if (javaProject != null) {
            try {
                IPackageFragmentRoot roots[] = javaProject.getPackageFragmentRoots();
                for (int i = 0; i < roots.length; i++) {
                    IPackageFragmentRoot root = roots[i];
                    if (!root.isArchive()) {
                        IResource resource = root.getCorrespondingResource();
                        if (resource.getType() == IResource.FOLDER) {
                            IPath path = resource.getFullPath();
                            String rootFolder = path.segment(1);
                            if (webContentName.equals(rootFolder)) {
                                if (root.getKind() == IPackageFragmentRoot.K_SOURCE)
                                    return ProjectSupportResourceHandler.Folder_name_cannot_be_the_same_as_Java_source_folder_5;

                                return ProjectSupportResourceHandler.Folder_name_cannot_be_the_same_as_Java_class_folder_6;
                            }//www . j  a va  2  s . c om
                        }
                    }
                }
            } catch (JavaModelException e) {
                return null;
            }
        }
    }

    return null;
}

From source file:org.eclipse.jst.j2ee.internal.wizard.NewJavaClassWizardPage.java

License:Open Source License

/**
 * Add folder group to composite//from w ww . j  av a2s  . c o  m
 */
private void addFolderGroup(Composite composite) {
    // folder
    Label folderLabel = new Label(composite, SWT.LEFT);
    folderLabel.setText(J2EEUIMessages.FOLDER_LABEL);
    folderLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));

    folderText = new Text(composite, SWT.SINGLE | SWT.BORDER);
    folderText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    synchHelper.synchText(folderText, INewJavaClassDataModelProperties.SOURCE_FOLDER, null);

    IPackageFragmentRoot root = getSelectedPackageFragmentRoot();
    String projectName = model.getStringProperty(IArtifactEditOperationDataModelProperties.PROJECT_NAME);
    if (projectName != null && projectName.length() > 0) {
        IProject targetProject = ProjectUtilities.getProject(projectName);
        if (root == null || !root.getJavaProject().getProject().equals(targetProject) || root.isArchive()) {
            IFolder folder = getDefaultJavaSourceFolder(targetProject);
            if (folder != null)
                folderText.setText(folder.getFullPath().toOSString());
        } else {
            folderText.setText(root.getPath().toString());
        }
    }

    folderButton = new Button(composite, SWT.PUSH);
    folderButton.setText(J2EEUIMessages.BROWSE_BUTTON_LABEL_O);
    folderButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
    folderButton.addSelectionListener(new SelectionListener() {
        public void widgetSelected(SelectionEvent e) {
            handleFolderButtonPressed();
        }

        public void widgetDefaultSelected(SelectionEvent e) {
            // Do nothing
        }
    });
}

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 {/*  w  w  w.j a va 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.m2e.jdt.internal.JavaElementsAdapterFactory.java

License:Open Source License

public Object getAdapter(Object adaptableObject, Class adapterType) {
    if (adapterType == ArtifactKey.class) {
        if (adaptableObject instanceof IPackageFragmentRoot) {
            IPackageFragmentRoot fragment = (IPackageFragmentRoot) adaptableObject;
            IProject project = fragment.getJavaProject().getProject();
            if (project.isAccessible() && fragment.isArchive()) {
                try {
                    return getBuildPathManager().findArtifact(project, fragment.getPath());
                } catch (CoreException ex) {
                    log.error("Can't find artifact for " + fragment, ex);
                    return null;
                }// w ww . j av a  2  s. c  o  m
            }

        } else if (adaptableObject instanceof RequiredProjectWrapper) {
            IMavenProjectFacade projectFacade = getProjectFacade(adaptableObject);
            if (projectFacade != null) {
                return projectFacade.getArtifactKey();
            }

        } else if (adaptableObject instanceof IJavaProject) {
            return ((IJavaProject) adaptableObject).getProject().getAdapter(ArtifactKey.class);

        }

    } else if (adapterType == IPath.class) {
        if (adaptableObject instanceof IJavaElement) {
            IResource resource = ((IJavaElement) adaptableObject).getResource();
            if (resource != null) {
                return resource.getLocation();
            }
        }

    } else if (adapterType == IMavenProjectFacade.class) {
        if (adaptableObject instanceof IJavaElement) {
            IProject project = ((IJavaElement) adaptableObject).getJavaProject().getProject();
            IMavenProjectFacade projectFacade = getProjectFacade(project);
            if (projectFacade != null) {
                return projectFacade;
            }

        } else if (adaptableObject instanceof RequiredProjectWrapper) {
            ClassPathContainer container = ((RequiredProjectWrapper) adaptableObject)
                    .getParentClassPathContainer();
            IProject project = container.getJavaProject().getProject();
            IMavenProjectFacade projectFacade = getProjectFacade(project);
            if (projectFacade != null) {
                return projectFacade;
            }
        }
    }

    return null;
}

From source file:org.eclipse.modisco.java.discoverer.internal.io.library.LibraryReader.java

License:Open Source License

/**
 * Returns the {@link Archive} object which corresponds to the
 * {@link IPackageFragmentRoot#isArchive() archive} in which this class file
 * is contained. If a corresponding archive is present in the {@code model},
 * it is returned, or a new one is created and added to the {@code model}.
 * //from w  w w  .  j  ava 2  s  . c om
 * @param classFile
 *            the class file
 * @param factory
 *            the EMF factory
 * @param model
 *            the {@code Model}
 * @return the {@code Archive object}, or {@code null} if {@code classFile}
 *         is not contained in an archive
 */
public static Archive getArchive(final IClassFile classFile, final JavaFactory factory, final Model model) {
    Archive archive = null;
    IPackageFragmentRoot root = (IPackageFragmentRoot) classFile
            .getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
    if (root != null && root.isArchive()) {
        String libraryPath = getPath(root);
        // class file is in a library
        for (Archive itElement : model.getArchives()) {
            if (itElement.getOriginalFilePath().equals(libraryPath)) {
                return itElement;
            }
        }
        // if non present in model, create a new one
        archive = factory.createArchive();
        archive.setName(root.getElementName());
        archive.setOriginalFilePath(libraryPath);
        ManifestReader.completeArchiveWithManifest(root, archive, factory);
        model.getArchives().add(archive);
    }
    return archive;
}

From source file:org.eclipse.modisco.java.discoverer.internal.io.library.LibraryReader.java

License:Open Source License

/**
 * Returns the archive-relative path of the class file. If this class file
 * is in an archive (workspace or external), the path will be the path
 * inside the archive. If it is in a folder (workspace or external), the
 * path will be the full absolute path to this class file.
 * /*w ww  .j a  va  2 s  .c  o  m*/
 * @param classFile
 *            the class file
 * @return the archive-relative path
 */
public static String getPath(final IClassFile classFile) {
    IPackageFragmentRoot library = (IPackageFragmentRoot) classFile
            .getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);

    String filePath = null;
    if (library.isArchive()) { // zip or jar
        IPackageFragment parent = (IPackageFragment) classFile.getParent();
        String packagePath = parent.getElementName().replace('.', '/');
        filePath = '/' + packagePath + '/' + classFile.getElementName();
    } else { // folder
        if (library.isExternal()) {
            filePath = classFile.getPath().toOSString();
        } else {
            IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(classFile.getPath());
            filePath = file.getLocation().toOSString();
        }
    }
    return filePath;
}

From source file:org.eclipse.modisco.java.discoverer.internal.io.library.LibraryReader.java

License:Open Source License

/**
 * Returns the absolute path of this library in the filesystem.
 * //from   w  w w.  ja va  2 s .  c o m
 * @param library
 *            the library
 * @return the absolute path of this library
 */
public static String getPath(final IPackageFragmentRoot library) {
    String filePath = library.getPath().toOSString();
    // non external resources are relative to the workspace
    if (!library.isExternal()) {
        IResource resource = null;
        if (library.isArchive()) { // zip or jar
            resource = ResourcesPlugin.getWorkspace().getRoot().getFile(library.getPath());
        } else { // folder
            resource = ResourcesPlugin.getWorkspace().getRoot().getFolder(library.getPath());
        }
        filePath = resource.getLocation().toOSString();
    }
    return filePath;
}

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   ww w .jav  a2 s. c o m*/
            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.api.tools.ui.internal.JavaElementActionFilter.java

License:Open Source License

/**
 * @see org.eclipse.ui.IActionFilter#testAttribute(Object, String, String)
 */// w  w w.  ja  v  a2 s  .  c o  m
@Override
public boolean testAttribute(Object target, String name, String value) {
    if (name.equals("JavaElementActionFilter")) { //$NON-NLS-1$
        if (target instanceof IJavaElement) {
            IJavaElement javaElement = (IJavaElement) target;
            if (value.equals("isEnabled")) { //$NON-NLS-1$
                while (javaElement != null) {
                    switch (javaElement.getElementType()) {
                    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
                        IPackageFragmentRoot root = (IPackageFragmentRoot) javaElement;
                        return !root.isArchive();
                    case IJavaElement.PACKAGE_FRAGMENT:
                    case IJavaElement.COMPILATION_UNIT:
                    case IJavaElement.CLASS_FILE:
                    case IJavaElement.TYPE:
                        javaElement = javaElement.getParent();
                        break;
                    case IJavaElement.ANNOTATION:
                    case IJavaElement.FIELD:
                    case IJavaElement.IMPORT_CONTAINER:
                    case IJavaElement.IMPORT_DECLARATION:
                    case IJavaElement.INITIALIZER:
                    case IJavaElement.JAVA_MODEL:
                    case IJavaElement.LOCAL_VARIABLE:
                    case IJavaElement.METHOD:
                    case IJavaElement.PACKAGE_DECLARATION:
                    case IJavaElement.TYPE_PARAMETER:
                        return false;
                    case IJavaElement.JAVA_PROJECT:
                        return true;
                    default:
                        break;
                    }
                }
                return true;
            }
        }
    }
    return false;
}

From source file:org.eclipse.pde.api.tools.ui.internal.wizards.CompareOperation.java

License:Open Source License

/**
 * @param structuredSelection// ww w.  j a  va  2 s  .com
 * @param monitor
 * @return the scope
 */
public static ApiScope walkStructureSelection(IStructuredSelection structuredSelection,
        IProgressMonitor monitor) {
    Object[] selected = structuredSelection.toArray();
    ApiScope scope = new ApiScope();
    IApiBaseline workspaceBaseline = ApiBaselineManager.getManager().getWorkspaceBaseline();
    if (workspaceBaseline == null) {
        return scope;
    }
    Arrays.sort(selected, new Comparator<Object>() {
        @Override
        public int compare(Object o1, Object o2) {
            if (o1 instanceof IJavaElement && o2 instanceof IJavaElement) {
                IJavaElement element = (IJavaElement) o1;
                IJavaElement element2 = (IJavaElement) o2;
                return element.getElementType() - element2.getElementType();
            }
            return 0;
        }
    });
    int length = selected.length;
    for (int i = 0; i < length; i++) {
        Object currentSelection = selected[i];
        if (currentSelection instanceof IJavaElement) {
            IJavaElement element = (IJavaElement) currentSelection;
            IJavaProject javaProject = element.getJavaProject();
            try {
                switch (element.getElementType()) {
                case IJavaElement.COMPILATION_UNIT: {
                    ICompilationUnit compilationUnit = (ICompilationUnit) element;
                    IApiComponent apiComponent = workspaceBaseline
                            .getApiComponent(javaProject.getElementName());
                    if (apiComponent != null) {
                        addElementFor(compilationUnit, apiComponent, scope);
                    }
                    break;
                }
                case IJavaElement.PACKAGE_FRAGMENT: {
                    IPackageFragment fragment = (IPackageFragment) element;
                    IApiComponent apiComponent = workspaceBaseline
                            .getApiComponent(javaProject.getElementName());
                    IPackageFragmentRoot packageFragmentRoot = (IPackageFragmentRoot) fragment
                            .getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
                    boolean isArchive = false;
                    if (packageFragmentRoot != null) {
                        isArchive = packageFragmentRoot.isArchive();
                    }
                    if (apiComponent != null) {
                        addElementFor(fragment, isArchive, apiComponent, scope);
                    }
                    break;
                }
                case IJavaElement.PACKAGE_FRAGMENT_ROOT: {
                    IPackageFragmentRoot fragmentRoot = (IPackageFragmentRoot) element;
                    IApiComponent apiComponent = workspaceBaseline
                            .getApiComponent(javaProject.getElementName());
                    if (apiComponent != null) {
                        addElementFor(fragmentRoot, apiComponent, scope);
                    }
                    break;
                }
                case IJavaElement.JAVA_PROJECT:
                    IApiComponent apiComponent = workspaceBaseline
                            .getApiComponent(javaProject.getElementName());
                    if (apiComponent != null) {
                        scope.addElement(apiComponent);
                    }
                    break;
                default:
                    break;
                }
            } catch (JavaModelException e) {
                ApiPlugin.log(e);
            } catch (CoreException e) {
                ApiPlugin.log(e);
            }
        }
    }
    return scope;
}