diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/utility/jdt/JPTTools.java')
-rw-r--r-- | jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/utility/jdt/JPTTools.java | 182 |
1 files changed, 0 insertions, 182 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/utility/jdt/JPTTools.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/utility/jdt/JPTTools.java deleted file mode 100644 index dcaed04e05..0000000000 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/utility/jdt/JPTTools.java +++ /dev/null @@ -1,182 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2008 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.core.internal.utility.jdt; - -import org.eclipse.jdt.core.dom.IMethodBinding; -import org.eclipse.jdt.core.dom.ITypeBinding; -import org.eclipse.jdt.core.dom.IVariableBinding; -import org.eclipse.jdt.core.dom.Modifier; - -public class JPTTools { - - /** - * Return whether the specified field may be "persisted". - * According to the spec, "All non-transient instance variables that are not - * annotated with the Transient annotation are persistent." - */ - public static boolean fieldIsPersistable(IVariableBinding field) { - int modifiers = field.getModifiers(); - if (Modifier.isStatic(modifiers)) { - return false; - } - if (Modifier.isTransient(modifiers)) { - return false; - } - return true; - } - - /** - * Return whether the specified method is a "getter" method that - * represents a property that may be "persisted". - */ - public static boolean methodIsPersistablePropertyGetter(IMethodBinding methodBinding) { - if (methodHasBadModifiers(methodBinding)) { - return false; - } - - ITypeBinding returnType = methodBinding.getReturnType(); - if (returnType == null) { - return false; - } - String returnTypeName = returnType.getQualifiedName(); - if (returnTypeName.equals("void")) { - return false; - } - if (methodBinding.getParameterTypes().length != 0) { - return false; - } - - String methodName = methodBinding.getName(); - int beginIndex = 0; - boolean booleanGetter = false; - if (methodName.startsWith("is")) { - if (returnTypeName.equals("boolean")) { - beginIndex = 2; - } else { - return false; - } - } else { - if (methodName.startsWith("get")) { - beginIndex = 3; - if (returnTypeName.equals("boolean")) { - booleanGetter = true; - } - } else { - return false; - } - } - - String capitalizedAttributeName = methodName.substring(beginIndex); - // if the type has both methods: - // boolean isProperty() - // boolean getProperty() - // then #isProperty() takes precedence and we ignore #getProperty() - // (see the JavaBeans spec 1.01) - if (booleanGetter) { - IMethodBinding isMethod = methodBindingNoParameters(methodBinding.getDeclaringClass(), "is" + capitalizedAttributeName); - if (isMethod == null) { - return false; - } - if (isMethod.getReturnType().getName().equals("boolean")) { - return false; - } - } - IMethodBinding setMethod = methodBindingOneParameter(methodBinding.getDeclaringClass(), "set" + capitalizedAttributeName, returnTypeName); - if (setMethod == null) { - return false; - } - if (methodHasBadModifiers(setMethod)) { - return false; - } - if ( ! setMethod.getReturnType().getName().equals("void")) { - return false; - } - return true; - } - - private static IMethodBinding methodBindingNoParameters(ITypeBinding typeBinding, String methodName) { - for (IMethodBinding method : typeBinding.getDeclaredMethods()) { - if (method.getName().equals(methodName)) { - if (method.getParameterTypes().length == 0) { - return method; - } - } - } - return null; - } - - private static IMethodBinding methodBindingOneParameter(ITypeBinding typeBinding, String methodName, String parameterTypeName) { - for (IMethodBinding method : typeBinding.getDeclaredMethods()) { - if (method.getName().equals(methodName)) { - if (method.getParameterTypes().length == 1) { - if (method.getParameterTypes()[0].getQualifiedName().equals(parameterTypeName)) { - return method; - } - } - } - } - return null; - } - - /** - * Return whether the specified method's modifiers prevent it - * from being a getter or setter for a "persistent" property. - */ - private static boolean methodHasBadModifiers(IMethodBinding methodBinding) { - if (methodBinding.isConstructor()) { - return true; - } - int modifiers = methodBinding.getModifiers(); - if (Modifier.isStatic(modifiers)) { - return true; - } - if (Modifier.isFinal(modifiers)) { - return true; - } - if ( ! (Modifier.isPublic(modifiers) || Modifier.isProtected(modifiers))) { - return true; - } - return false; - } - - /** - * Return whether the type may be "persisted", ie marked as Entity, MappedSuperclass, Embeddable - */ - //TODO should persistability be dependent on having a no-arg constructor or should that just be validation? - //seems like final, or a member type being static could be dealt with through validation instead of filtering them out. - public static boolean typeIsPersistable(ITypeBinding typeBinding) { - if (typeBinding.isInterface()) { - return false; - } - if (typeBinding.isAnnotation()) { - return false; - } - if (typeBinding.isEnum()) { - return false; - } - if (typeBinding.isLocal()) { - return false; - } - if (typeBinding.isAnonymous()) { - return false; - } - int modifiers = typeBinding.getModifiers(); - if (Modifier.isFinal(modifiers)) { - return false; - } - if (typeBinding.isMember()) { - if (!Modifier.isStatic(modifiers)) { - return false; - } - } - return true; - } - -} |