Example usage for org.eclipse.jdt.core IMethod getNumberOfParameters

List of usage examples for org.eclipse.jdt.core IMethod getNumberOfParameters

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IMethod getNumberOfParameters.

Prototype

int getNumberOfParameters();

Source Link

Document

Returns the number of parameters of this method.

Usage

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

License:Open Source License

/**
 * @param context//from   w  w  w . j  av  a2s .  co m
 */
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.corext.util.MethodOverrideTester.java

License:Open Source License

/**
 * Tests if a method is a subsignature of another method.
 * @param overriding overriding method (m1)
 * @param overridden overridden method (m2)
 * @return <code>true</code> iff the method <code>m1</code> is a subsignature of the method <code>m2</code>.
 *       This is one of the requirements for m1 to override m2.
 *       Accessibility and return types are not taken into account.
 *       Note that subsignature is <em>not</em> symmetric!
 * @throws JavaModelException if a problem occurs
 *//*from  ww  w. ja v  a 2 s .  co  m*/
public boolean isSubsignature(IMethod overriding, IMethod overridden) throws JavaModelException {
    if (!overridden.getElementName().equals(overriding.getElementName())) {
        return false;
    }
    int nParameters = overridden.getNumberOfParameters();
    if (nParameters != overriding.getNumberOfParameters()) {
        return false;
    }

    if (!hasCompatibleTypeParameters(overriding, overridden)) {
        return false;
    }

    return nParameters == 0 || hasCompatibleParameterTypes(overriding, overridden);
}

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

License:Open Source License

/**
 * Optimization to find an IMethod without having to resolve the parameters.
 * /*from ww w  . java2s .c  o m*/
 * @return the IMethod corresponding to a candidate. Null if none are found.
 */
private IJavaElement findMethod(final MethodElement pMethod, final IMethod[] pCandidates) {
    IJavaElement lReturn = null;

    final List<IMethod> lSimilar = new ArrayList<IMethod>();
    for (final IMethod element : pCandidates) {
        String lName = element.getElementName();
        try {
            if (element.isConstructor())
                lName = "<init>";
        } catch (final JavaModelException pException) {
            return null;
        }
        if (lName.equals(pMethod.getName()))
            if (element.getNumberOfParameters() == FastConverter.numberOfParams(pMethod.getParameters()))
                lSimilar.add(element);
    }
    if (lSimilar.size() == 1)
        lReturn = lSimilar.get(0);
    else
        for (int i = 0; i < lSimilar.size(); i++)
            try {
                if (this.getElement(lSimilar.get(i)) == pMethod)
                    lReturn = lSimilar.get(i);
            } catch (final ConversionException pException) {
                // nothing, the method will return null
            }

    return lReturn;
}

From source file:com.centurylink.mdw.plugin.designer.properties.OsgiAdapterDesignSection.java

License:Apache License

private List<String> getServiceMethodOptions() {
    List<String> options = new ArrayList<String>();
    WorkflowAsset asset = (WorkflowAsset) interfaceSelector.getWorkflowAsset();
    if (asset != null) {
        try {/*from w  ww.  j  ava 2  s .com*/
            ICompilationUnit unit = getCompilationUnit(asset);
            if (unit != null) {
                for (IType type : unit.getAllTypes()) {
                    for (IMethod method : type.getMethods()) {
                        String option = method.getElementName() + "(";
                        for (int i = 0; i < method.getNumberOfParameters(); i++) {
                            String paramType = method.getParameterTypes()[i];
                            option += paramType.substring(1, paramType.length() - 1) + " "
                                    + method.getParameterNames()[i];
                            if (i < method.getNumberOfParameters() - 1)
                                option += ", ";
                        }
                        option += ")";
                        options.add(option);
                    }
                }
            } else {
                options.add("Type must be opened to read methods");
            }
        } catch (JavaModelException ex) {
            PluginMessages.uiError(ex, "Service Methods", activity.getProject());
        }
    } else {
        options.add("");
    }

    return options;
}

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

License:Open Source License

@Override
protected boolean implementable(ChoiceNode node) {
    if (node.isAbstract()) {
        return hasImplementableNode(node.getChoices());
    }/*from  w  ww  .  j a  v  a 2 s  .  c  om*/
    if (parameterDefinitionImplemented(node.getParameter())) {
        try {
            IType type = getJavaProject().findType(node.getParameter().getType());
            if (type.isEnum() == false) {
                return false;
            }
            boolean hasConstructor = false;
            boolean hasParameterlessConstructor = false;
            for (IMethod constructor : type.getMethods()) {
                if (constructor.isConstructor() == false) {
                    continue;
                }
                hasConstructor = true;
                if (constructor.getNumberOfParameters() == 0) {
                    hasParameterlessConstructor = true;
                }
            }
            if (hasConstructor && (hasParameterlessConstructor == false)) {
                return false;
            }
        } catch (CoreException e) {
            return false;
        }
    } else {
        if (parameterDefinitionImplementable(node.getParameter()) == false) {
            return false;
        }
    }

    return JavaUtils.isValidJavaIdentifier(node.getValueString());
}

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

License:Open Source License

/**
 * Constructs the locator body//from www .  j av  a2 s . c  o m
 */
private void constructLocatorBody(IType type, ImportsManager imports, IProgressMonitor monitor)
        throws CoreException {

    List<IMethod> constructors = new ArrayList<IMethod>();
    boolean hasDefaultConstructor = false;
    for (IMethod method : current.getMethods()) {
        if (method.isConstructor()) {
            if ((method.getNumberOfParameters() == 0) && !Flags.isPrivate(method.getFlags())) {
                hasDefaultConstructor = true;
            }
            constructors.add(method);
        }
    }

    StringBuffer buf = new StringBuffer();
    buf.append("@Override").append(lineDelimiter); //$NON-NLS-N$
    buf.append("public ").append(current.getElementName()); //$NON-NLS-N$
    buf.append(" create(Class<? extends ").append(current.getElementName()).append( //$NON-NLS-1$
            "> clazz) {"); //$NON-NLS-2$
    buf.append(lineDelimiter);
    if (constructors.isEmpty() || hasDefaultConstructor) {
        buf.append("return new ").append(current.getElementName()).append("();"); //$NON-NLS-N$
    } else {
        buf.append("// TODO no default constructor, creation code cannot be generated"); //$NON-NLS-N$
        buf.append(lineDelimiter).append("throw new RuntimeException(String.format"); //$NON-NLS-N$
        buf.append("(\"Cannot instantiate %s\", clazz.getCanonicalName()));"); //$NON-NLS-N$
    }
    buf.append(lineDelimiter).append("}").append(lineDelimiter);

    buf.append("@Override").append(lineDelimiter); //$NON-NLS-N$
    buf.append("public ").append(current.getElementName()); //$NON-NLS-N$
    buf.append(" find(Class<? extends ").append(current.getElementName()).append( //$NON-NLS-1$
            "> clazz, Void id) {"); //$NON-NLS-2$
    buf.append(lineDelimiter);
    buf.append("return create(clazz);"); //$NON-NLS-N$
    buf.append(lineDelimiter).append("}").append(lineDelimiter);

    buf.append("@Override").append(lineDelimiter); //$NON-NLS-N$
    buf.append("public Class<").append(current.getElementName()); //$NON-NLS-N$
    buf.append("> getDomainType() {").append(lineDelimiter); //$NON-NLS-N$
    buf.append("return ").append(current.getElementName()).append(".class;"); //$NON-NLS-N$
    buf.append(lineDelimiter).append("}").append(lineDelimiter);

    buf.append("@Override").append(lineDelimiter); //$NON-NLS-N$
    buf.append("public ").append(entityIdType).append(" getId(").append( //$NON-NLS-1$//$NON-NLS-2$
            current.getElementName());
    buf.append(" domainObject) {").append(lineDelimiter); //$NON-NLS-N$
    if (entityIdType.equals("Void")) { //$NON-NLS-N$
        buf.append(" return null;"); //$NON-NLS-N$
    } else {
        buf.append("return domainObject.getId()"); //$NON-NLS-N$
    }
    buf.append(lineDelimiter).append("}").append(lineDelimiter);

    buf.append("@Override").append(lineDelimiter); //$NON-NLS-N$
    buf.append("public Class<").append(entityIdType).append("> getIdType() {"); //$NON-NLS-1$//$NON-NLS-2$
    buf.append(lineDelimiter);
    if (entityIdType.equals("Void")) { //$NON-NLS-N$
        buf.append("return Void.class;"); //$NON-NLS-N$
    } else {
        buf.append("return ").append(entityIdType).append(".class;"); //$NON-NLS-1$//$NON-NLS-2$
    }
    buf.append(lineDelimiter).append("}").append(lineDelimiter);

    buf.append("@Override").append(lineDelimiter); //$NON-NLS-N$
    buf.append("public Object getVersion(").append(current.getElementName()); //$NON-NLS-N$
    buf.append(" domainObject) {").append(lineDelimiter); //$NON-NLS-N$
    buf.append("return null;"); //$NON-NLS-N$
    buf.append(lineDelimiter).append("}");

    type.createMethod(buf.toString(), null, false, null);
    if (monitor != null) {
        monitor.done();
    }
}

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

License:Open Source License

private static boolean hasMethodThatReturns(IType type, String methodName, String returnType)
        throws JavaModelException {
    for (IMethod method : type.getMethods()) {
        if (method.getElementName().equals(methodName)) {
            if (method.getNumberOfParameters() == 0) {
                if (method.getReturnType().equals(returnType)) {
                    return true;
                }/*from w ww . j  ava  2  s  .c  om*/
            }
        }
    }
    return false;
}

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

License:Open Source License

private void constructLocatorBody(IType type, ImportsManager imports, IProgressMonitor monitor)
        throws CoreException {

    List<IMethod> constructors = new ArrayList<IMethod>();
    boolean hasDefaultConstructor = false;
    for (IMethod method : current.getMethods()) {
        if (method.isConstructor()) {
            if ((method.getNumberOfParameters() == 0) && !Flags.isPrivate(method.getFlags())) {
                hasDefaultConstructor = true;
            }//from   w  ww  .j  ava2s. com
            constructors.add(method);
        }
    }

    StringBuffer buf = new StringBuffer();
    buf.append("@Override").append(lineDelimiter);
    buf.append("public ").append(current.getElementName());
    buf.append(" create(Class<? extends ").append(current.getElementName()).append("> clazz) {");
    buf.append(lineDelimiter);
    if (constructors.isEmpty() || hasDefaultConstructor) {
        buf.append("return new ").append(current.getElementName()).append("();");
    } else {
        buf.append("// TODO no default constructor, creation code cannot be generated");
        buf.append(lineDelimiter).append("throw new RuntimeException(String.format");
        buf.append("(\"Cannot instantiate %s\", clazz.getCanonicalName()));");
    }
    buf.append(lineDelimiter).append("}").append(lineDelimiter);

    buf.append("@Override").append(lineDelimiter);
    buf.append("public ").append(current.getElementName());
    buf.append(" find(Class<? extends ").append(current.getElementName()).append("> clazz, Void id) {");
    buf.append(lineDelimiter);
    buf.append("return create(clazz);");
    buf.append(lineDelimiter).append("}").append(lineDelimiter);

    buf.append("@Override").append(lineDelimiter);
    buf.append("public Class<").append(current.getElementName());
    buf.append("> getDomainType() {").append(lineDelimiter);
    buf.append("return ").append(current.getElementName()).append(".class;");
    buf.append(lineDelimiter).append("}").append(lineDelimiter);

    buf.append("@Override").append(lineDelimiter);
    buf.append("public ").append(entityIdType).append(" getId(").append(current.getElementName());
    buf.append(" domainObject) {").append(lineDelimiter);
    if (entityIdType.equals("Void")) {
        buf.append(" return null;");
    } else {
        buf.append("return domainObject.getId()");
    }
    buf.append(lineDelimiter).append("}").append(lineDelimiter);

    buf.append("@Override").append(lineDelimiter);
    buf.append("public Class<").append(entityIdType).append("> getIdType() {");
    buf.append(lineDelimiter);
    if (entityIdType.equals("Void")) {
        buf.append("return Void.class;");
    } else {
        buf.append("return ").append(entityIdType).append(".class;");
    }
    buf.append(lineDelimiter).append("}").append(lineDelimiter);

    buf.append("@Override").append(lineDelimiter);
    buf.append("public Object getVersion(").append(current.getElementName());
    buf.append(" domainObject) {").append(lineDelimiter);
    buf.append("return null;");
    buf.append(lineDelimiter).append("}");

    type.createMethod(buf.toString(), null, false, null);
    if (monitor != null) {
        monitor.done();
    }
}

From source file:com.halware.nakedide.eclipse.core.util.MethodUtils.java

License:Open Source License

public static boolean hasZeroParameters(IMethod method) {
    return method.getNumberOfParameters() == 0;
}

From source file:edu.brown.cs.bubbles.bedrock.BedrockUtil.java

License:Open Source License

private static void outputSymbol(IJavaElement elt, String what, String nm, String key, IvyXmlWriter xw) {
    if (what == null || nm == null)
        return;/* w ww .ja  v a 2s . co  m*/

    xw.begin("ITEM");
    xw.field("TYPE", what);
    xw.field("NAME", nm);
    xw.field("HANDLE", elt.getHandleIdentifier());

    xw.field("WORKING", (elt.getPrimaryElement() != elt));
    ICompilationUnit cu = (ICompilationUnit) elt.getAncestor(IJavaElement.COMPILATION_UNIT);
    if (cu != null) {
        xw.field("CUWORKING", cu.isWorkingCopy());
    }
    try {
        xw.field("KNOWN", elt.isStructureKnown());
    } catch (JavaModelException e) {
    }

    if (elt instanceof ISourceReference) {
        try {
            ISourceRange rng = ((ISourceReference) elt).getSourceRange();
            if (rng != null) {
                xw.field("STARTOFFSET", rng.getOffset());
                xw.field("ENDOFFSET", rng.getOffset() + rng.getLength());
                xw.field("LENGTH", rng.getLength());
            }
        } catch (JavaModelException e) {
            BedrockPlugin.logE("Problem getting source range: " + e);
        }
    }

    if (elt instanceof ILocalVariable) {
        ILocalVariable lcl = (ILocalVariable) elt;
        xw.field("SIGNATURE", lcl.getTypeSignature());
    }

    if (elt instanceof IMember) {
        try {
            IMember mem = ((IMember) elt);
            int fgs = mem.getFlags();
            if (mem.getParent() instanceof IType && !(elt instanceof IType)) {
                IType par = (IType) mem.getParent();
                if (par.isInterface()) {
                    if (elt instanceof IMethod)
                        fgs |= Flags.AccAbstract;
                    fgs |= Flags.AccPublic;
                }
                xw.field("QNAME", par.getFullyQualifiedName() + "." + nm);
            }
            xw.field("FLAGS", fgs);
        } catch (JavaModelException e) {
        }
    }

    if (elt instanceof IPackageFragment || elt instanceof IType) {
        Display d = BedrockApplication.getDisplay();
        if (d != null) {
            JavadocUrl ju = new JavadocUrl(elt);
            d.syncExec(ju);
            URL u = ju.getResult();
            if (u != null) {
                xw.field("JAVADOC", u.toString());
            }
        }
    }

    xw.field("SOURCE", "USERSOURCE");
    if (key != null)
        xw.field("KEY", key);

    boolean havepath = false;
    for (IJavaElement pe = elt.getParent(); pe != null; pe = pe.getParent()) {
        if (pe.getElementType() == IJavaElement.COMPILATION_UNIT) {
            IProject ip = elt.getJavaProject().getProject();
            File f = BedrockUtil.getFileForPath(elt.getPath(), ip);
            xw.field("PATH", f.getAbsolutePath());
            havepath = true;
            break;
        }
    }
    IJavaProject ijp = elt.getJavaProject();
    if (ijp != null)
        xw.field("PROJECT", ijp.getProject().getName());
    IPath p = elt.getPath();
    if (p != null) {
        xw.field("XPATH", p);
        if (!havepath) {
            IProject ip = elt.getJavaProject().getProject();
            File f = getFileForPath(elt.getPath(), ip);
            xw.field("PATH", f.getAbsolutePath());
        }
    }

    if (elt instanceof IMethod) {
        IMethod m = (IMethod) elt;
        try {
            xw.field("RESOLVED", m.isResolved());
            ISourceRange rng = m.getNameRange();
            if (rng != null) {
                xw.field("NAMEOFFSET", rng.getOffset());
                xw.field("NAMELENGTH", rng.getLength());
            }
            xw.field("RETURNTYPE", m.getReturnType());
            xw.field("NUMPARAM", m.getNumberOfParameters());
            String[] pnms = m.getParameterNames();
            String[] ptys = m.getParameterTypes();
            for (int i = 0; i < ptys.length; ++i) {
                xw.begin("PARAMETER");
                if (i < pnms.length)
                    xw.field("NAME", pnms[i]);
                xw.field("TYPE", ptys[i]);
                xw.end();
            }
            for (String ex : m.getExceptionTypes()) {
                xw.begin("EXCEPTION");
                xw.field("TYPE", ex);
                xw.end();
            }
        } catch (JavaModelException e) {
        }
    }

    // TODO: output parameters as separate elements with type and name

    if (elt instanceof IAnnotatable) {
        IAnnotatable ann = (IAnnotatable) elt;
        try {
            IAnnotation[] ans = ann.getAnnotations();
            for (IAnnotation an : ans) {
                xw.begin("ANNOTATION");
                xw.field("NAME", an.getElementName());
                xw.field("COUNT", an.getOccurrenceCount());
                try {
                    for (IMemberValuePair mvp : an.getMemberValuePairs()) {
                        xw.begin("VALUE");
                        xw.field("NAME", mvp.getMemberName());
                        if (mvp.getValue() != null)
                            xw.field("VALUE", mvp.getValue().toString());
                        xw.field("KIND", mvp.getValueKind());
                        xw.end("VALUE");
                    }
                } catch (JavaModelException e) {
                }
                xw.end("ANNOTATION");
            }
        } catch (JavaModelException e) {
        }
    }

    xw.end("ITEM");
}