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

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

Introduction

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

Prototype

IJavaProject getJavaProject();

Source Link

Document

Returns the Java project this element is contained in, or null if this element is not contained in any Java project (for instance, the IJavaModel is not contained in any Java project).

Usage

From source file:org.eclipse.xtext.ui.containers.JavaProjectsStateHelper.java

License:Open Source License

protected IPackageFragmentRoot getJarWithEntry(URI uri) {
    Iterable<Pair<IStorage, IProject>> storages = getStorages(uri);
    IPackageFragmentRoot result = null;//w  ww .  j av a2s.  co m
    for (Pair<IStorage, IProject> storage2Project : storages) {
        IStorage storage = storage2Project.getFirst();
        if (storage instanceof IJarEntryResource) {
            IPackageFragmentRoot fragmentRoot = ((IJarEntryResource) storage).getPackageFragmentRoot();
            if (fragmentRoot != null) {
                // IPackageFragmentRoot has some unexpected caching - it may return a different project
                // thus we use the one that was used to record the IPackageFragmentRoot
                IProject actualProject = storage2Project.getSecond();
                IJavaProject javaProject = JavaCore.create(actualProject);
                if (!javaProject.exists()) {
                    javaProject = fragmentRoot.getJavaProject();
                }
                if (isAccessibleXtextProject(javaProject.getProject())) {
                    // if both projects are the same - fine
                    if (javaProject.equals(fragmentRoot.getJavaProject()))
                        return fragmentRoot;
                    // otherwise re-obtain the fragment root from the real project
                    if (fragmentRoot.isExternal()) {
                        IPackageFragmentRoot actualRoot = javaProject
                                .getPackageFragmentRoot(fragmentRoot.getPath().toString());
                        if (actualProject.exists()) {
                            return actualRoot;
                        }
                    } else {
                        IPackageFragmentRoot actualRoot = javaProject
                                .getPackageFragmentRoot(fragmentRoot.getResource());
                        if (actualRoot.exists()) {
                            return actualRoot;
                        }
                    }
                    result = fragmentRoot;
                }
                if (result == null)
                    result = fragmentRoot;
            }
        }
    }
    return result;
}

From source file:org.eclipse.xtext.ui.editor.model.JavaClassPathResourceForIEditorInputFactory.java

License:Open Source License

@Override
protected ResourceSet getResourceSet(/* @Nullable */ IStorage storage) {
    if (storage instanceof IJarEntryResource) {
        IPackageFragmentRoot root = ((IJarEntryResource) storage).getPackageFragmentRoot();
        if (root != null) {
            IJavaProject project = root.getJavaProject();
            if (project != null)
                return getResourceSetProvider().get(project.getProject());
        }/*from   w  w  w .  j  a  va  2s.  c o  m*/
    }
    return super.getResourceSet(storage);
}

From source file:org.eclipse.xtext.ui.resource.Storage2UriMapperJavaImpl.java

License:Open Source License

@Override
public Iterable<Pair<IStorage, IProject>> getStorages(/* @NonNull */ URI uri) {
    List<Pair<IStorage, IProject>> result = newArrayListWithCapacity(1);
    List<PackageFragmentRootData> packageFragmentRootDatas;
    synchronized (cachedPackageFragmentRootData) {
        packageFragmentRootDatas = newArrayList(cachedPackageFragmentRootData.values());
    }/*  w w  w  .  j a  v a 2s .  c  o  m*/
    Iterator<PackageFragmentRootData> iterator = packageFragmentRootDatas.iterator();
    while (iterator.hasNext()) {
        PackageFragmentRootData data = iterator.next();
        if (data.exists()) {
            if (data.uriPrefix == null || uri.toString().startsWith(data.uriPrefix.toString())) {
                IStorage storage = data.uri2Storage.get(uri);
                if (storage != null) {
                    for (IPackageFragmentRoot root : data.associatedRoots.values()) {
                        result.add(Tuples.create(storage, root.getJavaProject().getProject()));
                    }
                }
            }
        } else {
            iterator.remove();
        }
    }
    if (result.isEmpty() && uri.isArchive()) {
        String authority = uri.authority();
        authority = authority.substring(0, authority.length() - 1);
        URI archiveURI = URI.createURI(authority);
        if (archiveURI.isFile() || archiveURI.isPlatformResource()) {
            IPath archivePath = new Path(archiveURI.isPlatformResource() ? archiveURI.toPlatformString(true)
                    : archiveURI.toFileString());
            for (PackageFragmentRootData data : packageFragmentRootDatas) {
                if (data.uriPrefix != null && archivePath.equals(data.getPath())) {
                    // prefixes have an empty last segment.
                    URI prefix = data.uriPrefix.lastSegment().length() == 0 ? data.uriPrefix.trimSegments(1)
                            : data.uriPrefix;
                    URI expectedURI = prefix.appendSegments(uri.segments());
                    IStorage storage = data.uri2Storage.get(expectedURI);
                    if (storage != null) {
                        for (IPackageFragmentRoot root : data.associatedRoots.values()) {
                            result.add(Tuples.create(storage, root.getJavaProject().getProject()));
                        }
                    }
                }
            }
        }
    }
    return result;
}

From source file:org.eclipse.xtext.ui.resource.Storage2UriMapperJavaImpl.java

License:Open Source License

private void clearCache(IJavaProject project, Set<PackageFragmentRootData> toBeKept) {
    Collection<PackageFragmentRootData> values;
    synchronized (cachedPackageFragmentRootData) {
        values = newArrayList(cachedPackageFragmentRootData.values());
    }//  w w  w .  j av a2 s.  c om
    List<PackageFragmentRootData> toBeRemoved = newArrayList();
    for (PackageFragmentRootData data : values) {
        if (toBeKept.contains(data)) {
            continue;
        }
        // create a copy of the known associated roots to avoid concurrent modification
        // and conflicts with other readers
        Map<String, IPackageFragmentRoot> copy = newLinkedHashMap(data.associatedRoots);
        Iterator<IPackageFragmentRoot> i = copy.values().iterator();
        IPackageFragmentRoot someRoot = null;
        boolean didChange = false;
        while (i.hasNext()) {
            IPackageFragmentRoot root = i.next();
            if (project.equals(root.getJavaProject())) {
                i.remove();
                didChange = true;
            } else if (someRoot == null) {
                someRoot = root;
            }
        }
        if (copy.size() == 0) {
            toBeRemoved.add(data);
        } else if (didChange) {
            // get rid of cached storages that still point to roots / projects that are no longer available
            // and recompute them lazily on demand
            data.associatedRoots = copy;
            final IPackageFragmentRoot rootToProcess = someRoot;
            data.uri2Storage = new ForwardingMap<URI, IStorage>() {
                Map<URI, IStorage> delegate;

                @Override
                protected Map<URI, IStorage> delegate() {
                    if (delegate == null) {
                        PackageFragmentRootData newlyCollected = initializeData(rootToProcess);
                        return delegate = newlyCollected.uri2Storage;
                    }
                    return delegate;
                }
            };
        }
    }
    if (!toBeRemoved.isEmpty()) {
        synchronized (cachedPackageFragmentRootData) {
            cachedPackageFragmentRootData.values().removeAll(toBeRemoved);
        }
    }
}

From source file:org.eclipse.xtext.ui.util.JavaProjectClasspathChangeAnalyzer.java

License:Open Source License

/**
 * retrieves all Java Projects whose classpath was effected by the given delta
 * //from   w w w.j av  a 2  s .  c o  m
 * @param delta the delta to analyze
 * @return a Set of the affected Java Projects
 */
public Set<IJavaProject> getJavaProjectsWithClasspathChange(IJavaElementDelta delta) {
    IJavaElement element = delta.getElement();
    if (element instanceof IPackageFragmentRoot) {
        if (isRelevantPackageFragmentRootChange(delta)) {
            IPackageFragmentRoot root = (IPackageFragmentRoot) element;
            return Collections.singleton(root.getJavaProject());
        }
    } else if (element instanceof IJavaModel) {
        return getJavaProjectsWithClasspathChange(delta.getAffectedChildren());
    } else if (element instanceof IJavaProject) {
        if (isClasspathChangeOnProject(delta)) {
            // filter out IJavaElementDelta.F_SOURCEATTACHED | IJavaElementDelta.F_SOURCEDETACHED only
            if (isAttachmentChangeOnly(delta)) {
                return Collections.emptySet();
            }
            return Collections.singleton((IJavaProject) element);
        }
        return getJavaProjectsWithClasspathChange(delta.getAffectedChildren());
    }
    return Collections.emptySet();
}

From source file:org.eclipse.xtext.xbase.ui.validation.XbaseUIValidator.java

License:Open Source License

protected IClasspathEntry getResolvedClasspathEntry(IJavaProject javaProject,
        /* @NonNull */ IPackageFragmentRoot root) throws JavaModelException {
    IClasspathEntry result = null;/* w w w  . j  av a 2s .com*/
    JavaProject castedProject = (JavaProject) javaProject;
    castedProject.getResolvedClasspath(); // force the resolved entry cache to be populated
    @SuppressWarnings("rawtypes")
    Map rootPathToResolvedEntries = castedProject.getPerProjectInfo().rootPathToResolvedEntries;
    if (rootPathToResolvedEntries != null) {
        result = (IClasspathEntry) rootPathToResolvedEntries.get(root.getPath());
        if (result == null)
            result = (IClasspathEntry) rootPathToResolvedEntries.get(root.getJavaProject().getPath());
    }

    return result;
}

From source file:org.eclipselabs.spray.xtext.ui.commands.ActivateExtension.java

License:Open Source License

@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
    IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event);
    ICompilationUnit cu = (ICompilationUnit) selection.getFirstElement();
    IPackageFragmentRoot pfRoot = projectUtil.getPackageFragmentRoot(cu);
    if (projectUtil.isGeneratedExtensionFile(cu)) {
        IJavaProject project = pfRoot.getJavaProject();
        try {/*from  w ww . j a v  a 2s .c o m*/
            IPackageFragmentRoot srcFolder = projectUtil.getSrcManPackageFragmentRoot(project);
            IPath targetPath = srcFolder.getPath().append(cu.getPath().makeRelativeTo(pfRoot.getPath()));
            IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
            // assure intermediate packages exist
            for (int i = 2; i < targetPath.segmentCount() - 1; i++) {
                if (!root.exists(targetPath.removeLastSegments(targetPath.segmentCount() - 1 - i))) {
                    root.getFolder(targetPath.removeLastSegments(targetPath.segmentCount() - 1 - i))
                            .create(true, true, new NullProgressMonitor());
                }
            }
            cu.getResource().move(targetPath, true, new NullProgressMonitor());
            root.findMember(targetPath).setDerived(false, new NullProgressMonitor());
            IFile targetFile = (IFile) root.findMember(targetPath);
            IEditorInput editorInput = new FileEditorInput(targetFile);
            IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
            IWorkbenchPage page = window.getActivePage();
            page.openEditor(editorInput, "org.eclipse.jdt.ui.CompilationUnitEditor");
            //cu.move(srcFolder, null, null, false, new NullProgressMonitor());
        } catch (CoreException e) {
            throw new ExecutionException(e.getMessage(), e);
        }
    } else {

    }
    return null;
}

From source file:org.fusesource.ide.branding.wizards.NewCamelTestWizardPageOne.java

License:Open Source License

private void performBuildpathConfiguration(Object data) {
    IPackageFragmentRoot root = getPackageFragmentRoot();
    if (root == null) {
        return; // should not happen. Link shouldn't be visible
    }/*from   w w  w  .  ja va2  s.c o m*/
    IJavaProject javaProject = root.getJavaProject();

    if ("a3".equals(data)) { // add and configure JUnit 3 //$NON-NLS-1$
        String id = BUILD_PATH_PAGE_ID;
        Map<String, Object> input = new HashMap<String, Object>();
        IClasspathEntry newEntry = BuildPathSupport.getJUnit3ClasspathEntry();
        input.put(BUILD_PATH_KEY_ADD_ENTRY, newEntry);
        input.put(BUILD_PATH_BLOCK, Boolean.TRUE);
        PreferencesUtil.createPropertyDialogOn(getShell(), javaProject, id, new String[] { id }, input).open();
    } else if ("a4".equals(data)) { // add and configure JUnit 4 //$NON-NLS-1$
        String id = BUILD_PATH_PAGE_ID;
        Map<String, Object> input = new HashMap<String, Object>();
        IClasspathEntry newEntry = BuildPathSupport.getJUnit4ClasspathEntry();
        input.put(BUILD_PATH_KEY_ADD_ENTRY, newEntry);
        input.put(BUILD_PATH_BLOCK, Boolean.TRUE);
        PreferencesUtil.createPropertyDialogOn(getShell(), javaProject, id, new String[] { id }, input).open();
    } else if ("b".equals(data)) { // open build path //$NON-NLS-1$
        String id = BUILD_PATH_PAGE_ID;
        Map<String, Object> input = new HashMap<String, Object>();
        input.put(BUILD_PATH_BLOCK, Boolean.TRUE);
        PreferencesUtil.createPropertyDialogOn(getShell(), javaProject, id, new String[] { id }, input).open();
    } else if ("c".equals(data)) { // open compliance //$NON-NLS-1$
        String buildPath = BUILD_PATH_PAGE_ID;
        String complianceId = COMPLIANCE_PAGE_ID;
        Map<String, Boolean> input = new HashMap<String, Boolean>();
        input.put(BUILD_PATH_BLOCK, Boolean.TRUE);
        input.put(KEY_NO_LINK, Boolean.TRUE);
        PreferencesUtil.createPropertyDialogOn(getShell(), javaProject, complianceId,
                new String[] { buildPath, complianceId }, data).open();
    }

    updateBuildPathMessage();
}

From source file:org.fusesource.ide.branding.wizards.NewCamelTestWizardPageOne.java

License:Open Source License

private void updateBuildPathMessage() {
    if (fLink == null || fLink.isDisposed()) {
        return;// ww  w.  j a  va  2 s  .co m
    }

    String message = null;
    IPackageFragmentRoot root = getPackageFragmentRoot();
    if (root != null) {
        IJavaProject project = root.getJavaProject();
        if (project.exists()) {
            if (isJUnit4()) {
                if (!JUnitStubUtility.is50OrHigher(project)) {
                    message = WizardMessages.NewCamelTestWizardPageOne_linkedtext_java5required;
                }
            }
        }
    }
    fLink.setVisible(message != null);
    fImage.setVisible(message != null);

    if (message != null) {
        fLink.setText(message);
    }
}

From source file:org.fusesource.ide.branding.wizards.NewCamelTestWizardPageOne.java

License:Open Source License

/**
 * The method is called when the container has changed to validate if the
 * project is suited for the JUnit test class. Clients can override to
 * modify or remove that validation./*from w w w  .  j a  va 2 s  .  c  o  m*/
 * 
 * @return the status of the validation
 */
protected IStatus validateIfJUnitProject() {
    JUnitStatus status = new JUnitStatus();
    IPackageFragmentRoot root = getPackageFragmentRoot();
    if (root != null) {
        try {
            IJavaProject project = root.getJavaProject();
            if (project.exists()) {
                if (isJUnit4()) {
                    if (!JUnitStubUtility.is50OrHigher(project)) {
                        status.setError(WizardMessages.NewCamelTestWizardPageOne_error_java5required);
                        return status;
                    }
                    if (project.findType(JUnitCorePlugin.JUNIT4_ANNOTATION_NAME) == null) {
                        status.setWarning(WizardMessages.NewCamelTestWizardPageOne__error_junit4NotOnbuildpath);
                        return status;
                    }
                } else {
                    if (project.findType(JUnitCorePlugin.TEST_SUPERCLASS_NAME) == null) {
                        status.setWarning(WizardMessages.NewCamelTestWizardPageOne_error_junitNotOnbuildpath);
                        return status;
                    }
                }
            }
        } catch (JavaModelException e) {
        }
    }
    return status;
}