Example usage for org.eclipse.jdt.core ILocalVariable getTypeSignature

List of usage examples for org.eclipse.jdt.core ILocalVariable getTypeSignature

Introduction

In this page you can find the example usage for org.eclipse.jdt.core ILocalVariable getTypeSignature.

Prototype

String getTypeSignature();

Source Link

Document

Returns the type signature of this local variable.

Usage

From source file:at.bestsolution.efxclipse.tooling.fxml.compile.FxmlAnnotationCompilationParticipant.java

License:Open Source License

/**
 * @param context//from   ww  w.j a  v a2s . com
 */
private List<CategorizedProblem> checkCU(final ICompilationUnit unit,
        final Collection<CategorizedProblem> existingProblems) {
    List<CategorizedProblem> problems = new ArrayList<CategorizedProblem>();
    if (existingProblems != null) {
        problems.addAll(existingProblems);
    }
    List<String> fxmlMethods = new ArrayList<String>();
    try {
        IJavaProject project = unit.getJavaProject();
        for (IType type : unit.getTypes()) {
            for (IMethod method : type.getMethods()) {
                for (IAnnotation a : method.getAnnotations()) {
                    if ("FXML".equals(a.getElementName())) { ////$NON-NLS-1$
                        if (fxmlMethods.contains(method.getElementName())) {
                            DefaultProblem problem = new DefaultProblem(unit.getElementName().toCharArray(),
                                    "JavaFX controller method name is not unique: " //$NON-NLS-1$
                                            + method.getElementName(),
                                    IProblem.ExternalProblemNotFixable, new String[0],
                                    ProblemSeverities.Warning, method.getSourceRange().getOffset(),
                                    method.getSourceRange().getOffset() + method.getSourceRange().getLength(),
                                    getMethodLineNumber(type, method), 0);
                            problems.add(problem);
                        }
                        fxmlMethods.add(method.getElementName());

                        switch (method.getNumberOfParameters()) {
                        case 0:
                            break;
                        case 1: {
                            ILocalVariable pType = method.getParameters()[0];
                            String[][] resolvedType = type
                                    .resolveType(Signature.toString(pType.getTypeSignature()));
                            IType parameterType = null;
                            if (resolvedType != null) {
                                parameterType = project.findType(resolvedType[0][0] + "." + resolvedType[0][1]); //$NON-NLS-1$
                            }
                            if (resolvedType == null || !Util.assignable(parameterType,
                                    project.findType("javafx.event.Event"))) { ////$NON-NLS-1$
                                DefaultProblem problem = new DefaultProblem(unit.getElementName().toCharArray(),
                                        "Parameter '" //$NON-NLS-1$
                                                + pType.getElementName()
                                                + "' is not assignable to javafx.event.Event", //$NON-NLS-1$
                                        IProblem.ExternalProblemNotFixable, new String[0],
                                        ProblemSeverities.Warning, pType.getSourceRange().getOffset(),
                                        pType.getSourceRange().getOffset() + pType.getSourceRange().getLength(),
                                        getMethodLineNumber(type, method), 0);
                                problems.add(problem);
                            }

                        }
                            break;
                        default: {
                            DefaultProblem problem = new DefaultProblem(unit.getElementName().toCharArray(),
                                    "JavaFX controller method must have 0 or exactly 1 argument", //$NON-NLS-1$
                                    IProblem.ExternalProblemNotFixable, new String[0],
                                    ProblemSeverities.Warning, method.getSourceRange().getOffset(),
                                    method.getSourceRange().getOffset() + method.getSourceRange().getLength(),
                                    getMethodLineNumber(type, method), 0);
                            problems.add(problem);
                        }
                        }
                    }
                }
            }
        }
    } catch (JavaModelException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return problems;
}

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

License:Open Source License

/**
 * Appends the styled label for a local variable.
 *
 * @param localVariable the element to render
 * @param flags the rendering flags. Flags with names starting with 'F_' are considered.
 *///from   w w  w. j  av  a 2 s.c  o m
public void appendLocalVariableLabel(ILocalVariable localVariable, long flags) {
    if (getFlag(flags, JavaElementLabels.F_PRE_TYPE_SIGNATURE)) {
        appendTypeSignatureLabel(localVariable, localVariable.getTypeSignature(), flags);
        fBuffer.append(' ');
    }

    if (getFlag(flags, JavaElementLabels.F_FULLY_QUALIFIED)) {
        appendElementLabel(localVariable.getDeclaringMember(),
                JavaElementLabels.M_PARAMETER_TYPES | JavaElementLabels.M_FULLY_QUALIFIED
                        | JavaElementLabels.T_FULLY_QUALIFIED | (flags & QUALIFIER_FLAGS));
        fBuffer.append('.');
    }

    fBuffer.append(getElementName(localVariable));

    if (getFlag(flags, JavaElementLabels.F_APP_TYPE_SIGNATURE)) {
        int offset = fBuffer.length();
        fBuffer.append(JavaElementLabels.DECL_STRING);
        appendTypeSignatureLabel(localVariable, localVariable.getTypeSignature(), flags);
        //         if (getFlag(flags, JavaElementLabels.COLORIZE)) {
        //            fBuffer.setStyle(offset, fBuffer.length() - offset, DECORATIONS_STYLE);
        //         }
    }

    // post qualification
    if (getFlag(flags, JavaElementLabels.F_POST_QUALIFIED)) {
        fBuffer.append(JavaElementLabels.CONCAT_STRING);
        appendElementLabel(localVariable.getDeclaringMember(),
                JavaElementLabels.M_PARAMETER_TYPES | JavaElementLabels.M_FULLY_QUALIFIED
                        | JavaElementLabels.T_FULLY_QUALIFIED | (flags & QUALIFIER_FLAGS));
    }
}

From source file:com.codenvy.ide.ext.java.server.javadoc.JavaElementLabelComposer.java

License:Open Source License

/**
 * Appends the styled label for a local variable.
 *
 * @param localVariable the element to render
 * @param flags the rendering flags. Flags with names starting with 'F_' are considered.
 *///ww  w  .  j a v a 2s  .c o  m
public void appendLocalVariableLabel(ILocalVariable localVariable, long flags) {
    if (getFlag(flags, JavaElementLabels.F_PRE_TYPE_SIGNATURE)) {
        appendTypeSignatureLabel(localVariable, localVariable.getTypeSignature(), flags);
        fBuffer.append(' ');
    }

    if (getFlag(flags, JavaElementLabels.F_FULLY_QUALIFIED)) {
        appendElementLabel(localVariable.getDeclaringMember(),
                JavaElementLabels.M_PARAMETER_TYPES | JavaElementLabels.M_FULLY_QUALIFIED
                        | JavaElementLabels.T_FULLY_QUALIFIED | (flags & QUALIFIER_FLAGS));
        fBuffer.append('.');
    }

    fBuffer.append(getElementName(localVariable));

    if (getFlag(flags, JavaElementLabels.F_APP_TYPE_SIGNATURE)) {
        int offset = fBuffer.length();
        fBuffer.append(JavaElementLabels.DECL_STRING);
        appendTypeSignatureLabel(localVariable, localVariable.getTypeSignature(), flags);
        if (getFlag(flags, JavaElementLabels.COLORIZE)) {
            //            fBuffer.setStyle(offset, fBuffer.length() - offset, DECORATIONS_STYLE);
        }
    }

    // post qualification
    if (getFlag(flags, JavaElementLabels.F_POST_QUALIFIED)) {
        fBuffer.append(JavaElementLabels.CONCAT_STRING);
        appendElementLabel(localVariable.getDeclaringMember(),
                JavaElementLabels.M_PARAMETER_TYPES | JavaElementLabels.M_FULLY_QUALIFIED
                        | JavaElementLabels.T_FULLY_QUALIFIED | (flags & QUALIFIER_FLAGS));
    }
}

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

License:Open Source License

private void generateType(IType type, StringBuilder builder, String indent) throws JavaModelException {
    int flags = 0;

    appendAnnotationLabels(type.getAnnotations(), flags, builder, indent.substring(TAB.length()));
    builder.append(indent.substring(TAB.length()));
    builder.append(getModifiers(type.getFlags(), type.getFlags())).append(' ').append(getJavaType(type))
            .append(' ').append(type.getElementName());

    if (type.isResolved()) {
        BindingKey key = new BindingKey(type.getKey());
        if (key.isParameterizedType()) {
            String[] typeArguments = key.getTypeArguments();
            appendTypeArgumentSignaturesLabel(type, typeArguments, flags, builder);
        } else {//from   w  w  w  . j a va  2  s.c  o  m
            String[] typeParameters = Signature.getTypeParameters(key.toSignature());
            appendTypeParameterSignaturesLabel(typeParameters, builder);
        }
    } else {
        appendTypeParametersLabels(type.getTypeParameters(), flags, builder);
    }

    if (!"java.lang.Object".equals(type.getSuperclassName())
            && !"java.lang.Enum".equals(type.getSuperclassName())) {

        builder.append(" extends ");
        if (type.getSuperclassTypeSignature() != null) {
            //                appendTypeSignatureLabel(type, type.getSuperclassTypeSignature(), flags, builder);
            builder.append(Signature.toString(type.getSuperclassTypeSignature()));
        } else {
            builder.append(type.getSuperclassName());
        }
    }
    if (!type.isAnnotation()) {
        if (type.getSuperInterfaceNames().length != 0) {
            builder.append(" implements ");
            String[] signatures = type.getSuperInterfaceTypeSignatures();
            if (signatures.length == 0) {
                signatures = type.getSuperInterfaceNames();
            }
            for (String interfaceFqn : signatures) {
                builder.append(Signature.toString(interfaceFqn)).append(", ");
            }
            builder.delete(builder.length() - 2, builder.length());
        }
    }
    builder.append(" {\n");

    List<IField> fields = new ArrayList<>();
    if (type.isEnum()) {
        builder.append(indent);
        for (IField field : type.getFields()) {
            if (field.isEnumConstant()) {
                builder.append(field.getElementName()).append(", ");
            } else {
                fields.add(field);
            }
        }
        if (", ".equals(builder.substring(builder.length() - 2))) {
            builder.delete(builder.length() - 2, builder.length());
        }
        builder.append(";\n");

    } else {
        fields.addAll(Arrays.asList(type.getFields()));
    }

    for (IField field : fields) {
        if (Flags.isSynthetic(field.getFlags())) {
            continue;
        }
        appendAnnotationLabels(field.getAnnotations(), flags, builder, indent);
        builder.append(indent).append(getModifiers(field.getFlags(), type.getFlags()));
        if (builder.charAt(builder.length() - 1) != ' ') {
            builder.append(' ');
        }

        builder.append(Signature.toCharArray(field.getTypeSignature().toCharArray())).append(' ')
                .append(field.getElementName());
        if (field.getConstant() != null) {
            builder.append(" = ");
            if (field.getConstant() instanceof String) {
                builder.append('"').append(field.getConstant()).append('"');
            } else {
                builder.append(field.getConstant());
            }
        }
        builder.append(";\n");
    }
    builder.append('\n');

    for (IMethod method : type.getMethods()) {
        if (method.getElementName().equals("<clinit>") || Flags.isSynthetic(method.getFlags())) {
            continue;
        }
        appendAnnotationLabels(method.getAnnotations(), flags, builder, indent);
        BindingKey resolvedKey = method.isResolved() ? new BindingKey(method.getKey()) : null;
        String resolvedSig = (resolvedKey != null) ? resolvedKey.toSignature() : null;
        builder.append(indent).append(getModifiers(method.getFlags(), type.getFlags()));

        if (builder.charAt(builder.length() - 1) != ' ') {
            builder.append(' ');
        }
        if (resolvedKey != null) {
            if (resolvedKey.isParameterizedMethod()) {
                String[] typeArgRefs = resolvedKey.getTypeArguments();
                if (typeArgRefs.length > 0) {
                    appendTypeArgumentSignaturesLabel(method, typeArgRefs, flags, builder);
                    builder.append(' ');
                }
            } else {
                String[] typeParameterSigs = Signature.getTypeParameters(resolvedSig);
                if (typeParameterSigs.length > 0) {
                    appendTypeParameterSignaturesLabel(typeParameterSigs, builder);
                    builder.append(' ');
                }
            }
        } else if (method.exists()) {
            ITypeParameter[] typeParameters = method.getTypeParameters();
            if (typeParameters.length > 0) {
                appendTypeParametersLabels(typeParameters, flags, builder);
                builder.append(' ');
            }
        }

        if (!method.isConstructor()) {

            String returnTypeSig = resolvedSig != null ? Signature.getReturnType(resolvedSig)
                    : method.getReturnType();
            appendTypeSignatureLabel(method, returnTypeSig, 0, builder);
            builder.append(' ');
            //                builder.append(Signature.toCharArray(method.getReturnType().toCharArray())).append(' ');
        }
        builder.append(method.getElementName());
        builder.append('(');
        for (ILocalVariable variable : method.getParameters()) {
            builder.append(Signature.toString(variable.getTypeSignature()));
            builder.append(' ').append(variable.getElementName()).append(", ");

        }

        if (builder.charAt(builder.length() - 1) == ' ') {
            builder.delete(builder.length() - 2, builder.length());
        }
        builder.append(')');
        String[] exceptionTypes = method.getExceptionTypes();
        if (exceptionTypes != null && exceptionTypes.length != 0) {
            builder.append(' ').append("throws ");
            for (String exceptionType : exceptionTypes) {
                builder.append(Signature.toCharArray(exceptionType.toCharArray())).append(", ");
            }
            builder.delete(builder.length() - 2, builder.length());
        }
        if (type.isInterface() || type.isAnnotation()) {
            builder.append(";\n\n");
        } else {
            builder.append(" {").append(METHOD_BODY).append("}\n\n");
        }
    }
    for (IType iType : type.getTypes()) {
        generateType(iType, builder, indent + indent);
    }
    builder.append(indent.substring(TAB.length()));
    builder.append("}\n");
}

From source file:com.ecfeed.ui.common.JavaModelAnalyser.java

License:Open Source License

public static String getTypeName(IMethod method, ILocalVariable parameter) {
    String typeSignaure = parameter.getTypeSignature();
    switch (typeSignaure) {
    case Signature.SIG_BOOLEAN:
        return com.ecfeed.core.adapter.java.Constants.TYPE_NAME_BOOLEAN;
    case Signature.SIG_BYTE:
        return com.ecfeed.core.adapter.java.Constants.TYPE_NAME_BYTE;
    case Signature.SIG_CHAR:
        return com.ecfeed.core.adapter.java.Constants.TYPE_NAME_CHAR;
    case Signature.SIG_DOUBLE:
        return com.ecfeed.core.adapter.java.Constants.TYPE_NAME_DOUBLE;
    case Signature.SIG_FLOAT:
        return com.ecfeed.core.adapter.java.Constants.TYPE_NAME_FLOAT;
    case Signature.SIG_INT:
        return com.ecfeed.core.adapter.java.Constants.TYPE_NAME_INT;
    case Signature.SIG_LONG:
        return com.ecfeed.core.adapter.java.Constants.TYPE_NAME_LONG;
    case Signature.SIG_SHORT:
        return com.ecfeed.core.adapter.java.Constants.TYPE_NAME_SHORT;
    case "QString;":
        return com.ecfeed.core.adapter.java.Constants.TYPE_NAME_STRING;
    default:/*from ww w. j a  v a  2  s .  c o m*/
        return getVariableType(method, parameter).getFullyQualifiedName().replaceAll("\\$", "\\.");
    }
}

From source file:com.ecfeed.ui.common.JavaModelAnalyser.java

License:Open Source License

protected static IType getLocalVariableType(IMethod method, ILocalVariable var) {
    try {//from  w  ww.jav a  2 s.co  m
        IType declaringType = method.getDeclaringType();
        String variableTypeName = Signature.toString(var.getTypeSignature());
        for (IType type : declaringType.getTypes()) {
            if (type.getElementName().equals(variableTypeName)) {
                return type;
            }
        }
    } catch (JavaModelException e) {
    }
    return null;
}

From source file:com.ecfeed.ui.common.JavaModelAnalyser.java

License:Open Source License

protected static IType getPackageVariableType(IMethod method, ILocalVariable var) {
    IType declaringType = method.getDeclaringType();
    String packageName = declaringType.getPackageFragment().getElementName();
    String variableTypeName = Signature.toString(var.getTypeSignature());
    String qualifiedName = packageName + "." + variableTypeName;
    IType type = getIType(qualifiedName);
    return type;//from  w  w w. ja v a  2  s  .  c  o m
}

From source file:com.ecfeed.ui.common.JavaModelAnalyser.java

License:Open Source License

protected static IType getImportedVariableType(IMethod method, ILocalVariable var) {
    String variableTypeName = Signature.toString(var.getTypeSignature());
    try {/*  ww w .  j  av  a2s. co m*/
        for (IImportDeclaration importDeclaration : method.getDeclaringType().getCompilationUnit()
                .getImports()) {
            String qualifiedName;
            if (importDeclaration.isOnDemand() == false) {
                qualifiedName = importDeclaration.getElementName();
            } else {
                qualifiedName = importDeclaration.getElementName().replaceFirst("\\*", variableTypeName);
            }
            IType type = getIType(qualifiedName);
            if (type != null && type.getElementName().equals(variableTypeName)) {
                return type;
            }
        }
    } catch (JavaModelException e1) {
    }
    return null;
}

From source file:com.microsoft.javapkgsrv.JavaElementLabelComposer.java

License:Open Source License

/**
 * Appends the styled label for a local variable.
 *
 * @param localVariable the element to render
 * @param flags the rendering flags. Flags with names starting with 'F_' are considered.
 *///from w w  w  .  j  a va2  s.  c o m
public void appendLocalVariableLabel(ILocalVariable localVariable, long flags) {
    if (getFlag(flags, F_PRE_TYPE_SIGNATURE)) {
        appendTypeSignatureLabel(localVariable, localVariable.getTypeSignature(), flags);
        fBuffer.append(' ');
    }

    if (getFlag(flags, F_FULLY_QUALIFIED)) {
        appendElementLabel(localVariable.getDeclaringMember(),
                M_PARAMETER_TYPES | M_FULLY_QUALIFIED | T_FULLY_QUALIFIED | (flags & QUALIFIER_FLAGS));
        fBuffer.append('.');
    }

    fBuffer.append(getElementName(localVariable));

    if (getFlag(flags, F_APP_TYPE_SIGNATURE)) {
        int offset = fBuffer.length();
        fBuffer.append(DECL_STRING);
        appendTypeSignatureLabel(localVariable, localVariable.getTypeSignature(), flags);
    }

    // post qualification
    if (getFlag(flags, F_POST_QUALIFIED)) {
        fBuffer.append(CONCAT_STRING);
        appendElementLabel(localVariable.getDeclaringMember(),
                M_PARAMETER_TYPES | M_FULLY_QUALIFIED | T_FULLY_QUALIFIED | (flags & QUALIFIER_FLAGS));
    }
}

From source file:com.testify.ecfeed.ui.common.JavaModelAnalyser.java

License:Open Source License

public static String getTypeName(IMethod method, ILocalVariable parameter) {
    String typeSignaure = parameter.getTypeSignature();
    switch (typeSignaure) {
    case Signature.SIG_BOOLEAN:
        return com.testify.ecfeed.adapter.java.Constants.TYPE_NAME_BOOLEAN;
    case Signature.SIG_BYTE:
        return com.testify.ecfeed.adapter.java.Constants.TYPE_NAME_BYTE;
    case Signature.SIG_CHAR:
        return com.testify.ecfeed.adapter.java.Constants.TYPE_NAME_CHAR;
    case Signature.SIG_DOUBLE:
        return com.testify.ecfeed.adapter.java.Constants.TYPE_NAME_DOUBLE;
    case Signature.SIG_FLOAT:
        return com.testify.ecfeed.adapter.java.Constants.TYPE_NAME_FLOAT;
    case Signature.SIG_INT:
        return com.testify.ecfeed.adapter.java.Constants.TYPE_NAME_INT;
    case Signature.SIG_LONG:
        return com.testify.ecfeed.adapter.java.Constants.TYPE_NAME_LONG;
    case Signature.SIG_SHORT:
        return com.testify.ecfeed.adapter.java.Constants.TYPE_NAME_SHORT;
    case "QString;":
        return com.testify.ecfeed.adapter.java.Constants.TYPE_NAME_STRING;
    default://from w w  w . j  a v a 2s  .c  o  m
        return getVariableType(method, parameter).getFullyQualifiedName().replaceAll("\\$", "\\.");
    }
}