Example usage for org.eclipse.jdt.core ITypeParameter getBoundsSignatures

List of usage examples for org.eclipse.jdt.core ITypeParameter getBoundsSignatures

Introduction

In this page you can find the example usage for org.eclipse.jdt.core ITypeParameter getBoundsSignatures.

Prototype

String[] getBoundsSignatures() throws JavaModelException;

Source Link

Document

Returns the signatures for this type parameter's bounds.

Usage

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

License:Open Source License

private void appendTypeParameterWithBounds(ITypeParameter typeParameter, long flags) throws JavaModelException {
    fBuffer.append(getElementName(typeParameter));

    if (typeParameter.exists()) {
        String[] bounds = typeParameter.getBoundsSignatures();
        if (bounds.length > 0 && !(bounds.length == 1 && "Ljava.lang.Object;".equals(bounds[0]))) { //$NON-NLS-1$
            fBuffer.append(" extends "); //$NON-NLS-1$
            for (int j = 0; j < bounds.length; j++) {
                if (j > 0) {
                    fBuffer.append(" & "); //$NON-NLS-1$
                }/*  w  w  w  . j  a  v a 2  s . c  o  m*/
                appendTypeSignatureLabel(typeParameter, bounds[j], flags);
            }
        }
    }
}

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

License:Open Source License

private void appendTypeParameterWithBounds(ITypeParameter typeParameter, long flags, StringBuilder builder)
        throws JavaModelException {
    builder.append(getElementName(typeParameter));

    if (typeParameter.exists()) {
        String[] bounds = typeParameter.getBoundsSignatures();
        if (bounds.length > 0 && !(bounds.length == 1 && "Ljava.lang.Object;".equals(bounds[0]))) { //$NON-NLS-1$
            builder.append(" extends "); //$NON-NLS-1$
            for (int j = 0; j < bounds.length; j++) {
                if (j > 0) {
                    builder.append(" & "); //$NON-NLS-1$
                }/* www  . j  a  v  a  2 s.c  o  m*/
                appendTypeSignatureLabel(typeParameter, bounds[j], flags, builder);
            }
        }
    }
}

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

License:Open Source License

private String getTypeParam(ITypeParameter typeParam) {
    try {/*ww  w .j av  a 2  s.co m*/
        StringBuilder builder = new StringBuilder();
        builder.append('<').append(typeParam.getElementName());
        boolean first = true;

        for (String bound : typeParam.getBoundsSignatures()) {
            if (first) {
                first = false;
                builder.append('+');
            } else {
                builder.append('&');
            }
            builder.append(typeSignatureToFqn(bound));
        }

        builder.append('>');
        return builder.toString();
    } catch (JavaModelException e) {
        e.printStackTrace();
        System.out.println("bad");
        return null;
    }
}

From source file:org.eclipse.e4.demo.simpleide.jdt.internal.editor.viewer.JavaElementLabelComposer.java

License:Open Source License

/**
 * Appends the styled label for a type parameter.
 * //from  w  ww .j a  v  a 2s  . co m
 * @param typeParameter
 *            the element to render
 * @param flags
 *            the rendering flags. Flags with names starting with 'T_' are
 *            considered.
 */
public void appendTypeParameterLabel(ITypeParameter typeParameter, long flags) {
    try {
        fBuffer.append(getElementName(typeParameter));

        if (typeParameter.exists()) {
            String[] bounds = typeParameter.getBoundsSignatures();
            if (bounds.length > 0 && !(bounds.length == 1 && "Ljava.lang.Object;".equals(bounds[0]))) { //$NON-NLS-1$
                fBuffer.append(" extends "); //$NON-NLS-1$
                for (int j = 0; j < bounds.length; j++) {
                    if (j > 0) {
                        fBuffer.append(JavaElementLabels.COMMA_STRING);
                    }
                    appendTypeSignatureLabel(typeParameter, bounds[j], flags);
                }
            }
        }

        // post qualification
        if (getFlag(flags, JavaElementLabels.TP_POST_QUALIFIED)) {
            fBuffer.append(JavaElementLabels.CONCAT_STRING);
            IMember declaringMember = typeParameter.getDeclaringMember();
            appendElementLabel(declaringMember,
                    JavaElementLabels.M_PARAMETER_TYPES | JavaElementLabels.M_FULLY_QUALIFIED
                            | JavaElementLabels.T_FULLY_QUALIFIED | (flags & QUALIFIER_FLAGS));
        }

    } catch (JavaModelException e) {
        logger.error(e);
    }
}

From source file:org.eclipse.jpt.common.core.internal.resource.java.binary.BinaryMember.java

License:Open Source License

/**
 * no null check//from   ww w.  j av a  2 s.c o  m
 */
static String convertTypeSignatureToTypeName_(String typeSignature, Iterable<ITypeParameter> typeParameters) {
    String erasureSignature = Signature.getTypeErasure(typeSignature);
    if (Signature.getTypeSignatureKind(erasureSignature) == Signature.TYPE_VARIABLE_SIGNATURE) {
        try {
            String typeParameterName = Signature.toString(erasureSignature);
            for (ITypeParameter typeParameter : typeParameters) {
                if (typeParameterName.equals(typeParameter.getElementName())) {
                    String[] bounds = typeParameter.getBoundsSignatures();
                    if (bounds.length > 0) {
                        return convertTypeSignatureToTypeName_(bounds[0], typeParameters);
                    }
                }
            }
        } catch (JavaModelException jme) {
            JptCommonCorePlugin.instance().logError(jme);
        }
    } else if (Signature.getTypeSignatureKind(erasureSignature) == Signature.ARRAY_TYPE_SIGNATURE) {
        int dim = Signature.getArrayCount(erasureSignature);
        String arrayTypeName = convertTypeSignatureToTypeName(Signature.getElementType(erasureSignature),
                typeParameters);
        return Signature.toString(
                Signature.createArraySignature(Signature.createTypeSignature(arrayTypeName, true), dim));
    } else if (Signature.getTypeSignatureKind(erasureSignature) == Signature.WILDCARD_TYPE_SIGNATURE) {
        // if signature is ? (wildcard) or ? super X (bottom bounded), return top bound, which is Object
        if (String.valueOf(Signature.C_STAR).equals(erasureSignature)
                || erasureSignature.startsWith(String.valueOf(Signature.C_SUPER))) {
            return Object.class.getName();
        }
        // return top bound
        return Signature.toString(erasureSignature.substring(1));
    }
    return Signature.toString(erasureSignature);
}

From source file:org.eclipse.recommenders.jdt.JavaElementsFinder.java

License:Open Source License

private static String[] getBoundSignatures(ITypeParameter param) throws JavaModelException {
    String[] res = CharOperation.NO_STRINGS;
    try {//from  w ww  .  j  a v a2  s.  co m
        res = param.getBoundsSignatures();
    } catch (NullPointerException e) {
        // swallow. That happened during testing in JDT Mars M6
    }
    return res;
}

From source file:org.eclipse.recommenders.rcp.JavaElementResolver.java

License:Open Source License

private String resolveType(final IType jdtDeclaringType, final String unresolvedType,
        final ITypeParameter[] typeParameters) throws JavaModelException {
    final int arrayCount = Signature.getArrayCount(unresolvedType);
    String toResolve = unresolvedType.substring(arrayCount);
    if (typeParameters != null && toResolve.startsWith("Q")) { //$NON-NLS-1$
        String typeName = toResolve.substring(1, toResolve.length() - 1);
        for (ITypeParameter typeParameter : typeParameters) {
            if (!typeParameter.getElementName().equals(typeName)) {
                continue;
            }/*  ww  w.  j  a va2s . c o m*/
            String[] boundsSignatures = typeParameter.getBoundsSignatures();
            if (boundsSignatures.length > 0) {
                toResolve = boundsSignatures[0];
                break;
            }
        }
    }

    String resolvedType = JdtUtils
            .resolveUnqualifiedTypeNamesAndStripOffGenericsAndArrayDimension(toResolve, jdtDeclaringType)
            .or(Signature.SIG_VOID);
    resolvedType = resolvedType + StringUtils.repeat("[]", arrayCount); //$NON-NLS-1$
    return resolvedType;
}

From source file:org.eclipse.recommenders.rcp.utils.JdtUtils.java

License:Open Source License

private static Optional<IType> resolveTypeParameter(ITypeParameter t) {
    try {/* w  w  w .  j a  v a2s  .  com*/
        final IJavaProject project = t.getJavaProject();
        if (project == null) {
            return absent();
        }

        final String[] bounds = t.getBoundsSignatures();
        if (ArrayUtils.isEmpty(bounds)) {
            return Optional.fromNullable(project.findType("java.lang.Object")); //$NON-NLS-1$
        } else {
            final IMember declaringMember = t.getDeclaringMember();
            final Optional<String> typename = resolveUnqualifiedTypeNamesAndStripOffGenericsAndArrayDimension(
                    bounds[0], declaringMember);
            if (typename.isPresent()) {
                return Optional.fromNullable(project.findType(typename.get()));
            } else {
                return absent();
            }
        }
    } catch (JavaModelException e) {
        log(WARNING_FAILED_TO_RESOLVE_TYPE_PARAMETER, e, t.getElementName());
        return absent();
    } catch (Exception e) {
        log(ERROR_FAILED_TO_RESOLVE_TYPE_PARAMETER, e, t.getElementName());
        return absent();
    }
}

From source file:org.eclipse.recommenders.utils.rcp.JdtUtils.java

License:Open Source License

private static Optional<IType> resolveTypeParameter(final ITypeParameter t) {
    IType type = null;//from  ww  w .j  a  v  a2  s . c o m
    try {
        final IJavaProject project = t.getJavaProject();
        final String[] bounds = t.getBoundsSignatures();
        if (ArrayUtils.isEmpty(bounds)) {
            type = project.findType("java.lang.Object");
        } else {
            final IMember declaringMember = t.getDeclaringMember();
            final Optional<String> typename = resolveUnqualifiedTypeNamesAndStripOffGenericsAndArrayDimension(
                    bounds[0], declaringMember);
            if (typename.isPresent()) {
                type = project.findType(typename.get());
            }
        }
    } catch (final Exception e) {
        logError(e, "Failed to resolve type parameter '%s'", t.getElementName());
    }
    return fromNullable(type);
}