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

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

Introduction

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

Prototype

int BASE_TYPE_SIGNATURE

To view the source code for org.eclipse.jdt.core Signature BASE_TYPE_SIGNATURE.

Click Source Link

Document

Kind constant for a base (primitive or void) type signature.

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 w  ww .j  a  va 2s  .co  m*/
        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;// ww  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:com.codenvy.ide.ext.java.server.SourcesFromBytecodeGenerator.java

License:Open Source License

protected void appendTypeSignatureLabel(IJavaElement enclosingElement, String typeSig, long flags,
        StringBuilder builder) {/*  w w w . j  ava  2  s  . c  o m*/
    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.inject.tools.ideplugin.eclipse.TypeUtil.java

License:Open Source License

/**
 * Resolve typeSignature in the context of owningType.  This method will return 
 * a type erased signture if eraseTypeParameters == true and will attempt to
 * resolve and include parameters if eraseTypeParamters == false
 * /*from   w  w w .  j av a2s .  c o m*/
 * NOTE: special rules apply to the way unresolved type parameters and wildcards
 * are resolved:
 * 
 * 1) If a fully unresolved type parameter is found, then it will be replaced with Ljava.lang.Object;
 * 
 * i.e.  List<T>  -> Ljava.util.List<Ljava.lang.Object;>;  for any unresolved T.
 * 
 * 2) Any bounded wildcard will be replaced by the bound:
 * 
 * i.e. List<? extends String> -> Ljava.util.List<Ljava.lang.String;>;
 * i.e. List<? super String> -> Ljava.util.List<Ljava.lang.String;>;
 * 
 * Note limitation here: bounds that use 'super' will take the "best case" scenario that the list
 * type is of that type.
 * 
 * 3) The unbounded wildcard will be replaced by Ljava.lang.Object;
 * 
 * i.e. List<?> -> Ljava.util.List<Ljava.lang.Object;>;
 * 
 * 
 * The reason for this substition is to return the most accurate reasonable approximation
 * of the type within what is known by owningType
 * 
 * @param owningType
 * @param typeSignature
 * @param eraseTypeParameters if set to false, type parameters are resolved included
 * in the signature
 * @return the resolved type signature for typeSignature in owningType or
 * typeSignature unchanged if cannot resolve.
 */
public static String resolveTypeSignature(final IType owningType, final String typeSignature,
        boolean eraseTypeParameters) {
    final int sigKind = Signature.getTypeSignatureKind(typeSignature);

    switch (sigKind) {
    case Signature.BASE_TYPE_SIGNATURE:
        return typeSignature;

    case Signature.ARRAY_TYPE_SIGNATURE: {
        final String elementType = Signature.getElementType(typeSignature);

        if (Signature.getTypeSignatureKind(elementType) == Signature.BASE_TYPE_SIGNATURE) {
            return typeSignature;
        }

        final String resolvedElementType = resolveSignatureRelative(owningType, elementType,
                eraseTypeParameters);
        String resultType = ""; //$NON-NLS-1$
        for (int i = 0; i < Signature.getArrayCount(typeSignature); i++) {
            resultType += Signature.C_ARRAY;
        }

        return resultType + resolvedElementType;
    }

    case Signature.TYPE_VARIABLE_SIGNATURE:
        return resolveSignatureRelative(owningType, typeSignature, eraseTypeParameters);

    case Signature.CLASS_TYPE_SIGNATURE:
        return resolveSignatureRelative(owningType, typeSignature, eraseTypeParameters);

    case Signature.WILDCARD_TYPE_SIGNATURE:
        // strip the wildcard and try again.  Too bad Signature doesn't seem to have a method
        // for this
        if (typeSignature.charAt(0) == Signature.C_STAR) {
            return TypeConstants.TYPE_JAVAOBJECT;
        }
        return resolveTypeSignature(owningType, typeSignature.substring(1), eraseTypeParameters);

    case Signature.CAPTURE_TYPE_SIGNATURE:
        // strip the capture and try again
        return resolveTypeSignature(owningType, Signature.removeCapture(typeSignature), eraseTypeParameters);
    //      case Signature.TYPE_VARIABLE_SIGNATURE:
    //      resolveSignatureRelative(owningType, typeSignature, eraseTypeParameters);

    default:
        return typeSignature;
    }
}

From source file:edu.uci.ics.sourcerer.extractor.ast.ClassFileExtractor.java

License:Open Source License

private static String typeSignatureToFqn(String signature) {
    try {//from  w w  w . j ava2s . com
        switch (Signature.getTypeSignatureKind(signature)) {
        case Signature.ARRAY_TYPE_SIGNATURE:
            return typeSignatureToFqn(Signature.getElementType(signature))
                    + brackets.substring(0, 2 * Signature.getArrayCount(signature));
        case Signature.CLASS_TYPE_SIGNATURE:
            String args[] = Signature.getTypeArguments(signature);
            if (args.length == 0) {
                int firstDollar = signature.indexOf('$');
                if (firstDollar == -1) {
                    return Signature.getSignatureQualifier(signature) + "."
                            + Signature.getSignatureSimpleName(signature);
                } else {
                    String shortSig = signature.substring(0, firstDollar) + ";";
                    return Signature.getSignatureQualifier(shortSig) + "."
                            + Signature.getSignatureSimpleName(shortSig)
                            + signature.substring(firstDollar, signature.length() - 1);
                }
            } else {
                StringBuilder fqnBuilder = new StringBuilder(
                        typeSignatureToFqn(Signature.getTypeErasure(signature)));
                fqnBuilder.append('<');
                boolean first = true;
                for (String arg : args) {
                    if (first) {
                        first = false;
                    } else {
                        fqnBuilder.append(',');
                    }
                    fqnBuilder.append(typeSignatureToFqn(arg));
                }
                fqnBuilder.append('>');
                return fqnBuilder.toString();
            }
        case Signature.BASE_TYPE_SIGNATURE:
            return Signature.getSignatureSimpleName(signature);
        case Signature.TYPE_VARIABLE_SIGNATURE:
            return "<" + Signature.getSignatureSimpleName(signature) + ">";
        case Signature.WILDCARD_TYPE_SIGNATURE:
            if (signature.startsWith("+")) {
                return "<?+" + typeSignatureToFqn(signature.substring(1)) + ">";
            } else if (signature.startsWith("-")) {
                return "<?-" + typeSignatureToFqn(signature.substring(1)) + ">";
            } else {
                return "<?>";
            }
        case Signature.CAPTURE_TYPE_SIGNATURE:
            System.out.println("eek");
            return "";
        default:
            throw new IllegalArgumentException("Not a valid type signature");
        }
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println("bad");
        return null;
    }
}

From source file:edu.uci.ics.sourcerer.tools.java.extractor.eclipse.ClassFileExtractor.java

License:Open Source License

private static String typeSignatureToFqn(String signature) {
    try {/*from ww w .j a v a2s  . c o m*/
        switch (Signature.getTypeSignatureKind(signature)) {
        case Signature.ARRAY_TYPE_SIGNATURE:
            return typeSignatureToFqn(Signature.getElementType(signature))
                    + brackets.substring(0, 2 * Signature.getArrayCount(signature));
        case Signature.CLASS_TYPE_SIGNATURE:
            if (signature.indexOf('<') == -1) {
                int firstDollar = signature.indexOf('$');
                if (firstDollar == -1) {
                    return Signature.getSignatureQualifier(signature) + "."
                            + Signature.getSignatureSimpleName(signature);
                } else {
                    String shortSig = signature.substring(0, firstDollar) + ";";
                    return Signature.getSignatureQualifier(shortSig) + "."
                            + Signature.getSignatureSimpleName(shortSig)
                            + signature.substring(firstDollar, signature.length() - 1);
                }
            } else {
                StringBuilder fqnBuilder = new StringBuilder();
                StringBuilder current = new StringBuilder();
                int depth = 0;
                boolean dollar = false;
                for (char c : signature.toCharArray()) {
                    switch (c) {
                    case '<':
                        if (fqnBuilder.length() == 0) {
                            current.append(';');
                            fqnBuilder.append(typeSignatureToFqn(current.toString()));
                            current.setLength(current.length() - 1);
                        }
                        current.append(c);
                        depth++;
                        break;
                    case '>':
                        current.append(c);
                        if (--depth == 0) {
                            dollar = true;
                            fqnBuilder.append('<');
                            boolean first = true;
                            current.append(";");
                            for (String arg : Signature.getTypeArguments(current.toString())) {
                                if (first) {
                                    first = false;
                                } else {
                                    fqnBuilder.append(',');
                                }
                                fqnBuilder.append(typeSignatureToFqn(arg));
                            }
                            current.setLength(current.length() - 1);
                            fqnBuilder.append('>');
                        }
                        break;
                    case '.':
                        if (dollar && depth == 0) {
                            fqnBuilder.append('$');
                        }
                        current.append(c);
                        break;
                    default:
                        if (dollar && depth == 0) {
                            fqnBuilder.append(c);
                        }
                        current.append(c);
                        break;
                    }
                }
                fqnBuilder.setLength(fqnBuilder.length() - 1);
                return fqnBuilder.toString();
            }
        case Signature.BASE_TYPE_SIGNATURE:
            return Signature.getSignatureSimpleName(signature);
        case Signature.TYPE_VARIABLE_SIGNATURE:
            return "<" + Signature.getSignatureSimpleName(signature) + ">";
        case Signature.WILDCARD_TYPE_SIGNATURE:
            if (signature.startsWith("+")) {
                return "<?+" + typeSignatureToFqn(signature.substring(1)) + ">";
            } else if (signature.startsWith("-")) {
                return "<?-" + typeSignatureToFqn(signature.substring(1)) + ">";
            } else {
                return "<?>";
            }
        case Signature.CAPTURE_TYPE_SIGNATURE:
            System.out.println("eek");
            return "";
        default:
            throw new IllegalArgumentException("Not a valid type signature");
        }
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println("bad");
        return null;
    }
}

From source file:fr.atelechev.buildergen.generator.JavaTypeResolver.java

License:Open Source License

private boolean isPrimitiveTypeSignature(String typeSignature) {
    return Signature.getTypeSignatureKind(typeSignature) == Signature.BASE_TYPE_SIGNATURE;
}

From source file:net.sf.j2s.core.astvisitors.Bindings.java

License:Open Source License

private static boolean sameParameter(ITypeBinding type, String candidate, IType scope)
        throws JavaModelException {
    if (type.getDimensions() != Signature.getArrayCount(candidate))
        return false;

    // Normalizes types
    if (type.isArray())
        type = type.getElementType();//w w w .  ja  v  a 2 s .  co  m
    candidate = Signature.getElementType(candidate);

    if ((Signature.getTypeSignatureKind(candidate) == Signature.BASE_TYPE_SIGNATURE) != type.isPrimitive()) {
        return false;
    }

    if (type.isPrimitive() || type.isTypeVariable()) {
        return type.getName().equals(Signature.toString(candidate));
    } else {
        // normalize (quick hack until binding.getJavaElement works)
        candidate = Signature.getTypeErasure(candidate);
        type = type.getErasure();

        if (candidate.charAt(Signature.getArrayCount(candidate)) == Signature.C_RESOLVED) {
            return Signature.toString(candidate).equals(Bindings.getFullyQualifiedName(type));
        } else {
            String[][] qualifiedCandidates = scope.resolveType(Signature.toString(candidate));
            if (qualifiedCandidates == null || qualifiedCandidates.length == 0)
                return false;
            String packageName = type.getPackage().isUnnamed() ? "" : type.getPackage().getName(); //$NON-NLS-1$
            String typeName = getTypeQualifiedName(type);
            for (int i = 0; i < qualifiedCandidates.length; i++) {
                String[] qualifiedCandidate = qualifiedCandidates[i];
                if (qualifiedCandidate[0].equals(packageName) && qualifiedCandidate[1].equals(typeName))
                    return true;
            }
        }
    }
    return false;
}

From source file:org.eclipse.e4.demo.simpleide.jdt.internal.editor.viewer.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 ww w .  j av  a2  s  . c o 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, Signature.getTypeErasure(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;
    default:
        // unknown
    }
}

From source file:org.eclipse.jpt.jpa.eclipselink.ui.internal.entity.data.model.EclipseLinkDynamicEntityDataModelProvider.java

License:Open Source License

private String checkInputFieldsAttributeTypeValidity(List<EclipseLinkDynamicEntityField> fields) {
    IStatus validateFieldTypeStatus = Status.OK_STATUS;
    for (EclipseLinkDynamicEntityField field : fields) {
        // don't validate attribute type for a fields that is with single relationship mapping type
        if (this.getAttributeMappingDefinition(field.getMappingType().getKey()).isSingleRelationshipMapping()) {
            continue;
        }/* w  ww.  j a  v a  2s . c  o  m*/
        if (field.isKey() && !field.couldTypeBePKType()) {
            validateFieldTypeStatus = JptJpaEclipseLinkUiPlugin.instance().buildErrorStatus(
                    JptJpaEclipseLinkUiMessages.ECLIPSELINK_DYNAMIC_ENTITY_WIZARD_INVALID_PK_TYPE,
                    field.getFqnAttributeType());
            break;
        }
        String sig = null;
        try {
            sig = Signature.createTypeSignature(field.getFqnAttributeType(), true);
        } catch (IllegalArgumentException e) {
            validateFieldTypeStatus = JptJpaEclipseLinkUiPlugin.instance().buildErrorStatus(
                    JptJpaEclipseLinkUiMessages.ECLIPSELINK_DYNAMIC_ENTITY_WIZARD_INVALID_ARGUMENT,
                    e.getLocalizedMessage());
            break;
        }
        if (sig == null) {
            validateFieldTypeStatus = JavaConventions.validateJavaTypeName(field.getAttributeType(),
                    JavaCore.VERSION_1_5, JavaCore.VERSION_1_5);
            break;
        }
        int sigType = Signature.getTypeSignatureKind(sig);
        if (sigType == Signature.BASE_TYPE_SIGNATURE) {
            continue;
        } else if (sigType == Signature.ARRAY_TYPE_SIGNATURE) {
            String elementSignature = Signature.getElementType(sig);
            if (Signature.getTypeSignatureKind(elementSignature) == Signature.BASE_TYPE_SIGNATURE) {
                continue;
            }
        }
    }
    if (!validateFieldTypeStatus.isOK()) {
        return validateFieldTypeStatus.getMessage();
    }
    return null;
}