List of usage examples for org.eclipse.jdt.core IPackageFragmentRoot getJavaProject
IJavaProject getJavaProject();
null
if this element is not contained in any Java project (for instance, the IJavaModel
is not contained in any Java project). 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; }