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

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

Introduction

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

Prototype

IPackageFragment getPackageFragment(String packageName);

Source Link

Document

Returns the package fragment with the given package name.

Usage

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);
}