List of usage examples for org.eclipse.jdt.core IMethod getNumberOfParameters
int getNumberOfParameters();
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"); }