Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/util/JavaBeanUtils.java')
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/util/JavaBeanUtils.java771
1 files changed, 0 insertions, 771 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/util/JavaBeanUtils.java b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/util/JavaBeanUtils.java
deleted file mode 100644
index a0496b014..000000000
--- a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/util/JavaBeanUtils.java
+++ /dev/null
@@ -1,771 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 Sybase, Inc. and others.
- *
- * 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:
- * Sybase, Inc. - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsf.facesconfig.ui.util;
-
-import java.beans.Introspector;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.jdt.core.IMethod;
-import org.eclipse.jdt.core.IType;
-import org.eclipse.jdt.core.ITypeHierarchy;
-import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jdt.core.Signature;
-import org.eclipse.jst.jsf.common.ui.internal.utils.JavaModelUtil;
-
-/**
- * This utility class is used to access java bean class, e.g., get java bean's
- * property
- *
- * @author xgzhang
- * @version
- */
-public final class JavaBeanUtils {
- public static final String JAVA_UTIL_LIST = "java.util.List";
-
- public static final String JAVA_UTIL_MAP = "java.util.Map";
-
- /**
- *
- */
- private JavaBeanUtils() {
- super();
- }
-
- /**
- * get the getter method according to property name
- *
- * @param type
- * @param propertyName
- * @return - can be <b>null</b>, if not found
- * @throws JavaModelException
- * @throws JavaModelException
- */
- private static IMethod getPropertyGetterMethod(IType type,
- String propertyName) {
- if (type == null || !type.exists() || propertyName == null) {
- return null;
- }
- IMethod getterMethod = null;
-
- String methodBaseName = null;
- // Uppercase 1st letter
- if (propertyName.length() == 1) {
- methodBaseName = propertyName.substring(0, 1).toUpperCase();
- } else {
- methodBaseName = propertyName.substring(0, 1).toUpperCase()
- + propertyName.substring(1);
- }
-
- String getterMethodName = "get" + methodBaseName;
-
- getterMethod = type.getMethod(getterMethodName, null);
- if (getterMethod == null || !getterMethod.exists()
- || !JavaClassUtils.isPublicMethod(getterMethod)) {
- getterMethodName = "is" + methodBaseName;
- getterMethod = type.getMethod(getterMethodName, null);
-
- if (getterMethod == null || !getterMethod.exists()
- || !JavaClassUtils.isPublicMethod(getterMethod)) {
- getterMethod = null;
- }
- }
- return getterMethod;
- }
-
- /**
- * get the getter method in the type hierarchy according to property name
- *
- * @param type
- * @param propertyName
- * @return - can be <b>null</b>, if not found
- * @throws JavaModelException
- * @throws JavaModelException
- */
- private static IMethod getPropertyGetterMethodInTypeHierarchy(IType type,
- String propertyName) throws JavaModelException {
- if (type == null || !type.exists() || propertyName == null) {
- return null;
- }
- IMethod getterMethod = null;
-
- getterMethod = getPropertyGetterMethod(type, propertyName);
-
- if (getterMethod == null) {
- ITypeHierarchy typeHierarchy = null;
- typeHierarchy = type.newSupertypeHierarchy(null);
-
- if (typeHierarchy == null) {
- return null;
- }
-
- IType[] superTypes = typeHierarchy.getAllSuperclasses(type);
-
- if (superTypes == null || superTypes.length == 0) {
- return null;
- }
- for (int i = 0; i < superTypes.length; i++) {
- if (!superTypes[i].getFullyQualifiedName().equals(
- "java.lang.Object")) {
- getterMethod = getPropertyGetterMethod(superTypes[i],
- propertyName);
- if (getterMethod != null) {
- break;
- }
- }
- }
- }
- return getterMethod;
- }
-
- /**
- * get the setter method in the type hierarchy according to property name
- *
- * @param type
- * @param propertyName
- * @return - can be <b>null</b>, if not found
- * @throws JavaModelException
- */
- private static IMethod getPropertySetterMethodInTypeHierarchy(IType type,
- String propertyName) throws JavaModelException {
- if (type == null || !type.exists() || propertyName == null) {
- return null;
- }
- IMethod setterMethod = null;
-
- setterMethod = getPropertySetterMethod(type, propertyName);
-
- if (setterMethod == null) {
- ITypeHierarchy typeHierarchy = null;
- typeHierarchy = type.newSupertypeHierarchy(null);
-
- if (typeHierarchy == null) {
- return null;
- }
-
- IType[] superTypes = typeHierarchy.getAllSuperclasses(type);
-
- if (superTypes == null || superTypes.length == 0) {
- return null;
- }
- for (int i = 0; i < superTypes.length; i++) {
- if (!superTypes[i].getFullyQualifiedName().equals(
- "java.lang.Object")) {
- setterMethod = getPropertySetterMethod(superTypes[i],
- propertyName);
- if (setterMethod != null) {
- break;
- }
- }
- }
- }
-
- return setterMethod;
- }
-
- /**
- * get the setter method according to property name
- *
- * @param type
- * @param propertyName
- * @return - can be <b>null</b>, if not found
- * @throws JavaModelException
- */
- private static IMethod getPropertySetterMethod(IType type,
- String propertyName) throws JavaModelException {
- if (type == null || !type.exists() || propertyName == null) {
- return null;
- }
- IMethod setterMethod = null;
-
- String methodBaseName = null;
- // Uppercase 1st letter
- if (propertyName.length() == 1) {
- methodBaseName = propertyName.substring(0, 1).toUpperCase();
- } else {
- methodBaseName = propertyName.substring(0, 1).toUpperCase()
- + propertyName.substring(1);
- }
-
- String setterMethodName = "set" + methodBaseName;
-
- IMethod[] methods = null;
-
- methods = type.getMethods();
-
- if (methods == null || methods.length == 0) {
- return null;
- }
-
- for (int i = 0; i < methods.length; i++) {
- if (methods[i].getElementName().equals(setterMethodName)) {
- if (methods[i] == null || !methods[i].exists()
- || !JavaClassUtils.isPublicMethod(methods[i])) {
- continue;
- }
-
- // Method must return void
- String returnType = methods[i].getReturnType();
- if (!returnType.equals(Signature.SIG_VOID)) {
- continue;
- }
-
- String params[] = methods[i].getParameterTypes();
- // method must have only one argument
- if (params.length != 1) {
- continue;
- }
- setterMethod = methods[i];
- }
- }
-
- return setterMethod;
- }
-
- /**
- * Check whether the propertyName is bean's property or not.
- *
- * @param baseType
- * @param propertyName
- *
- * @return - True means the property name is valid bean's property,
- * otherwise, not.
- *
- * @throws JavaModelException
- */
- public static boolean isBeanProperty(IType baseType, String propertyName)
- {
- if (baseType == null || !baseType.exists() || propertyName == null) {
- return false;
- }
-
- return (getBeanPropertyType(baseType, propertyName) != null);
- }
-
- /**
- * get the bean's property type
- *
- * @param baseType
- * @param propertyName
- * @return - can be <b>null</b>, if not found
- *
- * @throws JavaModelException
- */
- public static IType getBeanPropertyType(IType baseType, String propertyName) {
- if (baseType == null || !baseType.exists() || propertyName == null) {
- return null;
- }
-
- String typeSignature = null;
- IMethod getterMethod = null;
- IMethod setterMethod = null;
-
- IType declaredType = baseType;
- try {
- getterMethod = getPropertyGetterMethodInTypeHierarchy(baseType,
- propertyName);
- setterMethod = getPropertySetterMethodInTypeHierarchy(baseType,
- propertyName);
- } catch (JavaModelException e1) {
- // Need not any error handling.
- }
-
- if (getterMethod != null && setterMethod == null) {
- declaredType = getterMethod.getDeclaringType();
- try {
- typeSignature = getterMethod.getReturnType();
- } catch (JavaModelException e2) {
- // Need not any error handling.
- }
- } else if (setterMethod != null && getterMethod == null) {
- declaredType = setterMethod.getDeclaringType();
- typeSignature = setterMethod.getParameterTypes()[0];
- } else if (setterMethod != null && getterMethod != null) {
- declaredType = getterMethod.getDeclaringType();
- try {
- // FIXME: should check the type hierachy
- if (getterMethod.getReturnType().equals(
- setterMethod.getParameterTypes()[0])) {
- typeSignature = getterMethod.getReturnType();
- }
- } catch (JavaModelException e2) {
- // Need not any error handling.
- }
- }
-
- if (typeSignature == null) {
- return null;
- }
-
- IType type = null;
-
- try {
- String typeName = JavaModelUtil.getResolvedTypeName(typeSignature,
- declaredType);
- if (typeName != null) {
- type = baseType.getJavaProject().findType(typeName);
- }
- } catch (JavaModelException e) {
- // Need not any error handling.
- }
- return type;
- }
-
- /**
- * get the bean's property's getter and setter methods.
- *
- * @param baseType
- * @param propertyName
- * @return - IMethod[], the first is getter and the second is setter method,
- * however, both of them can be null.
- */
- public static IMethod[] getBeanPropertyMethods(IType baseType,
- String propertyName) {
- if (baseType == null || !baseType.exists() || propertyName == null) {
- return null;
- }
-
- IMethod[] methods = new IMethod[2];
-
- IMethod getterMethod = null;
- IMethod setterMethod = null;
- try {
- getterMethod = getPropertyGetterMethodInTypeHierarchy(baseType,
- propertyName);
-
- setterMethod = getPropertySetterMethodInTypeHierarchy(baseType,
- propertyName);
- } catch (JavaModelException e) {
- // Need not any error handling.
- }
-
- if (getterMethod != null && setterMethod == null) {
- methods[0] = getterMethod;
- } else if (setterMethod != null && getterMethod == null) {
- methods[1] = setterMethod;
- } else if (setterMethod != null && getterMethod != null) {
- try {
- // FIXME: should check the type hierachy
- if (getterMethod.getReturnType().equals(
- setterMethod.getParameterTypes()[0])) {
- methods[0] = getterMethod;
- methods[1] = setterMethod;
- }
- } catch (JavaModelException e1) {
- // Need not any error handling.
- }
- }
-
- return methods;
- }
-
- /**
- * check whether the type implements <code>java.util.List</code>
- *
- * @param type
- * @return - True if the type is the sub class of
- * <code>java.util.List</code>, otherwise, not.
- */
- public static boolean isListType(IType type) {
- if (type == null) {
- return false;
- }
- if (type.getFullyQualifiedName().equalsIgnoreCase(JAVA_UTIL_LIST)) {
- return true;
- }
-
- return JavaClassUtils.isSubClassOf(type.getJavaProject(), type
- .getFullyQualifiedName(), JAVA_UTIL_LIST);
- }
-
- /**
- * check whether the type implements <code>java.util.Map</code>
- *
- * @param type
- * @return - True if the type is the sub class of <code>java.uitl.Map</code>,
- * otherwise, not.
- */
- public static boolean isMapType(IType type) {
- if (type == null) {
- return false;
- }
- if (type.getFullyQualifiedName().equalsIgnoreCase(JAVA_UTIL_MAP)) {
- return true;
- }
-
- return JavaClassUtils.isSubClassOf(type.getJavaProject(), type
- .getFullyQualifiedName(), JAVA_UTIL_MAP);
- }
-
- /**
- * Test for method inclusion in bindings list.
- * <p>
- * This test has the following conditions:
- * </p>
- * <ul>
- * <li>method starts with <code>get</code></li>
- * <li>method has no arguments</li>
- * <li>method does not return void</li>
- * </ul>
- *
- * @param method -
- * the IMethod to examine
- * @return boolean - true, if method satisfies the condition test
- */
- public static boolean isGetterMethod(IMethod method) {
- try {
- if (!JavaClassUtils.isPublicMethod(method)) {
- return false;
- }
- String params[] = method.getParameterTypes();
- // Has no arguments
- if (params.length > 0) {
- return false;
- }
-
- // Starts with "get"
- if (!(method.getElementName().startsWith("get") || method.getElementName().startsWith("is"))) //$NON-NLS-1$
- {
- return false;
- }
- // Does not return void
- String rtn = method.getReturnType();
- if (!rtn.equals(Signature.SIG_VOID)) {
- return true;
- }
- } catch (JavaModelException e) {
- // Need not any error handling.
- }
- return false;
- }
-
- /**
- * Test for method inclusion in bindings list.
- * <p>
- * This test has the following conditions:
- * </p>
- * <ul>
- * <li>method starts with <code>set</code></li>
- * <li>method returns void</li>
- * </ul>
- *
- * @param method -
- * the IMethod to examine
- * @return boolean - true, if method satisfies the condition test
- */
- public static boolean isSetterMethod(IMethod method) {
- try {
- if (!JavaClassUtils.isPublicMethod(method)) {
- return false;
- }
- // Starts with "set"
- if (!method.getElementName().startsWith("set")) //$NON-NLS-1$
- {
- return false;
- }
-
- // the parameter's number should be one.
- if (method.getParameterTypes().length != 1) {
- return false;
- }
- // Returns void
- String rtn = method.getReturnType();
- if (rtn.equals(Signature.SIG_VOID)) {
- return true;
- }
- } catch (JavaModelException e) {
- // Need not any error handling.
- }
- return false;
- }
-
- /**
- * set the first character into low case.
- *
- * @param str
- * @return
- */
- public static String toLowCaseFirstChar(String str) {
- // change the first alphabet to lowcase.
- if (str != null && str.length() > 0) {
- if (str.length() == 1) {
- str = str.toLowerCase();
- } else {
- str = str.substring(0, 1).toLowerCase() + str.substring(1);
- }
- }
- return str;
- }
-
- /**
- * set the first character into low case.
- *
- * @param str
- * @return
- */
- public static String toUpperCaseFirstChar(String str) {
- // change the first alphabet to lowcase.
- if (str != null && str.length() > 0) {
- if (str.length() == 1) {
- str = str.toUpperCase();
- } else {
- str = str.substring(0, 1).toUpperCase() + str.substring(1);
- }
- }
- return str;
- }
-
- /**
- * get property name from getter method.
- *
- * @param method
- * @return - can be <b>null</b>, if the method is not a valid getter method
- */
- public static String getPropertyNameFromGetterMethod(IMethod method) {
- if (!isGetterMethod(method)) {
- return null;
- }
- String methodName = method.getElementName();
- String propertyName = null;
- // Starts with "get"
- if (methodName.startsWith("get") && methodName.length() > 3) {
- propertyName = methodName.substring(3);
- } else if (methodName.startsWith("is") && methodName.length() > 2) // Starts
- // with
- // "is"
- {
- propertyName = methodName.substring(2);
- }
- propertyName = Introspector.decapitalize(propertyName);
- return propertyName;
- }
-
- /**
- * get property name from setter class.
- *
- * @param method
- * @return - can be <b>null</b>, if the method is not a valid setter method
- */
- public static String getPropertyNameFromSetterMethod(IMethod method) {
- if (!isSetterMethod(method)) {
- return null;
- }
- String methodName = method.getElementName();
- String propertyName = null;
- // Starts with "get"
- if (methodName.startsWith("set") && methodName.length() > 3) {
- propertyName = methodName.substring(3);
- }
- propertyName = Introspector.decapitalize(propertyName);
- return propertyName;
- }
-
- /**
- * get the method with the same parameters
- *
- * @param methods
- * @param visitedMethods
- * @param foundMethod
- * @param foundMethodName
- * @param foundParamTypes
- * @return
- */
- private static IMethod getMethodWithSameParamters(IMethod[] methods,
- Map visitedMethods, IMethod foundMethod, String foundMethodName,
- String[] foundParamTypes) {
- // get all qualified type name for the found method's parameters.
- String[] foundParamQulifiedTypeNames = null;
- if (foundParamTypes != null && foundParamTypes.length > 0) {
- foundParamQulifiedTypeNames = new String[foundParamTypes.length];
- for (int i = 0; i < foundParamTypes.length; i++) {
- foundParamQulifiedTypeNames[i] = JavaClassUtils
- .getQualifiedTypeNameInTypeHierarchy(foundMethod
- .getDeclaringType(), foundParamTypes[i]);
- }
- }
- for (int i = 0; i < methods.length; i++) {
- if (visitedMethods.get(methods[i]) != null) {
- continue;
- }
-
- if (!methods[i].getElementName().equals(foundMethodName)) {
- continue;
- }
- if (methods[i].getParameterTypes() == null
- && foundParamTypes == null) {
- return methods[i];
- } else if (methods[i].getParameterTypes() != null
- && foundParamTypes != null
- && foundParamTypes.length == methods[i].getParameterTypes().length) {
- boolean bSameParams = true;
- String[] methodParamTypes = methods[i].getParameterTypes();
- for (int j = 0; j < foundParamQulifiedTypeNames.length; j++) {
- String methodParamQualifiedTypeName = JavaClassUtils
- .getQualifiedTypeNameInTypeHierarchy(methods[i]
- .getDeclaringType(), methodParamTypes[j]);
- // if the qualified type name is not same or not subclass or
- // supper class between each other.
- if (!methodParamQualifiedTypeName
- .equals(foundParamQulifiedTypeNames[j])
- && !JavaClassUtils.isSubClassOf(methods[i]
- .getJavaProject(),
- methodParamQualifiedTypeName,
- foundParamQulifiedTypeNames[j])
- && !JavaClassUtils.isSubClassOf(methods[i]
- .getJavaProject(),
- foundParamQulifiedTypeNames[j],
- methodParamQualifiedTypeName)) {
- bSameParams = false;
- break;
- }
- }
- if (bSameParams) {
- return methods[i];
- }
- }
- }
- return null;
- }
-
- /**
- * Creates an array of bean properties
- *
- *
- * @param classType
- * @return it can be <b>null</b>, if property is not found.
- */
- public static JavaBeanProperty[] getBeanProperties(IType classType) {
- IMethod[] methods;
- try {
- methods = JavaClassUtils.getMethods(classType);
- } catch (JavaModelException e2) {
- return null;
- }
-
- return getBeanProperties(classType, methods);
- }
-
- /**
- * Creates an array of bean properties
- *
- * @param classType
- * @param methods
- *
- * @return - the array of java bean properties.
- */
- public static JavaBeanProperty[] getBeanProperties(IType type,
- IMethod[] methods) {
- if (methods == null || methods.length == 0) {
- return null;
- }
-
- List properties = new ArrayList();
- Map visitedMethods = new HashMap();
- for (int m = 0; m < methods.length; m++) {
- String propertyName = null;
- // if a property's getter method or setter method already visited,
- // just skip it.
- if (visitedMethods.get(methods[m]) != null) {
- continue;
- }
-
- visitedMethods.put(methods[m], methods[m]);
-
- // Check getter firstly
- propertyName = JavaBeanUtils
- .getPropertyNameFromGetterMethod(methods[m]);
-
- if (propertyName != null && propertyName.length() > 0) //$NON-NLS-1$
- {
- String setterMethodName = "set"
- + JavaBeanUtils.toUpperCaseFirstChar(propertyName);
-
- String getterReturnType = null;
- try {
- getterReturnType = methods[m].getReturnType();
- } catch (JavaModelException e1) {
- continue;
- }
- IMethod setterMethod = getMethodWithSameParamters(methods,
- visitedMethods, methods[m], setterMethodName,
- new String[] { getterReturnType });
- if (setterMethod != null && setterMethod.exists()) {
- visitedMethods.put(setterMethod, setterMethod);
- }
-
- properties.add(new JavaBeanProperty(propertyName,
- getterReturnType, methods[m], setterMethod));
- continue;
- }
-
- // Check setter secondly.
- propertyName = JavaBeanUtils
- .getPropertyNameFromSetterMethod(methods[m]);
-
- if (propertyName != null && propertyName.length() > 0) //$NON-NLS-1$
- {
- // first form of getter method, "get..."
- String getterMethodName = "get"
- + JavaBeanUtils.toUpperCaseFirstChar(propertyName);
- IMethod getterMethod = getMethodWithSameParamters(methods,
- visitedMethods, methods[m], getterMethodName, null);
-
- if (getterMethod != null && getterMethod.exists()) {
- try {
- if (getterMethod.getReturnType().equals(
- methods[m].getParameterTypes()[0])) {
- visitedMethods.put(getterMethod, getterMethod);
- }
- } catch (JavaModelException e) {
- // need not error logging
- }
- } else {
- // another form of getter method, "is...".
- getterMethodName = "is"
- + JavaBeanUtils.toUpperCaseFirstChar(propertyName);
- getterMethod = getMethodWithSameParamters(methods,
- visitedMethods, methods[m], getterMethodName, null);
- try {
- if (getterMethod != null
- && getterMethod.exists()
- && getterMethod.getReturnType().equals(
- methods[m].getParameterTypes()[0])) {
- visitedMethods.put(getterMethod, getterMethod);
- }
- } catch (JavaModelException e) {
- // need not error logging
- }
- }
-
- properties.add(new JavaBeanProperty(propertyName, methods[m]
- .getParameterTypes()[0], getterMethod, methods[m]));
- continue;
- }
- }
-
- JavaBeanProperty[] propertyArray = (JavaBeanProperty[]) properties
- .toArray(new JavaBeanProperty[properties.size()]);
-
- Arrays.sort(propertyArray, new Comparator() {
- public int compare(Object o1, Object o2) {
- String name1 = ((JavaBeanProperty) o1).getName();
- String name2 = ((JavaBeanProperty) o2).getName();
- return name1.compareTo(name2);
- }
- });
- return propertyArray;
- }
-}

Back to the top