Example usage for org.eclipse.jdt.internal.codeassist CompletionEngine createDefaultParameterNames

List of usage examples for org.eclipse.jdt.internal.codeassist CompletionEngine createDefaultParameterNames

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.codeassist CompletionEngine createDefaultParameterNames.

Prototype

public static char[][] createDefaultParameterNames(int length) 

Source Link

Usage

From source file:org.eclipse.recommenders.internal.completion.rcp.AccessibleCompletionProposals.java

License:Open Source License

public static Optional<AccessibleCompletionProposal> newMethodRef(IMethod method, int completionOffset,
        int prefixLength, int relevance) {

    String completion = method.getElementName() + "()";
    String[] params = method.getParameterTypes();
    String[] resolved = new String[params.length];
    IType declaringType = method.getDeclaringType();
    // boolean isVararg = Flags.isVarargs(method.getFlags());
    int lastParam = params.length - 1;
    for (int i = 0; i <= lastParam; i++) {
        String resolvedParam = params[i];
        String unresolvedParam = params[i];
        resolvedParam = resolveToBinary(unresolvedParam, declaringType).orNull();
        if (resolvedParam == null) {
            return Optional.absent();
        }/*from  w w w . j a  va 2  s  .  com*/
        resolved[i] = resolvedParam;
        // TODO no varargs support
    }

    String returnType;
    try {
        returnType = resolveToBinary(method.getReturnType(), declaringType).orNull();
    } catch (JavaModelException e) {
        e.printStackTrace();
        return Optional.absent();
    }
    if (returnType == null) { // e.g. a type parameter "QE;"
        return Optional.absent();
    }

    AccessibleCompletionProposal res = new AccessibleCompletionProposal(CompletionProposal.METHOD_REF,
            relevance);
    try {
        res.setFlags(method.getFlags());
    } catch (JavaModelException e1) {
        e1.printStackTrace();
    }
    res.setCompletion(completion.toCharArray());
    String declarationSignature = Signature
            .createTypeSignature(method.getDeclaringType().getFullyQualifiedName(), true);
    res.setDeclarationSignature(declarationSignature.toCharArray());
    String signature = Signature.createMethodSignature(resolved, returnType);
    res.setSignature(signature.toCharArray());
    res.setName(method.getElementName().toCharArray());
    res.setReplaceRange(completionOffset - prefixLength, completionOffset);

    char[][] paramNames = new char[params.length][];
    try {
        String[] parameterNames = method.getParameterNames();
        for (int i = 0; i < paramNames.length; i++) {
            paramNames[i] = parameterNames[i].toCharArray();
        }
    } catch (JavaModelException e) {
        e.printStackTrace();
        paramNames = CompletionEngine.createDefaultParameterNames(params.length);
    }
    res.setParameterNames(paramNames);

    res.setData(IMethod.class, method);
    res.setData(IJavaProject.class, method.getJavaProject());
    return of(res);
}