List of usage examples for org.eclipse.jdt.core IPackageFragmentRoot getPackageFragment
IPackageFragment getPackageFragment(String packageName);
From source file:org.eclipse.jst.jsp.core.internal.java.JSPTranslation.java
License:Open Source License
/** * Originally from ReconcileStepForJava. Creates an ICompilationUnit from the contents of the JSP document. * //from w w w .jav a 2 s . c om * @return an ICompilationUnit from the contents of the JSP document */ private ICompilationUnit createCompilationUnit() throws JavaModelException { IJavaProject je = getJavaProject(); if (je == null || !je.exists()) return null; final String name = getClassname() + ".java"; IPackageFragmentRoot packageFragmentRoot = null; IPackageFragmentRoot[] packageFragmentRoots = je.getPackageFragmentRoots(); for (int i = 0; i < packageFragmentRoots.length; i++) { if (!packageFragmentRoots[i].isArchive() && !packageFragmentRoots[i].isExternal()) { packageFragmentRoot = packageFragmentRoots[i]; break; } } if (packageFragmentRoot == null) { if (DEBUG) { System.out.println( "** Abort create working copy: cannot create working copy: JSP is not in a Java project with source package fragment root"); //$NON-NLS-1$ } return null; } final IPackageFragment fragment = packageFragmentRoot .getPackageFragment(IPackageFragmentRoot.DEFAULT_PACKAGEROOT_PATH); ICompilationUnit cu = fragment.getCompilationUnit(name).getWorkingCopy(getWorkingCopyOwner(), getProgressMonitor()); setContents(cu); if (DEBUG) { System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); //$NON-NLS-1$ System.out.println("(+) JSPTranslation [" + this + "] finished creating CompilationUnit: " + cu); //$NON-NLS-1$ //$NON-NLS-2$ System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); //$NON-NLS-1$ } return cu; }
From source file:org.eclipse.jst.servlet.ui.internal.wizard.NewWebArtifactWizard.java
License:Open Source License
protected void openJavaClass() { try {//from w ww .j av a2s. co m String className; if (getDataModel().getBooleanProperty(USE_EXISTING_CLASS)) { className = getDataModel().getStringProperty(CLASS_NAME); } else { className = getDataModel().getStringProperty(QUALIFIED_CLASS_NAME); } IProject p = (IProject) getDataModel().getProperty(PROJECT); IJavaProject javaProject = J2EEEditorUtility.getJavaProject(p); IType type = javaProject.findType(className); IFile file = null; if (type != null) { file = (IFile) type.getResource(); } else if (!getDataModel().getBooleanProperty(USE_EXISTING_CLASS)) { // If we could not find the type, the class might be in a folder that is not part of the build path. // Let's look for it using the class name and source folder (this does not work when using existing class, but // should not be a problem, because the wizard to select the existing class will not let you select class that // is not in the build path) IFolder sourceFolder = (IFolder) getDataModel().getProperty(JAVA_SOURCE_FOLDER); String packageName = getDataModel().getStringProperty(JAVA_PACKAGE); IPackageFragmentRoot packageFragmentRoot = javaProject.getPackageFragmentRoot(sourceFolder); IPackageFragment packageFragment = null; if (packageFragmentRoot != null) { packageFragment = packageFragmentRoot.getPackageFragment(packageName); } if (packageFragment != null) { ICompilationUnit cu = packageFragment.getCompilationUnit( getDataModel().getStringProperty(CLASS_NAME) + JavaModelUtil.DEFAULT_CU_SUFFIX); IResource resource = cu.getResource(); if (resource.exists() && resource instanceof IFile) { file = (IFile) resource; } } } if (file != null) { openEditor(file); } } catch (Exception cantOpen) { ServletUIPlugin.log(cantOpen); } }
From source file:org.eclipse.objectteams.otdt.core.TypeHelper.java
License:Open Source License
/** * Find a role type within a given team. * Respect inline roles and role files./*from w ww . j ava 2 s . c o m*/ * * @param teamType where to look * @param roleName what to look for * @return null in cases the type is not found */ public static IType findRoleType(IType teamType, String roleName) { IType roleType = teamType.getType(roleName); // inline roles exit here: if (roleType.exists()) return roleType; // look for a team package: // TODO(SH): does not yet account for all kinds of nesting! IJavaElement parent = teamType.getParent(); if (parent.getElementType() == IJavaElement.COMPILATION_UNIT) parent = parent.getParent(); if (parent.getElementType() == IJavaElement.PACKAGE_FRAGMENT) { IPackageFragment enclosingPackage = (IPackageFragment) parent; IPackageFragmentRoot root = (IPackageFragmentRoot) enclosingPackage.getParent(); try { IPackageFragment teamPackage = root .getPackageFragment(enclosingPackage.getElementName() + '.' + teamType.getElementName()); if (teamPackage.exists()) { // found the team package, look for the role file: IJavaElement[] cus = teamPackage.getChildren(); for (int i = 0; i < cus.length; i++) { if (cus[i].getElementType() == IJavaElement.COMPILATION_UNIT) { ICompilationUnit cu = (ICompilationUnit) cus[i]; IJavaElement[] children = cu.getChildren(); for (int j = 0; j < children.length; j++) { if (children[j].getElementType() == IJavaElement.TYPE && children[j].getElementName().equals(roleName)) { return (IType) children[j]; } } } } } } catch (JavaModelException jme) { return null; } } return null; }
From source file:org.eclipse.objectteams.otdt.internal.corext.RoleFileAdaptor.java
License:Open Source License
/** * Fetch all names of base classes referenced from the given CU. * @param astRoot start searching packages from here. * @return list of simple base class names. *//*from www. ja v a2 s.co m*/ @SuppressWarnings("unchecked") public static List<String> getRoFiBaseClassNames(CompilationUnit astRoot) { ArrayList<String> result = new ArrayList<String>(); List<AbstractTypeDeclaration> types = astRoot.types(); for (AbstractTypeDeclaration type : types) { if (type.isTeam()) { ITypeBinding typeBinding = type.resolveBinding(); String teamName = ""; //$NON-NLS-1$ if (typeBinding != null) { teamName = typeBinding.getQualifiedName(); } else { PackageDeclaration currentPackage = astRoot.getPackage(); if (currentPackage != null) teamName = currentPackage.getName().getFullyQualifiedName()+'.'; teamName += type.getName().getIdentifier(); } IJavaProject prj = astRoot.getJavaElement().getJavaProject(); try { for (IPackageFragmentRoot roots : prj.getPackageFragmentRoots()) { IPackageFragment pkg = roots.getPackageFragment(teamName); if (pkg.exists()) for (IJavaElement cu : pkg.getChildren()) if (cu.getElementType() == IJavaElement.COMPILATION_UNIT) for(IType roleType : ((org.eclipse.jdt.internal.core.CompilationUnit)cu).getTypes()) { IOTType ottype = OTModelManager.getOTElement(roleType); if (ottype != null && ottype.isRole()) { String baseClass = ((IRoleType)ottype).getBaseclassName(); if (baseClass != null) { // always remember as simple name: int lastDot = baseClass.lastIndexOf('.'); if (lastDot > -1) baseClass = baseClass.substring(lastDot+1); result.add(baseClass); } } } } } catch (JavaModelException e) { // couldn't read team package, skip. } } } return result; }
From source file:org.eclipse.objectteams.otdt.internal.refactoring.otrefactorings.rolefile.MoveToRoleFileRefactoring.java
License:Open Source License
@Override public Change createChange(IProgressMonitor pm) throws CoreException, OperationCanceledException { pm.beginTask(OTRefactoringMessages.MoveToRoleFileRefactoring_creatingChange_progress, 5); CompositeChange change = new CompositeChange(OTRefactoringMessages.MoveToRoleFileRefactoring_change_name); TextEditGroup editGroup = new TextEditGroup(OTRefactoringMessages.MoveToRoleFileRefactoring_change_name); ICompilationUnit newCuWC = null;/* w w w. j a v a 2s .c o m*/ try { // packages IPackageFragment enclosingPackage = fRoleType.getPackageFragment(); IPackageFragmentRoot root = (IPackageFragmentRoot) enclosingPackage .getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); String enclPackName = enclosingPackage.getElementName(); IPackageFragment teamPackage = root .getPackageFragment(enclPackName.length() == 0 ? fTeamType.getElementName() : enclPackName + '.' + fTeamType.getElementName()); // fetch AST for team and role: CompilationUnitRewrite cuRewrite = new CompilationUnitRewrite(fTeamCUnit); CompilationUnit teamCU = cuRewrite.getRoot(); TypeDeclaration teamNode = (TypeDeclaration) findDeclaration(teamCU, fTeamType); ASTNode roleNode = findDeclaration(teamCU, fRoleType); // new CU: if (!teamPackage.getResource().exists()) change.add(new CreatePackageChange(teamPackage)); newCuWC = teamPackage.getCompilationUnit(fRoleType.getElementName() + JavaModelUtil.DEFAULT_CU_SUFFIX) .getWorkingCopy(new SubProgressMonitor(pm, 2)); // (1) create role: // extract role source (as text): String oldSource = fTeamCUnit.getSource(); ISourceRange sourceRange = fRoleType.getSourceRange(); StringBuilder newRoleSource = new StringBuilder(); IJavaProject javaProject = fRoleType.getJavaProject(); if (StubUtility.doAddComments(javaProject)) newRoleSource.append( CodeGeneration.getFileComment(newCuWC, StubUtility.getLineDelimiterUsed(javaProject))); newRoleSource.append("\nteam package " + teamPackage.getElementName() + ";\n\n"); //$NON-NLS-1$ //$NON-NLS-2$ newRoleSource.append(getAlignedSourceBlock(javaProject, oldSource.substring(sourceRange.getOffset(), sourceRange.getOffset() + sourceRange.getLength()))); // done change #1: change.add(new CreateCompilationUnitChange(newCuWC, newRoleSource.toString(), null)); // (2) modify team: // remove role from team: ASTRewrite rewrite = cuRewrite.getASTRewrite(); ListRewrite teamMembersRewrite = rewrite.getListRewrite(teamNode, teamNode.getBodyDeclarationsProperty()); teamMembersRewrite.remove(roleNode, editGroup); // add javadoc tag '@role roleName' Javadoc teamDoc = teamNode.getJavadoc(); AST ast = teamCU.getAST(); TextElement roleName = ast.newTextElement(); roleName.setText(fRoleType.getElementName()); TagElement roleTag = ast.newTagElement(); roleTag.setTagName("@role"); //$NON-NLS-1$ roleTag.fragments().add(roleName); if (teamDoc == null) { // need to add a fresh Javadoc teamDoc = ast.newJavadoc(); teamDoc.tags().add(roleTag); rewrite.set(teamNode, teamNode.getJavadocProperty(), teamDoc, editGroup); } else { // need to insert tag into existing Javadoc ListRewrite tags = rewrite.getListRewrite(teamDoc, Javadoc.TAGS_PROPERTY); tags.insertLast(roleTag, editGroup); } // done change #2: change.add(cuRewrite.createChange(true, new SubProgressMonitor(pm, 2))); } finally { if (newCuWC != null) newCuWC.discardWorkingCopy(); } pm.done(); return change; }
From source file:org.eclipse.objectteams.otdt.internal.ui.wizards.listeners.NewTeamWizardPageListener.java
License:Open Source License
/** * Gets called when the package field has changed. The method * validates the package name and returns the status of the validation. * The validation also updates the package fragment model. * /*w w w . j a v a2 s. com*/ * @return the status of the validation */ protected IStatus validatePackage() { StatusInfo status = new StatusInfo(); updatePackageStatusLabel(); getObservedPage().getPackageDialogField().enableButton(getObservedPage().getPackageFragmentRoot() != null); String packName = getObservedPage().getPackageName(); if (packName.trim().length() > 0) { IStatus val = NewTypeWizardPage.validatePackageName(packName, getObservedPage().getJavaProject()); if (val.getSeverity() == IStatus.ERROR) { status.setError(Messages.format(NewWizardMessages.NewTypeWizardPage_error_InvalidPackageName, val.getMessage())); return status; } else if (val.getSeverity() == IStatus.WARNING) { status.setWarning(Messages.format( NewWizardMessages.NewTypeWizardPage_warning_DiscouragedPackageName, val.getMessage())); // continue } } IPackageFragmentRoot root = getObservedPage().getPackageFragmentRoot(); if (root != null) { if (root.getJavaProject().exists() && packName.trim().length() > 0) { try { IPath rootPath = root.getPath(); IPath outputPath = root.getJavaProject().getOutputLocation(); if (rootPath.isPrefixOf(outputPath) && !rootPath.equals(outputPath)) { // if the bin folder is inside of our root, dont allow to name a package // like the bin folder IPath packagePath = rootPath.append(packName.replace('.', '/')); if (outputPath.isPrefixOf(packagePath)) { status.setError(NewWizardMessages.NewTypeWizardPage_error_ClashOutputLocation); return status; } } } catch (JavaModelException ex) { OTDTUIPlugin.logException("", ex); //$NON-NLS-1$ // let pass } } getObservedPage().setPackageFragment(root.getPackageFragment(packName), true); } else { status.setError(""); //$NON-NLS-1$ } return status; }
From source file:org.eclipse.objectteams.otdt.tests.AbstractJavaModelTests.java
License:Open Source License
/** * Returns the specified package fragment in the given project and root, or * <code>null</code> if it does not exist. * The rootPath must be specified as a project relative path. The empty * path refers to the default package fragment. *///from w ww . ja va2s. c o m public IPackageFragment getPackageFragment(String projectName, String rootPath, String packageName) throws JavaModelException { IPackageFragmentRoot root = getPackageFragmentRoot(projectName, rootPath); if (root == null) { return null; } return root.getPackageFragment(packageName); }
From source file:org.eclipse.objectteams.otdt.ui.tests.core.CompletionTestSetup.java
License:Open Source License
public static IPackageFragment getAbsoluteTestPackage(IJavaProject project, String packageName) throws CoreException { IPackageFragmentRoot root = project.getPackageFragmentRoot("src"); if (!root.exists()) root = JavaProjectHelper.addSourceContainer(project, "src"); IPackageFragment fragment = root.getPackageFragment(packageName); if (!fragment.exists()) fragment = root.createPackageFragment(packageName, false, null); return fragment; }
From source file:org.eclipse.objectteams.otdt.ui.tests.core.CompletionTestSetup.java
License:Open Source License
public static IPackageFragment getAnonymousTestPackage(IJavaProject project) throws CoreException { String sourceFolder = "src" + fAnonymousSoureFolderCounter++; IPackageFragmentRoot root = project.getPackageFragmentRoot(sourceFolder); if (!root.exists()) root = JavaProjectHelper.addSourceContainer(project, sourceFolder); IPackageFragment fragment = root.getPackageFragment("test1"); if (!fragment.exists()) fragment = root.createPackageFragment("test1", false, null); return fragment; }
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. j a va2 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); }