Example usage for org.eclipse.jdt.core Signature getTypeSignatureKind

List of usage examples for org.eclipse.jdt.core Signature getTypeSignatureKind

Introduction

In this page you can find the example usage for org.eclipse.jdt.core Signature getTypeSignatureKind.

Prototype

public static int getTypeSignatureKind(String typeSignature) 

Source Link

Document

Returns the kind of type signature encoded by the given string.

Usage

From source file:at.bestsolution.fxide.jdt.corext.util.MethodOverrideTester.java

License:Open Source License

private StringBuffer internalGetSubstitutedTypeName(String typeSig, IMember context, boolean erasure,
        StringBuffer buf) throws JavaModelException {
    int sigKind = Signature.getTypeSignatureKind(typeSig);
    switch (sigKind) {
    case Signature.BASE_TYPE_SIGNATURE:
        return buf.append(Signature.toString(typeSig));
    case Signature.ARRAY_TYPE_SIGNATURE:
        internalGetSubstitutedTypeName(Signature.getElementType(typeSig), context, erasure, buf);
        for (int i = Signature.getArrayCount(typeSig); i > 0; i--) {
            buf.append('[').append(']');
        }//from  ww w  .  j  av  a  2 s . com
        return buf;
    case Signature.CLASS_TYPE_SIGNATURE: {
        String erasureSig = Signature.getTypeErasure(typeSig);
        String erasureName = Signature.getSimpleName(Signature.toString(erasureSig));

        char ch = erasureSig.charAt(0);
        if (ch == Signature.C_RESOLVED) {
            buf.append(erasureName);
        } else if (ch == Signature.C_UNRESOLVED) { // could be a type variable
            if (erasure) {
                buf.append(getVariableErasure(context, erasureName));
            } else {
                buf.append(getVariableSubstitution(context, erasureName));
            }
        } else {
            Assert.isTrue(false, "Unknown class type signature"); //$NON-NLS-1$
        }
        if (!erasure) {
            String[] typeArguments = Signature.getTypeArguments(typeSig);
            if (typeArguments.length > 0) {
                buf.append('<');
                for (int i = 0; i < typeArguments.length; i++) {
                    if (i > 0) {
                        buf.append(',');
                    }
                    internalGetSubstitutedTypeName(typeArguments[i], context, erasure, buf);
                }
                buf.append('>');
            }
        }
        return buf;
    }
    case Signature.TYPE_VARIABLE_SIGNATURE:
        String varName = Signature.toString(typeSig);
        if (erasure) {
            return buf.append(getVariableErasure(context, varName));
        } else {
            return buf.append(getVariableSubstitution(context, varName));
        }
    case Signature.WILDCARD_TYPE_SIGNATURE: {
        buf.append('?');
        char ch = typeSig.charAt(0);
        if (ch == Signature.C_STAR) {
            return buf;
        } else if (ch == Signature.C_EXTENDS) {
            buf.append(" extends "); //$NON-NLS-1$
        } else {
            buf.append(" super "); //$NON-NLS-1$
        }
        return internalGetSubstitutedTypeName(typeSig.substring(1), context, erasure, buf);
    }
    case Signature.CAPTURE_TYPE_SIGNATURE:
        return internalGetSubstitutedTypeName(typeSig.substring(1), context, erasure, buf);
    default:
        Assert.isTrue(false, "Unhandled type signature kind"); //$NON-NLS-1$
        return buf;
    }
}

From source file:at.bestsolution.fxide.jdt.text.viewersupport.JavaElementLabelComposer.java

License:Open Source License

protected void appendTypeSignatureLabel(IJavaElement enclosingElement, String typeSig, long flags) {
    int sigKind = Signature.getTypeSignatureKind(typeSig);
    switch (sigKind) {
    case Signature.BASE_TYPE_SIGNATURE:
        fBuffer.append(Signature.toString(typeSig));
        break;/*from   w w  w .j  a  v  a 2  s. co m*/
    case Signature.ARRAY_TYPE_SIGNATURE:
        appendTypeSignatureLabel(enclosingElement, Signature.getElementType(typeSig), flags);
        for (int dim = Signature.getArrayCount(typeSig); dim > 0; dim--) {
            fBuffer.append('[').append(']');
        }
        break;
    case Signature.CLASS_TYPE_SIGNATURE:
        String baseType = getSimpleTypeName(enclosingElement, typeSig);
        fBuffer.append(baseType);

        String[] typeArguments = Signature.getTypeArguments(typeSig);
        appendTypeArgumentSignaturesLabel(enclosingElement, typeArguments, flags);
        break;
    case Signature.TYPE_VARIABLE_SIGNATURE:
        fBuffer.append(getSimpleTypeName(enclosingElement, typeSig));
        break;
    case Signature.WILDCARD_TYPE_SIGNATURE:
        char ch = typeSig.charAt(0);
        if (ch == Signature.C_STAR) { //workaround for bug 85713
            fBuffer.append('?');
        } else {
            if (ch == Signature.C_EXTENDS) {
                fBuffer.append("? extends "); //$NON-NLS-1$
                appendTypeSignatureLabel(enclosingElement, typeSig.substring(1), flags);
            } else if (ch == Signature.C_SUPER) {
                fBuffer.append("? super "); //$NON-NLS-1$
                appendTypeSignatureLabel(enclosingElement, typeSig.substring(1), flags);
            }
        }
        break;
    case Signature.CAPTURE_TYPE_SIGNATURE:
        appendTypeSignatureLabel(enclosingElement, typeSig.substring(1), flags);
        break;
    case Signature.INTERSECTION_TYPE_SIGNATURE:
        String[] typeBounds = Signature.getIntersectionTypeBounds(typeSig);
        appendTypeBoundsSignaturesLabel(enclosingElement, typeBounds, flags);
        break;
    default:
        // unknown
    }
}

From source file:ca.mcgill.cs.swevo.jayfx.FastConverter.java

License:Open Source License

/**
 * Returns an IElement describing the argument Java element. Not designed to
 * be able to find initializer blocks or arrays.
 * /*from   w ww  .jav  a2s.c  o  m*/
 * @param pElement
 *            Never null.
 * @return Never null
 */
public IElement getElement(final IJavaElement pElement) throws ConversionException {
    // assert( pElement != null );
    IElement lReturn = null;

    if (pElement instanceof IType)
        lReturn = this.getClassElement((IType) pElement);
    else if (pElement instanceof IField) {
        final IElement lClass = this.getClassElement(((IField) pElement).getDeclaringType());
        lReturn = FlyweightElementFactory.getElement(Category.FIELD,
                lClass.getId() + "." + ((IField) pElement).getElementName());
    } else if (pElement instanceof IMethod) {
        final IElement lClass = this.getClassElement(((IMethod) pElement).getDeclaringType());
        String lName = ((IMethod) pElement).getElementName();
        try {
            if (((IMethod) pElement).isConstructor())
                lName = "<init>";
        } catch (final JavaModelException pException) {
            throw new ConversionException(pException);
        }
        String lSignature = "(";
        final String[] lParams = ((IMethod) pElement).getParameterTypes();
        for (int i = 0; i < lParams.length - 1; i++) {
            String param = null;
            if (Signature.getTypeSignatureKind(lParams[i]) == Signature.TYPE_VARIABLE_SIGNATURE) // its
                // a
                // type
                // variable,
                // erase
                // it.
                param = "Ljava.lang.Object;";
            else
                param = lParams[i];

            lSignature += this.resolveType(param, ((IMethod) pElement).getDeclaringType()) + ",";
        }
        if (lParams.length > 0) {
            String param = lParams[lParams.length - 1];
            if (Signature
                    .getTypeSignatureKind(Signature.getElementType(param)) == Signature.TYPE_VARIABLE_SIGNATURE) // its
                // a
                // type
                // variable,
                // erase
                // it.
                param = "Ljava.lang.Object;";
            else
                param = lParams[lParams.length - 1];

            if (param.charAt(0) == 'Q' && param.charAt(1) == 'T')
                param = "Ljava.lang.Object;";
            lSignature += this.resolveType(param, ((IMethod) pElement).getDeclaringType());
        }
        lSignature += ")";
        lReturn = FlyweightElementFactory.getElement(Category.METHOD,
                lClass.getId() + "." + lName + lSignature);
    }

    else if (pElement instanceof IAJCodeElement) {
        final String lName = ((IAJCodeElement) pElement).getElementName();
        System.out.println(lName);
    }

    if (lReturn == null) {
        System.err.println("Error with element: " + pElement);
        throw new IllegalStateException("In trouble.");
    }
    return lReturn;
}

From source file:ca.uvic.chisel.javasketch.internal.JavaSearchUtils.java

License:Open Source License

public static boolean isSimilar(IMethod method1, IMethod method2) {
    String[] myParams = method1.getParameterTypes();
    String[] theirParams = method2.getParameterTypes();
    int myParamsLength = myParams.length;
    String[] simpleNames = new String[myParamsLength];
    for (int i = 0; i < myParamsLength; i++) {
        String erasure = Signature.getTypeErasure(myParams[i]);
        simpleNames[i] = Signature.getSimpleName(Signature.toString(erasure));
    }//from  w w w  . j a v  a 2s . c  om
    String name = method1.getElementName();
    if (name.equals(method2.getElementName())) {

        if (myParamsLength == theirParams.length) {
            for (int i = 0; i < myParamsLength; i++) {

                String mySimpleName = simpleNames[i];
                String simpleName2 = Signature
                        .getSimpleName(Signature.toString(Signature.getTypeErasure(theirParams[i])));
                //first, check for generics. If my param is not generic,
                //but theirs is, it is a match.
                int myTypeKind = Signature.getTypeSignatureKind(myParams[i]);
                int theirTypeKind = Signature.getTypeSignatureKind(theirParams[i]);
                switch (theirTypeKind) {
                case Signature.TYPE_VARIABLE_SIGNATURE:
                case Signature.WILDCARD_TYPE_SIGNATURE:
                case Signature.CAPTURE_TYPE_SIGNATURE:
                    switch (myTypeKind) {
                    case Signature.CLASS_TYPE_SIGNATURE:
                    case Signature.ARRAY_TYPE_SIGNATURE:
                        continue;
                    }
                }
                //otherwise, try and match exactly
                if (!mySimpleName.equals(simpleName2)) {
                    return false;
                }
            }
            return true;
        }
    }
    return false;
}

From source file:com.codenvy.ide.ext.java.server.SourcesFromBytecodeGenerator.java

License:Open Source License

protected void appendTypeSignatureLabel(IJavaElement enclosingElement, String typeSig, long flags,
        StringBuilder builder) {/*from  w  ww .jav  a  2  s . com*/
    int sigKind = Signature.getTypeSignatureKind(typeSig);
    switch (sigKind) {
    case Signature.BASE_TYPE_SIGNATURE:
        builder.append(Signature.toString(typeSig));
        break;
    case Signature.ARRAY_TYPE_SIGNATURE:
        appendTypeSignatureLabel(enclosingElement, Signature.getElementType(typeSig), flags, builder);
        for (int dim = Signature.getArrayCount(typeSig); dim > 0; dim--) {
            builder.append('[').append(']');
        }
        break;
    case Signature.CLASS_TYPE_SIGNATURE:
        String baseType = getSimpleTypeName(enclosingElement, typeSig);
        builder.append(baseType);

        String[] typeArguments = Signature.getTypeArguments(typeSig);
        appendTypeArgumentSignaturesLabel(enclosingElement, typeArguments, flags, builder);
        break;
    case Signature.TYPE_VARIABLE_SIGNATURE:
        builder.append(getSimpleTypeName(enclosingElement, typeSig));
        break;
    case Signature.WILDCARD_TYPE_SIGNATURE:
        char ch = typeSig.charAt(0);
        if (ch == Signature.C_STAR) { //workaround for bug 85713
            builder.append('?');
        } else {
            if (ch == Signature.C_EXTENDS) {
                builder.append("? extends "); //$NON-NLS-1$
                appendTypeSignatureLabel(enclosingElement, typeSig.substring(1), flags, builder);
            } else if (ch == Signature.C_SUPER) {
                builder.append("? super "); //$NON-NLS-1$
                appendTypeSignatureLabel(enclosingElement, typeSig.substring(1), flags, builder);
            }
        }
        break;
    case Signature.CAPTURE_TYPE_SIGNATURE:
        appendTypeSignatureLabel(enclosingElement, typeSig.substring(1), flags, builder);
        break;
    case Signature.INTERSECTION_TYPE_SIGNATURE:
        String[] typeBounds = Signature.getIntersectionTypeBounds(typeSig);
        appendTypeBoundsSignaturesLabel(enclosingElement, typeBounds, flags, builder);
        break;
    default:
        // unknown
    }
}

From source file:com.google.gdt.eclipse.appengine.rpc.util.CompilationUnitCreator.java

License:Open Source License

private boolean addImport(Set<String> names, List<String> entityNameList,
        IImportDeclaration[] importDeclarations, ImportsManager imports) {
    boolean addedImport = false;
    for (String name : names) {
        if (Signature.getTypeSignatureKind(name) == Signature.CLASS_TYPE_SIGNATURE) {
            if (entityNameList.contains(Signature.toString(name))) {
                addedImport = true;/* ww w.  jav a 2s .  c o m*/
            } else {
                for (IImportDeclaration imp : importDeclarations) {
                    if (imp.getElementName().contains(Signature.toString(name))) {
                        imports.addImport(imp.getElementName());
                    }
                }
            }
        }
    }
    return addedImport;
}

From source file:com.google.gdt.eclipse.appengine.rpc.util.JavaUtils.java

License:Open Source License

private static List<String> getElementSignatures(String typeName) {
    List<String> list = new ArrayList<String>();
    if (Signature.getTypeSignatureKind(typeName) == Signature.ARRAY_TYPE_SIGNATURE) {
        list.add(Signature.getElementType(typeName));
    } else {//from   ww  w .j a va  2s . c om
        String[] names = Signature.getTypeArguments(typeName);
        list.add(Signature.getTypeErasure(typeName));
        if (names.length > 0) {
            list.add(names[0]);
        }
    }
    return list;
}

From source file:com.google.gdt.eclipse.appengine.rpc.wizards.helpers.RpcServiceLayerCreator.java

License:Open Source License

private boolean addImport(List<String> names, List<String> entityNameList,
        IImportDeclaration[] importDeclarations, ImportsManager imports) {
    boolean addedImport = false;
    for (String name : names) {
        if (Signature.getTypeSignatureKind(name) == Signature.CLASS_TYPE_SIGNATURE) {
            if (entityNameList.contains(Signature.toString(name))) {
                addedImport = true;//www . j  a va 2  s.  c o  m
            } else {
                for (IImportDeclaration imp : importDeclarations) {
                    if (imp.getElementName().contains(Signature.toString(name))) {
                        imports.addImport(imp.getElementName());
                    }
                }
            }
        }
    }
    return addedImport;
}

From source file:com.google.gdt.eclipse.appengine.rpc.wizards.helpers.RpcServiceLayerCreator.java

License:Open Source License

private String[] getElementSignatures(String typeName) {
    if (Signature.getTypeSignatureKind(typeName) == Signature.ARRAY_TYPE_SIGNATURE) {
        return new String[] { Signature.getElementType(typeName) };
    } else {//from w  w w. j  a  v a2  s .c  om
        String[] names = Signature.getTypeArguments(typeName);
        List<String> list = new ArrayList<String>();
        list.add(Signature.getTypeErasure(typeName));
        if (names.length > 0) {
            list.add(names[0]);
        }
        return list.toArray(new String[list.size()]);
    }
}

From source file:com.google.gwt.eclipse.core.search.JsniJavaRefParamType.java

License:Open Source License

public static JsniJavaRefParamType parse(IPath source, int offset, String paramTypeString) {
    // Minimal class type signature is of form "LClassName;"
    if (paramTypeString.length() < 3 || !paramTypeString.endsWith(";")) {
        return null;
    }//from   w w  w  .  j  a v a 2 s.  c  o m

    // We only consider class types (no primitives)
    if (Signature.getTypeSignatureKind(paramTypeString) != Signature.CLASS_TYPE_SIGNATURE) {
        return null;
    }

    return new JsniJavaRefParamType(source, offset, paramTypeString);
}