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

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

Introduction

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

Prototype

String getElementName();

Source Link

Document

Returns the name of this element.

Usage

From source file:org.eclipse.objectteams.otdt.internal.ui.packageview.PackageExplorerAdaptor.ContentProvider.java

License:Open Source License

@SuppressWarnings("nls")
    public static boolean isGenerated(IJavaElement elem) {
        // TODO (SH): check whether ViewerFilters can do the job better.

        // all kinds of generated features determined by name:
        String name = elem.getElementName();
        final String[] patterns = new String[] { "_OT$", "TSuper__OT__", // general OT-prefix 
                "class$", "access$", "val$", "this$" // std. java synthetics.
        };/*w  w w  .  j av a  2 s. com*/
        for (int i = 0; i < patterns.length; i++) {
            if (name.indexOf(patterns[i]) >= 0)
                return true;
        }

        switch (elem.getElementType()) {
        case IJavaElement.TYPE:
        case IOTJavaElement.ROLE:
            // Predifined role types (non-overridable)?
            final String[] fullPatterns = new String[] { "IConfined", "Confined", "__OT__Confined", "ILowerable", // special OT types       
            };
            for (int i = 0; i < fullPatterns.length; i++) {
                if (name.equals(fullPatterns[i]))
                    return true;
            }
            break;
        case IJavaElement.METHOD:
            // tsuper-method?
            IMethod method = (IMethod) elem;
            String[] paramTypes = method.getParameterTypes();
            if (paramTypes.length > 0) {
                String lastType = Signature.getSimpleName(Signature.toString(paramTypes[paramTypes.length - 1]));
                if (lastType.startsWith("TSuper__OT__"))
                    return true;
            }
            break;
        }

        // Synthetic role interface?
        if (elem.getElementType() == IOTJavaElement.ROLE) {
            IType type = (IType) elem;
            try {
                if (Flags.isSynthetic(type.getFlags()))
                    return true;
            } catch (JavaModelException ex) {
                // nop
            }
        }
        return false;
    }

From source file:org.eclipse.objectteams.otdt.internal.ui.viewsupport.TeamPackageUtil.java

License:Open Source License

/**
 * If aPackage is a team package answer the corresponding team compilation unit
 * //w  ww. j  a va  2 s.  co  m
 * @param aPackage
 * @return a team unit or null.
 * @throws JavaModelException
 */
public static ICompilationUnit getTeamUnit(IPackageFragment aPackage) throws JavaModelException {
    ICompilationUnit[] units = aPackage.getCompilationUnits();
    if (units != null && units.length > 0) {
        IType firstType = JavaElementUtil.getMainType(units[0]);
        IOTType otType = OTModelManager.getOTElement(firstType);
        if (otType != null && otType.isRole()) {
            String unitName = aPackage.getPath().lastSegment() + ".java"; //$NON-NLS-1$
            IPackageFragment enclosingPackage = JavaElementUtil.getParentSubpackage(aPackage);
            if (enclosingPackage != null) {
                return enclosingPackage.getCompilationUnit(unitName);
            } else {
                // if parent is already the root, then we have a team in the default package, yacks.
                // need to travel one up, two down:
                IPackageFragmentRoot root = (IPackageFragmentRoot) aPackage.getParent();
                for (IJavaElement fragment : root.getChildren()) {
                    if (fragment.getElementName() == IPackageFragment.DEFAULT_PACKAGE_NAME)
                        for (IJavaElement element : ((IPackageFragment) fragment).getChildren())
                            if (element.getElementType() == IJavaElement.COMPILATION_UNIT)
                                if (element.getElementName().equals(unitName))
                                    return (ICompilationUnit) element;
                }
            }
        }
    }
    return null;
}

From source file:org.eclipse.objectteams.otdt.internal.ui.wizards.listeners.NewRoleWizardPageListener.java

License:Open Source License

IStatus validateBaseClassName(IType enclosingType, String name) {
    IStatus warning = null;/*from  w  ww .ja  v  a 2  s .  c  o m*/
    while (enclosingType != null) {
        if (name.equals(enclosingType.getElementName()) && warning == null) {
            warning = new StatusInfo(StatusInfo.WARNING,
                    Messages.format(OTNewWizardMessages.NewRole_base_class_equals_enclosing,
                            new Object[] { name, getObservedPage().getTypeName() }));
        }
        try {
            for (IJavaElement member : enclosingType.getChildren()) {
                if (member.getElementType() == OTJavaElement.ROLE && member.getElementName().equals(name))
                    return new StatusInfo(StatusInfo.ERROR,
                            Messages.format(OTNewWizardMessages.NewRole_base_class_equals_member, name));
            }
        } catch (JavaModelException e) {
            /* nop */ }
        enclosingType = enclosingType.getDeclaringType();
    }
    return warning != null ? warning : StatusInfo.OK_STATUS;
}

From source file:org.eclipse.objectteams.otdt.tests.otmodel.role.bound.torole.LayeredTeamsTests.java

License:Open Source License

public void testAnchoredCalloutSignature() throws Exception {
    getTestSetting().setTeamClass("Team_4");
    getTestSetting().setUp();//  ww w . ja  v  a 2s .c om
    performTest("TeamB.java", "TeamB", getTestSetting().getRoleJavaElement());
    for (IJavaElement member : _roleOTElem.getChildren()) {
        if (member.getElementType() == IOTJavaElement.CALLOUT_MAPPING) {
            assertEquals("Callout signature not as expected",
                    "isEqual(LowerRole<@teamB>) -> isEqual(LowerRole<@teamB>)", member.getElementName());
        }
    }
}

From source file:org.eclipse.objectteams.otdt.ui.tests.hierarchy.contentprovider.TreeNode.java

License:Open Source License

private void toString(StringBuffer buf, int indent) {
    for (int i = 0; i < indent; i++)
        buf.append(' ');
    IJavaElement element = (IJavaElement) this._element;
    buf.append(element.getParent().getElementName()).append('.').append(element.getElementName()).append('\n');
    for (Entry<Object, TreeNode> e : this._children.entrySet())
        e.getValue().toString(buf, 4);/*from   ww w  . j  av a  2 s  .  c o  m*/
}

From source file:org.eclipse.objectteams.otdt.ui.Util.java

License:Open Source License

/** 
 * Is the given java element generated by the compiler (i.e., synthetic)?
 * This function operates on all kinds of java elements applying appropriate
 * heuristics (mostly name based). /*from   w  w  w . jav a2 s. c  o  m*/
 * @param elem
 * @return
 */
@SuppressWarnings("nls")
public static boolean isGenerated(IJavaElement elem) {
    // TODO (SH): check whether ViewerFilters can do the job better.

    // all kinds of generated features determined by name:
    String name = elem.getElementName();
    final String[] patterns = new String[] { "_OT$", "TSuper__OT__", // general OT-prefix 
            "class$", "access$", "val$", "this$" // std. java synthetics.
    };
    for (int i = 0; i < patterns.length; i++) {
        if (name.indexOf(patterns[i]) >= 0)
            return true;
    }

    switch (elem.getElementType()) {
    case IJavaElement.TYPE:
    case IOTJavaElement.ROLE:
        // Predefined role types (non-overridable)?
        final String[] fullPatterns = new String[] { "IConfined", "Confined", "__OT__Confined", "ILowerable", // special OT types       
        };
        for (int i = 0; i < fullPatterns.length; i++) {
            if (name.equals(fullPatterns[i]))
                return true;
        }
        break;
    case IJavaElement.METHOD:
        // tsuper-method?
        IMethod method = (IMethod) elem;
        String[] paramTypes = method.getParameterTypes();
        if (paramTypes.length > 0) {
            String lastType = Signature.getSimpleName(Signature.toString(paramTypes[paramTypes.length - 1]));
            if (lastType.startsWith("TSuper__OT__"))
                return true;
        }
        break;
    }

    // Synthetic role interface?
    if (elem.getElementType() == IOTJavaElement.ROLE) {
        IType type = (IType) elem;
        try {
            if (Flags.isSynthetic(type.getFlags()))
                return true;
        } catch (JavaModelException ex) {
            // nop
        }
    }
    return false;
}

From source file:org.eclipse.pde.api.tools.internal.ApiDescriptionManager.java

License:Open Source License

/**
 * Flushes the changed element from the model cache
 * //from   w  w w  .  j a v  a  2 s . c  om
 * @param element
 */
void flushElementCache(IJavaElement element) {
    switch (element.getElementType()) {
    case IJavaElement.COMPILATION_UNIT: {
        ICompilationUnit unit = (ICompilationUnit) element;
        IType type = unit.findPrimaryType();
        if (type != null) {
            ApiModelCache.getCache().removeElementInfo(ApiBaselineManager.WORKSPACE_API_BASELINE_ID,
                    element.getJavaProject().getElementName(), type.getFullyQualifiedName(), IApiElement.TYPE);
        }
        break;
    }
    case IJavaElement.JAVA_PROJECT: {
        ApiModelCache.getCache().removeElementInfo(ApiBaselineManager.WORKSPACE_API_BASELINE_ID,
                element.getElementName(), null, IApiElement.COMPONENT);
        break;
    }
    default:
        break;
    }
}

From source file:org.eclipse.pde.api.tools.internal.ApiDescriptionManager.java

License:Open Source License

private void restoreNode(ProjectApiDescription apiDesc, Element element, ManifestNode parentNode,
        Map<IElementDescriptor, ManifestNode> childrenMap) throws CoreException {
    ManifestNode node = null;//www.j av a2 s  . c  o  m
    IElementDescriptor elementDesc = null;
    if (element.getTagName().equals(IApiXmlConstants.ELEMENT_PACKAGE)) {
        int vis = getInt(element, IApiXmlConstants.ATTR_VISIBILITY);
        int res = getInt(element, IApiXmlConstants.ATTR_RESTRICTIONS);
        // collect fragments
        List<IJavaElement> fragments = new ArrayList<IJavaElement>();
        NodeList childNodes = element.getChildNodes();
        String pkgName = null;
        for (int i = 0; i < childNodes.getLength(); i++) {
            Node child = childNodes.item(i);
            if (child.getNodeType() == Node.ELEMENT_NODE) {
                if (((Element) child).getTagName().equals(IApiXmlConstants.ELEMENT_PACKAGE_FRAGMENT)) {
                    Element fragment = (Element) child;
                    String handle = fragment.getAttribute(IApiXmlConstants.ATTR_HANDLE);
                    IJavaElement je = JavaCore.create(handle);
                    if (je.getElementType() != IJavaElement.PACKAGE_FRAGMENT) {
                        abort(ScannerMessages.ApiDescriptionManager_2 + handle, null);
                    }
                    pkgName = je.getElementName();
                    fragments.add(je);
                }
            }
        }
        if (!fragments.isEmpty()) {
            elementDesc = Factory.packageDescriptor(pkgName);
            node = apiDesc.newPackageNode(fragments.toArray(new IPackageFragment[fragments.size()]), parentNode,
                    elementDesc, vis, res);
        } else {
            abort(ScannerMessages.ApiDescriptionManager_2, null);
        }
    } else if (element.getTagName().equals(IApiXmlConstants.ELEMENT_PACKAGE_FRAGMENT)) {
        return; // nothing to do
    } else if (element.getTagName().equals(IApiXmlConstants.ELEMENT_TYPE)) {
        String handle = element.getAttribute(IApiXmlConstants.ATTR_HANDLE);
        int vis = getInt(element, IApiXmlConstants.ATTR_VISIBILITY);
        int res = getInt(element, IApiXmlConstants.ATTR_RESTRICTIONS);
        IJavaElement je = JavaCore.create(handle);
        if (je.getElementType() != IJavaElement.TYPE) {
            abort(ScannerMessages.ApiDescriptionManager_3 + handle, null);
        }
        IType type = (IType) je;
        elementDesc = Factory.typeDescriptor(type.getFullyQualifiedName('$'));
        TypeNode tn = apiDesc.newTypeNode(type, parentNode, elementDesc, vis, res);
        node = tn;
        tn.fTimeStamp = getLong(element, IApiXmlConstants.ATTR_MODIFICATION_STAMP);
    } else if (element.getTagName().equals(IApiXmlConstants.ELEMENT_FIELD)) {
        if (parentNode.element instanceof IReferenceTypeDescriptor) {
            IReferenceTypeDescriptor type = (IReferenceTypeDescriptor) parentNode.element;
            int vis = getInt(element, IApiXmlConstants.ATTR_VISIBILITY);
            int res = getInt(element, IApiXmlConstants.ATTR_RESTRICTIONS);
            String name = element.getAttribute(IApiXmlConstants.ATTR_NAME);
            elementDesc = type.getField(name);
            node = apiDesc.newNode(parentNode, elementDesc, vis, res);
        }
    } else if (element.getTagName().equals(IApiXmlConstants.ELEMENT_METHOD)) {
        if (parentNode.element instanceof IReferenceTypeDescriptor) {
            IReferenceTypeDescriptor type = (IReferenceTypeDescriptor) parentNode.element;
            int vis = getInt(element, IApiXmlConstants.ATTR_VISIBILITY);
            int res = getInt(element, IApiXmlConstants.ATTR_RESTRICTIONS);
            String name = element.getAttribute(IApiXmlConstants.ATTR_NAME);
            String sig = element.getAttribute(IApiXmlConstants.ATTR_SIGNATURE);
            if (sig.indexOf('.') != -1) {
                // old files might use '.' instead of '/'
                sig = sig.replace('.', '/');
            }
            elementDesc = type.getMethod(name, sig);
            node = apiDesc.newNode(parentNode, elementDesc, vis, res);
        }
    }
    if (node != null) {
        childrenMap.put(elementDesc, node);
        restoreChildren(apiDesc, element, node, node.children);
    } else {
        abort(ScannerMessages.ApiDescriptionManager_4, null);
    }
}

From source file:org.eclipse.pde.api.tools.internal.ProjectApiDescription.java

License:Open Source License

private IElementDescriptor getElementDescriptor(IJavaElement element) {
    switch (element.getElementType()) {
    case IJavaElement.PACKAGE_FRAGMENT:
        return Factory.packageDescriptor(element.getElementName());
    case IJavaElement.TYPE:
        return Factory.typeDescriptor(((IType) element).getFullyQualifiedName('$'));
    default://  w w  w .  jav a  2 s  .co m
        return null;
    }
}

From source file:org.eclipse.pde.ds.internal.annotations.AnnotationProcessor.java

License:Open Source License

@Override
public void acceptAST(ICompilationUnit source, CompilationUnit ast) {
    // determine CU key
    String cuKey;//from   w  w w  . j ava  2 s . co  m
    IJavaElement parent = source.getParent();
    if (parent == null)
        cuKey = source.getElementName();
    else
        cuKey = String.format("%s/%s", parent.getElementName().replace('.', '/'), source.getElementName()); //$NON-NLS-1$

    context.getUnprocessed().remove(cuKey);

    ProjectState state = context.getState();
    HashMap<String, String> dsKeys = new HashMap<>();
    HashSet<DSAnnotationProblem> problems = new HashSet<>();

    ast.accept(new AnnotationVisitor(this, state, dsKeys, problems));

    // track abandoned files (may be garbage)
    Collection<String> oldDSKeys = state.updateMappings(cuKey, dsKeys);
    if (oldDSKeys != null) {
        oldDSKeys.removeAll(dsKeys.values());
        context.getAbandoned().addAll(oldDSKeys);
    }

    if (!problems.isEmpty()) {
        char[] filename = source.getResource().getFullPath().toString().toCharArray();
        for (DSAnnotationProblem problem : problems) {
            problem.setOriginatingFileName(filename);
            if (problem.getSourceStart() >= 0)
                problem.setSourceLineNumber(ast.getLineNumber(problem.getSourceStart()));
        }

        BuildContext buildContext = fileMap.get(source);
        if (buildContext != null)
            buildContext.recordNewProblems(problems.toArray(new CategorizedProblem[problems.size()]));
    }
}