Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkmoore2012-02-29 15:24:05 +0000
committerkmoore2012-02-29 15:24:05 +0000
commita2eb8167624399231efef1e998619d93e08e3cdb (patch)
treed80b136c97ffbb85c115bbbef595c09dc271c7dd /common/plugins
parent85cf7a388aa7f7f9c5cd3c035e59e085ae1bd0ef (diff)
downloadwebtools.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.java50
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()}

Back to the top