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

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

Introduction

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

Prototype

String getElementName();

Source Link

Document

Returns the name of this element.

Usage

From source file:org.eclipse.jdt.internal.core.SourceMapper.java

License:Open Source License

private synchronized void computeAllRootPaths(IType type) {
    if (this.areRootPathsComputed) {
        return;/*from   w w w  .j a  v a 2s .  c o m*/
    }
    IPackageFragmentRoot root = (IPackageFragmentRoot) type.getPackageFragment().getParent();
    IPath pkgFragmentRootPath = root.getPath();
    final HashSet tempRoots = new HashSet();
    long time = 0;
    if (VERBOSE) {
        System.out.println("compute all root paths for " + root.getElementName()); //$NON-NLS-1$
        time = System.currentTimeMillis();
    }
    final HashSet firstLevelPackageNames = new HashSet();
    boolean containsADefaultPackage = false;
    boolean containsJavaSource = !pkgFragmentRootPath.equals(this.sourcePath); // used to optimize zip file reading only if source path and root path are equals, otherwise assume that attachment contains Java source

    String sourceLevel = null;
    String complianceLevel = null;
    if (root.isArchive()) {
        JavaModelManager manager = JavaModelManager.getJavaModelManager();
        ZipFile zip = null;
        try {
            zip = manager.getZipFile(pkgFragmentRootPath);
            for (Enumeration entries = zip.entries(); entries.hasMoreElements();) {
                ZipEntry entry = (ZipEntry) entries.nextElement();
                String entryName = entry.getName();
                if (!entry.isDirectory()) {
                    if (Util.isClassFileName(entryName)) {
                        int index = entryName.indexOf('/');
                        if (index != -1) {
                            String firstLevelPackageName = entryName.substring(0, index);
                            if (!firstLevelPackageNames.contains(firstLevelPackageName)) {
                                if (sourceLevel == null) {
                                    IJavaProject project = root.getJavaProject();
                                    sourceLevel = project.getOption(JavaCore.COMPILER_SOURCE, true);
                                    complianceLevel = project.getOption(JavaCore.COMPILER_COMPLIANCE, true);
                                }
                                IStatus status = JavaConventions.validatePackageName(firstLevelPackageName,
                                        sourceLevel, complianceLevel);
                                if (status.isOK() || status.getSeverity() == IStatus.WARNING) {
                                    firstLevelPackageNames.add(firstLevelPackageName);
                                }
                            }
                        } else {
                            containsADefaultPackage = true;
                        }
                    } else if (!containsJavaSource
                            && org.eclipse.jdt.internal.core.util.Util.isJavaLikeFileName(entryName)) {
                        containsJavaSource = true;
                    }
                }
            }
        } catch (CoreException e) {
            // ignore
        } finally {
            manager.closeZipFile(zip); // handle null case
        }
    } else {
        Object target = JavaModel.getTarget(root.getPath(), true);
        if (target instanceof IResource) {
            IResource resource = (IResource) target;
            if (resource instanceof IContainer) {
                try {
                    IResource[] members = ((IContainer) resource).members();
                    for (int i = 0, max = members.length; i < max; i++) {
                        IResource member = members[i];
                        String resourceName = member.getName();
                        if (member.getType() == IResource.FOLDER) {
                            if (sourceLevel == null) {
                                IJavaProject project = root.getJavaProject();
                                sourceLevel = project.getOption(JavaCore.COMPILER_SOURCE, true);
                                complianceLevel = project.getOption(JavaCore.COMPILER_COMPLIANCE, true);
                            }
                            IStatus status = JavaConventions.validatePackageName(resourceName, sourceLevel,
                                    complianceLevel);
                            if (status.isOK() || status.getSeverity() == IStatus.WARNING) {
                                firstLevelPackageNames.add(resourceName);
                            }
                        } else if (Util.isClassFileName(resourceName)) {
                            containsADefaultPackage = true;
                        } else if (!containsJavaSource
                                && org.eclipse.jdt.internal.core.util.Util.isJavaLikeFileName(resourceName)) {
                            containsJavaSource = true;
                        }
                    }
                } catch (CoreException e) {
                    // ignore
                }
            }
        }
    }

    if (containsJavaSource) { // no need to read source attachment if it contains no Java source (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=190840 )
        Object target = JavaModel.getTarget(this.sourcePath, true);
        if (target instanceof IContainer) {
            IContainer folder = (IContainer) target;
            computeRootPath(folder, firstLevelPackageNames, containsADefaultPackage, tempRoots,
                    folder.getFullPath().segmentCount()/*if external folder, this is the linked folder path*/);
        } else {
            JavaModelManager manager = JavaModelManager.getJavaModelManager();
            ZipFile zip = null;
            try {
                zip = manager.getZipFile(this.sourcePath);
                for (Enumeration entries = zip.entries(); entries.hasMoreElements();) {
                    ZipEntry entry = (ZipEntry) entries.nextElement();
                    String entryName;
                    if (!entry.isDirectory() && org.eclipse.jdt.internal.core.util.Util
                            .isJavaLikeFileName(entryName = entry.getName())) {
                        IPath path = new Path(entryName);
                        int segmentCount = path.segmentCount();
                        if (segmentCount > 1) {
                            for (int i = 0, max = path.segmentCount() - 1; i < max; i++) {
                                if (firstLevelPackageNames.contains(path.segment(i))) {
                                    tempRoots.add(path.uptoSegment(i));
                                    // don't break here as this path could contain other first level package names (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=74014)
                                }
                                if (i == max - 1 && containsADefaultPackage) {
                                    tempRoots.add(path.uptoSegment(max));
                                }
                            }
                        } else if (containsADefaultPackage) {
                            tempRoots.add(new Path("")); //$NON-NLS-1$
                        }
                    }
                }
            } catch (CoreException e) {
                // ignore
            } finally {
                manager.closeZipFile(zip); // handle null case
            }
        }
    }
    int size = tempRoots.size();
    if (this.rootPaths != null) {
        for (Iterator iterator = this.rootPaths.iterator(); iterator.hasNext();) {
            tempRoots.add(new Path((String) iterator.next()));
        }
        this.rootPaths.clear();
    } else {
        this.rootPaths = new ArrayList(size);
    }
    size = tempRoots.size();
    if (size > 0) {
        ArrayList sortedRoots = new ArrayList(tempRoots);
        if (size > 1) {
            Collections.sort(sortedRoots, new Comparator() {
                public int compare(Object o1, Object o2) {
                    IPath path1 = (IPath) o1;
                    IPath path2 = (IPath) o2;
                    return path1.segmentCount() - path2.segmentCount();
                }
            });
        }
        for (Iterator iter = sortedRoots.iterator(); iter.hasNext();) {
            IPath path = (IPath) iter.next();
            this.rootPaths.add(path.toString());
        }
    }
    this.areRootPathsComputed = true;
    if (VERBOSE) {
        System.out.println("Spent " + (System.currentTimeMillis() - time) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$
        System.out.println("Found " + size + " root paths"); //$NON-NLS-1$ //$NON-NLS-2$
        int i = 0;
        for (Iterator iterator = this.rootPaths.iterator(); iterator.hasNext();) {
            System.out.println("root[" + i + "]=" + ((String) iterator.next()));//$NON-NLS-1$ //$NON-NLS-2$
            i++;
        }
    }
}

From source file:org.eclipse.jst.jsf.facesconfig.ui.dialog.MessageBundleViewerSorter.java

License:Open Source License

public int category(Object element) {
    if (element instanceof IPackageFragmentRoot && !((IPackageFragmentRoot) element).isArchive()) {
        IPackageFragmentRoot root = (IPackageFragmentRoot) element;
        if (IFileFolderConstants.FOLDER_SOURCE.equals(root.getElementName())) {
            return 0;
        }//from   ww w.  ja v a  2  s.c  om
        return 1;
    }

    return 2;
}

From source file:org.eclipse.modisco.java.discoverer.DiscoverJavaModelFromLibrary.java

License:Open Source License

@Override
protected void basicDiscoverElement(final IPackageFragmentRoot packageFragmentRoot,
        final IProgressMonitor monitor) throws DiscoveryException {

    final IJavaProject javaProject = packageFragmentRoot.getJavaProject();
    if (javaProject == null) {
        return;//from  w  ww .  j  a v a2s. c  o  m
    }
    IProject project = javaProject.getProject();

    setDefaultTargetURI(
            URI.createPlatformResourceURI(project.getFullPath().append(packageFragmentRoot.getElementName())
                    .toString().concat(JavaDiscoveryConstants.JAVA_MODEL_FILE_SUFFIX), true));

    Model model = getEFactory().createModel();
    createTargetModel().getContents().add(model);
    IModelReader reader = getLibraryReader();
    reader.readModel(packageFragmentRoot, model, monitor);

    if (monitor.isCanceled()) {
        return;
    }
    reader.terminate(monitor);
}

From source file:org.eclipse.modisco.java.discoverer.ElementsToAnalyze.java

License:Open Source License

@Override
public String toString() {
    StringBuilder builder = new StringBuilder();
    boolean first = true;
    for (Object object : getElementsToDiscover()) {
        if (!first) {
            builder.append(", "); //$NON-NLS-1$
        }/*  www .j av  a 2  s . c o  m*/
        first = false;
        if (object instanceof IJavaProject) {
            IJavaProject javaProject = (IJavaProject) object;
            builder.append(javaProject.getElementName());
        } else if (object instanceof IPackageFragmentRoot) {
            IPackageFragmentRoot packageFragmentRoot = (IPackageFragmentRoot) object;
            builder.append(packageFragmentRoot.getElementName());
        } else {
            builder.append(object.toString());
        }
    }
    return builder.toString();
}

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

License:Open Source License

public void readModel(final Object source, final Model resultModel1, final BindingManager globalBindings1,
        final IProgressMonitor monitor) {

    if (source == null) {
        return;//from   www.j  ava  2s.  c  o  m
    }

    this.resultModel = resultModel1;
    this.globalBindings = globalBindings1;
    ClassFileParserUtils.initializePrimitiveTypes(this.factory, resultModel1, this.globalBindings);
    try {

        if (source instanceof IPackageFragmentRoot) {
            IPackageFragmentRoot library = (IPackageFragmentRoot) source;

            if (resultModel1.getName() == null || resultModel1.getName().length() == 0) {
                resultModel1.setName(library.getElementName());
            }
            this.typeFinder = new TypeFinder(library.getJavaProject());

            IJavaElement[] children = library.getChildren();
            for (IJavaElement element : children) {
                IPackageFragment packageFolder = (IPackageFragment) element;
                if (packageFolder.getClassFiles().length > 0) {
                    // report some feedback
                    monitor.subTask(Messages.LibraryReader_DiscoveringTask + packageFolder.getElementName());
                    // parse package
                    parsePackage(library, resultModel1, packageFolder, monitor);
                    if (monitor.isCanceled()) {
                        return;
                    }
                }
            }
        } else if (source instanceof IClassFile) {
            IClassFile cf = (IClassFile) source;
            this.typeFinder = new TypeFinder(cf.getJavaProject());
            parseClassFile(cf);

        } else {
            throw new IllegalArgumentException(
                    "Library reader can not handle source object : " + source.toString()); //$NON-NLS-1$
        }
    } catch (Exception e) {
        MoDiscoLogger.logError(e, JavaActivator.getDefault());
    }
}

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}.
 * /*  w  w  w. jav a2  s .  co  m*/
 * @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.pde.api.tools.internal.WorkspaceDeltaProcessor.java

License:Open Source License

/**
 * Processes the java element deltas of interest
 * //from w w w.  j  ava2  s .c  o m
 * @param deltas
 */
void processJavaElementDeltas(IJavaElementDelta[] deltas, IJavaProject project) {
    for (int i = 0; i < deltas.length; i++) {
        IJavaElementDelta delta = deltas[i];
        switch (delta.getElement().getElementType()) {
        case IJavaElement.JAVA_PROJECT: {
            IJavaProject proj = (IJavaProject) delta.getElement();
            int flags = delta.getFlags();
            switch (delta.getKind()) {
            case IJavaElementDelta.CHANGED: {
                if (!Util.isApiProject(proj)) {
                    if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) {
                        System.out.println(
                                "--> skipped processing CHANGED delta for project: " + proj.getElementName()); //$NON-NLS-1$
                    }
                    continue;
                }
                if ((flags & IJavaElementDelta.F_OPENED) != 0) {
                    if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) {
                        System.out.println("--> processing OPEN project: [" + proj.getElementName() + "]"); //$NON-NLS-1$ //$NON-NLS-2$
                    }
                    bmanager.disposeWorkspaceBaseline();
                } else if ((flags & IJavaElementDelta.F_RESOLVED_CLASSPATH_CHANGED) != 0
                        || (flags & IJavaElementDelta.F_CLASSPATH_CHANGED) != 0) {
                    if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) {
                        System.out.println(
                                "--> processing CLASSPATH CHANGE project: [" + proj.getElementName() + "]"); //$NON-NLS-1$ //$NON-NLS-2$
                    }
                    bmanager.disposeWorkspaceBaseline();
                    dmanager.projectClasspathChanged(proj);
                    try {
                        BuildState.setLastBuiltState(proj.getProject(), null);
                    } catch (CoreException e) {
                    }
                    dmanager.flushElementCache(delta.getElement());
                } else if ((flags & IJavaElementDelta.F_CHILDREN) != 0) {
                    if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) {
                        System.out.println(
                                "--> processing CHILDREN delta of project: [" + proj.getElementName() + "]"); //$NON-NLS-1$ //$NON-NLS-2$
                    }
                    processJavaElementDeltas(delta.getAffectedChildren(), proj);
                } else if ((flags & IJavaElementDelta.F_CONTENT) != 0) {
                    if (proj != null) {
                        if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) {
                            System.out.println(
                                    "--> processing child CONTENT of project: [" + proj.getElementName() + "]"); //$NON-NLS-1$ //$NON-NLS-2$
                        }
                        IResourceDelta[] resourcedeltas = delta.getResourceDeltas();
                        if (resourcedeltas != null) {
                            IResourceDelta rdelta = null;
                            for (int j = 0; j < resourcedeltas.length; j++) {
                                rdelta = resourcedeltas[j].findMember(new Path(Util.MANIFEST_NAME));
                                if (rdelta != null && rdelta.getKind() == IResourceDelta.CHANGED
                                        && (rdelta.getFlags() & IResourceDelta.CONTENT) > 0) {
                                    if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) {
                                        System.out.println("--> processing manifest delta"); //$NON-NLS-1$
                                    }
                                    bmanager.disposeWorkspaceBaseline();
                                    break;
                                }
                            }
                        }
                    } else {
                        if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) {
                            System.out.println("--> ignoring child CONTENT project context is null"); //$NON-NLS-1$
                        }
                    }
                }
                break;
            }
            case IJavaElementDelta.ADDED: {
                if (!Util.isApiProject(proj)) {
                    if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) {
                        System.out.println(
                                "--> skipped processing ADDED delta for project: " + proj.getElementName()); //$NON-NLS-1$
                    }
                    continue;
                }
                if ((flags & IJavaElementDelta.F_MOVED_FROM) != 0) {
                    if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) {
                        System.out.println("--> processing PROJECT RENAME from: [" //$NON-NLS-1$
                                + delta.getMovedFromElement().getJavaProject().getElementName() + "] to: [" //$NON-NLS-1$
                                + proj.getElementName() + "]"); //$NON-NLS-1$
                    }
                    bmanager.disposeWorkspaceBaseline();
                }
                break;
            }
            default:
                break;
            }
            break;
        }
        case IJavaElement.PACKAGE_FRAGMENT_ROOT: {
            IPackageFragmentRoot root = (IPackageFragmentRoot) delta.getElement();
            int flags = delta.getFlags();
            if ((flags & (IJavaElementDelta.F_ARCHIVE_CONTENT_CHANGED | IJavaElementDelta.F_ADDED_TO_CLASSPATH
                    | IJavaElementDelta.F_REMOVED_FROM_CLASSPATH)) != 0) {
                if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) {
                    System.out.println("processed CLASSPATH CHANGED for package fragment root: [" //$NON-NLS-1$
                            + root.getElementName() + "]"); //$NON-NLS-1$
                }
                dmanager.projectClasspathChanged(project);
            }
            if ((flags & IJavaElementDelta.F_CHILDREN) != 0) {
                if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) {
                    System.out.println(
                            "processed CHILDREN for package fragment root: [" + root.getElementName() + "]"); //$NON-NLS-1$ //$NON-NLS-2$
                }
                processJavaElementDeltas(delta.getAffectedChildren(), project);
            }
            break;
        }
        case IJavaElement.PACKAGE_FRAGMENT: {
            IPackageFragment fragment = (IPackageFragment) delta.getElement();
            if (delta.getKind() == IJavaElementDelta.REMOVED) {
                if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) {
                    System.out.println("processed REMOVED delta for package fragment: [" //$NON-NLS-1$
                            + fragment.getElementName() + "]"); //$NON-NLS-1$
                }
                ((ApiBaseline) bmanager.getWorkspaceBaseline()).clearPackage(fragment.getElementName());
            }
            int flags = delta.getFlags();
            if ((flags & IJavaElementDelta.F_CHILDREN) != 0) {
                if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) {
                    System.out.println("processed CHILDREN delta for package fragment: [" //$NON-NLS-1$
                            + fragment.getElementName() + "]"); //$NON-NLS-1$
                }
                processJavaElementDeltas(delta.getAffectedChildren(), project);
            }
            break;
        }
        case IJavaElement.COMPILATION_UNIT: {
            int flags = delta.getFlags();
            switch (delta.getKind()) {
            case IJavaElementDelta.CHANGED: {
                if ((flags & (IJavaElementDelta.F_CONTENT | IJavaElementDelta.F_FINE_GRAINED
                        | IJavaElementDelta.F_PRIMARY_RESOURCE)) != 0) {
                    if (project != null) {
                        if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) {
                            System.out
                                    .println("processed CONTENT / FINE_GRAINED / PRIMARY_RESOURCE delta for: [" //$NON-NLS-1$
                                            + delta.getElement().getElementName() + "]"); //$NON-NLS-1$
                        }
                        dmanager.projectChanged(project);
                        dmanager.flushElementCache(delta.getElement());
                        continue;
                    }
                }
                break;
            }
            case IJavaElementDelta.ADDED:
            case IJavaElementDelta.REMOVED: {
                if (project != null) {
                    if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) {
                        if (delta.getKind() == IJavaElementDelta.ADDED) {
                            System.out.println(
                                    "processed ADDED delta for: [" + delta.getElement().getElementName() + "]"); //$NON-NLS-1$//$NON-NLS-2$
                        } else {
                            System.out.println("processed REMOVED delta for: [" //$NON-NLS-1$
                                    + delta.getElement().getElementName() + "]"); //$NON-NLS-1$
                        }
                    }
                    dmanager.projectChanged(project);
                    dmanager.flushElementCache(delta.getElement());
                    continue;
                }
                break;
            }
            default:
                break;
            }
            break;
        }
        default:
            break;
        }
    }
}

From source file:org.eclipse.recommenders.codesearch.rcp.index.ui.ProjectIndexerRunnable.java

License:Open Source License

private void analyzeRoot(final IPackageFragmentRoot root) throws Exception {
    this.root = root;
    monitor.subTask("Analyzing " + root.getElementName());

    rootLocation = getFile(root);//from www  .  j av a  2 s .c o  m
    if (monitor.isCanceled()) {
        return;
    }
    if (rootLocation == null) {
        return;
    }
    if (hasNotChanged(rootLocation)) {
        return;
    }
    if (root.isArchive()) {
        indexer.delete(rootLocation);
        if (!findSourceMapper()) {
            return;
        }
    }

    analyzePackageFragments();

    monitor.subTask("Checkpointing...");
    indexer.commit();
    monitor.worked(1);
    root.close();
}

From source file:org.eclipse.recommenders.internal.apidocs.rcp.StaticHooksProvider.java

License:Open Source License

@JavaSelectionSubscriber
public void onPackageRootSelection(final IPackageFragmentRoot root, final JavaElementSelectionEvent event,
        final Composite parent) throws ExecutionException {

    final TreeMultimap<IType, IMethod> index = TreeMultimap.create(new TypeNameComparator(),
            new MethodNameComparator());
    try {/*from w ww  .ja va 2  s .co  m*/
        for (final IJavaElement e : root.getChildren()) {
            if (e.getElementType() == IJavaElement.PACKAGE_FRAGMENT) {
                final IPackageFragment pkg = (IPackageFragment) e;
                findStaticHooks(pkg, index);
                pkg.close();
            }
        }
    } catch (final Exception x) {
        log(ERROR_FAILED_TO_DETERMINE_STATIC_MEMBERS, x, root.getElementName());
    }
    runSyncInUiThread(new HooksRendererRunnable(index, parent));
}

From source file:org.eclipse.recommenders.internal.types.rcp.ProjectTypesIndex.java

License:Open Source License

private void rebuildRoot(IPackageFragmentRoot root, SubMonitor monitor) {
    ImmutableList<IType> types = findTypes(root);
    SubMonitor progress = SubMonitor.convert(monitor, types.size());
    progress.subTask(root.getElementName());
    for (IType type : types) {
        if (progress.isCanceled()) {
            setRebuildAfterNextAccess(true);
            throw new OperationCanceledException();
        }/*  w  ww. j  a  v  a  2 s  .co  m*/
        indexType(type, progress.newChild(1));
    }
    File location = JavaElementsFinder.findLocation(root).orNull();
    if (location != null) {
        registerArchivePackageFragmentRoot(location);
    }
    commit();
}