diff options
author | kmoore | 2012-02-29 15:24:05 +0000 |
---|---|---|
committer | kmoore | 2012-02-29 15:24:05 +0000 |
commit | a2eb8167624399231efef1e998619d93e08e3cdb (patch) | |
tree | d80b136c97ffbb85c115bbbef595c09dc271c7dd /common/plugins | |
parent | 85cf7a388aa7f7f9c5cd3c035e59e085ae1bd0ef (diff) | |
download | webtools.dali-a2eb8167624399231efef1e998619d93e08e3cdb.tar.gz webtools.dali-a2eb8167624399231efef1e998619d93e08e3cdb.tar.xz webtools.dali-a2eb8167624399231efef1e998619d93e08e3cdb.zip |
Bug 331480 - [Validation] Need validation for embeddable id class - patch from Les
Diffstat (limited to 'common/plugins')
-rw-r--r-- | common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/utility/JDTTools.java | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/utility/JDTTools.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/utility/JDTTools.java index 1b9c862173..3df3c87e2e 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/utility/JDTTools.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/utility/JDTTools.java @@ -19,12 +19,14 @@ import org.eclipse.jdt.core.IPackageFragmentRoot; import org.eclipse.jdt.core.IParent; import org.eclipse.jdt.core.IType; import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jdt.core.Signature; import org.eclipse.jpt.common.core.JptCommonCorePlugin; import org.eclipse.jpt.common.utility.Filter; import org.eclipse.jpt.common.utility.internal.ArrayTools; import org.eclipse.jpt.common.utility.internal.ClassName; import org.eclipse.jpt.common.utility.internal.NotNullFilter; import org.eclipse.jpt.common.utility.internal.ReflectionTools; +import org.eclipse.jpt.common.utility.internal.StringTools; import org.eclipse.jpt.common.utility.internal.iterables.ArrayIterable; import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable; @@ -127,6 +129,54 @@ public final class JDTTools { return false; } + + /** + * Return true if the given type named contains a method name as given with the given parameter types + */ + public static boolean typeNamedImplementsMethod(IJavaProject javaProject, String typeName, String methodName, String[] parameterTypeNames) { + try { + return typeImplementsMethod(javaProject.findType(typeName), methodName, parameterTypeNames); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return false; + } + } + + private static boolean typeImplementsMethod(IType type, String methodName, String[] parameterTypeNames) { + if ((type == null) || methodName == null) { + return false; + } + + try { + IMethod[] methods = type.getMethods(); + for (IMethod method : methods) { + if (StringTools.stringsAreEqual(method.getElementName(), methodName)) { + if (parameterTypeNames.length == 0 && method.getNumberOfParameters() == 0) { + return true; + } else if (parameterTypeNames.length == method.getNumberOfParameters()) { + int index = 0; + String[] parameters = method.getParameterTypes(); + String resolvedParameterTypeName = parameters[0]; + if (!type.isResolved()) { + resolvedParameterTypeName = resolveType(type, Signature.getSignatureSimpleName(parameters[index])); + } + for (String parameterTypeName : parameterTypeNames) { + if (!StringTools.stringsAreEqual(resolvedParameterTypeName, parameterTypeName)) { + return false; + } + index++; + } + return true; + } + } + } + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return false; + } + return false; + } + /** * Return the names of the specified type's supertypes (class and interfaces). * This is necessary because, for whatever reason, { @link IType#getSuperInterfaceNames()} |