diff options
Diffstat (limited to 'awt/java/beans/PropertyDescriptor.java')
-rw-r--r-- | awt/java/beans/PropertyDescriptor.java | 300 |
1 files changed, 0 insertions, 300 deletions
diff --git a/awt/java/beans/PropertyDescriptor.java b/awt/java/beans/PropertyDescriptor.java deleted file mode 100644 index 9389152..0000000 --- a/awt/java/beans/PropertyDescriptor.java +++ /dev/null @@ -1,300 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package java.beans; - -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.Vector; -import org.apache.harmony.beans.internal.nls.Messages; - -public class PropertyDescriptor extends FeatureDescriptor { - private Method getter; - - private Method setter; - - private Class<?> propertyEditorClass; - - private boolean constrained; - - private boolean bound; - - public PropertyDescriptor(String propertyName, Class<?> beanClass, String getterName, - String setterName) throws IntrospectionException { - super(); - if (beanClass == null) { - throw new IntrospectionException(Messages.getString("beans.03")); //$NON-NLS-1$ - } - if (propertyName == null || propertyName.length() == 0) { - throw new IntrospectionException(Messages.getString("beans.04")); //$NON-NLS-1$ - } - this.setName(propertyName); - this.setDisplayName(propertyName); - if (setterName != null) { - if (hasMethod(beanClass, setterName)) { - setWriteMethod(beanClass, setterName); - } else { - throw new IntrospectionException(Messages.getString("beans.20")); //$NON-NLS-1$ - } - } - if (getterName != null) { - if (hasMethod(beanClass, getterName)) { - setReadMethod(beanClass, getterName); - } else { - throw new IntrospectionException(Messages.getString("beans.1F")); //$NON-NLS-1$ - } - } - } - - public PropertyDescriptor(String propertyName, Method getter, Method setter) - throws IntrospectionException { - super(); - if (propertyName == null || propertyName.length() == 0) { - throw new IntrospectionException(Messages.getString("beans.04")); //$NON-NLS-1$ - } - this.setName(propertyName); - this.setDisplayName(propertyName); - setWriteMethod(setter); - setReadMethod(getter); - } - - public PropertyDescriptor(String propertyName, Class<?> beanClass) - throws IntrospectionException { - String getterName; - String setterName; - if (beanClass == null) { - throw new IntrospectionException(Messages.getString("beans.03")); //$NON-NLS-1$ - } - if (propertyName == null || propertyName.length() == 0) { - throw new IntrospectionException(Messages.getString("beans.04")); //$NON-NLS-1$ - } - this.setName(propertyName); - this.setDisplayName(propertyName); - getterName = createDefaultMethodName(propertyName, "is"); //$NON-NLS-1$ - if (hasMethod(beanClass, getterName)) { - setReadMethod(beanClass, getterName); - } else { - getterName = createDefaultMethodName(propertyName, "get"); //$NON-NLS-1$ - if (hasMethod(beanClass, getterName)) { - setReadMethod(beanClass, getterName); - } - } - setterName = createDefaultMethodName(propertyName, "set"); //$NON-NLS-1$ - if (hasMethod(beanClass, setterName)) { - setWriteMethod(beanClass, setterName); - } - if (getter == null && setter == null) { - throw new IntrospectionException(Messages.getString("beans.01", propertyName)); //$NON-NLS-1$ - } - } - - public void setWriteMethod(Method setter) throws IntrospectionException { - if (setter != null) { - int modifiers = setter.getModifiers(); - if (!Modifier.isPublic(modifiers)) { - throw new IntrospectionException(Messages.getString("beans.05")); //$NON-NLS-1$ - } - Class<?>[] parameterTypes = setter.getParameterTypes(); - if (parameterTypes.length != 1) { - throw new IntrospectionException(Messages.getString("beans.06")); //$NON-NLS-1$ - } - Class<?> parameterType = parameterTypes[0]; - Class<?> propertyType = getPropertyType(); - if (propertyType != null && !propertyType.equals(parameterType)) { - throw new IntrospectionException(Messages.getString("beans.07")); //$NON-NLS-1$ - } - } - this.setter = setter; - } - - public void setReadMethod(Method getter) throws IntrospectionException { - if (getter != null) { - int modifiers = getter.getModifiers(); - if (!Modifier.isPublic(modifiers)) { - throw new IntrospectionException(Messages.getString("beans.0A")); //$NON-NLS-1$ - } - Class<?>[] parameterTypes = getter.getParameterTypes(); - if (parameterTypes.length != 0) { - throw new IntrospectionException(Messages.getString("beans.08")); //$NON-NLS-1$ - } - Class<?> returnType = getter.getReturnType(); - if (returnType.equals(Void.TYPE)) { - throw new IntrospectionException(Messages.getString("beans.33")); //$NON-NLS-1$ - } - Class<?> propertyType = getPropertyType(); - if ((propertyType != null) && !returnType.equals(propertyType)) { - throw new IntrospectionException(Messages.getString("beans.09")); //$NON-NLS-1$ - } - } - this.getter = getter; - } - - public Method getWriteMethod() { - return setter; - } - - public Method getReadMethod() { - return getter; - } - - @Override - public boolean equals(Object object) { - boolean result = (object != null && object instanceof PropertyDescriptor); - if (result) { - PropertyDescriptor pd = (PropertyDescriptor) object; - boolean gettersAreEqual = (this.getter == null) && (pd.getReadMethod() == null) - || (this.getter != null) && (this.getter.equals(pd.getReadMethod())); - boolean settersAreEqual = (this.setter == null) && (pd.getWriteMethod() == null) - || (this.setter != null) && (this.setter.equals(pd.getWriteMethod())); - boolean propertyTypesAreEqual = this.getPropertyType() == pd.getPropertyType(); - boolean propertyEditorClassesAreEqual = this.getPropertyEditorClass() == pd - .getPropertyEditorClass(); - boolean boundPropertyAreEqual = this.isBound() == pd.isBound(); - boolean constrainedPropertyAreEqual = this.isConstrained() == pd.isConstrained(); - result = gettersAreEqual && settersAreEqual && propertyTypesAreEqual - && propertyEditorClassesAreEqual && boundPropertyAreEqual - && constrainedPropertyAreEqual; - } - return result; - } - - public void setPropertyEditorClass(Class<?> propertyEditorClass) { - this.propertyEditorClass = propertyEditorClass; - } - - public Class<?> getPropertyType() { - Class<?> result = null; - if (getter != null) { - result = getter.getReturnType(); - } else if (setter != null) { - Class<?>[] parameterTypes = setter.getParameterTypes(); - result = parameterTypes[0]; - } - return result; - } - - public Class<?> getPropertyEditorClass() { - return propertyEditorClass; - } - - public void setConstrained(boolean constrained) { - this.constrained = constrained; - } - - public void setBound(boolean bound) { - this.bound = bound; - } - - public boolean isConstrained() { - return constrained; - } - - public boolean isBound() { - return bound; - } - - boolean hasMethod(Class<?> beanClass, String methodName) { - Method[] methods = findMethods(beanClass, methodName); - return (methods.length > 0); - } - - String createDefaultMethodName(String propertyName, String prefix) { - String result = null; - if (propertyName != null) { - String bos = propertyName.substring(0, 1).toUpperCase(); - String eos = propertyName.substring(1, propertyName.length()); - result = prefix + bos + eos; - } - return result; - } - - Method[] findMethods(Class<?> aClass, String methodName) { - Method[] allMethods = aClass.getMethods(); - Vector<Method> matchedMethods = new Vector<Method>(); - Method[] result; - for (Method method : allMethods) { - if (method.getName().equals(methodName)) { - matchedMethods.add(method); - } - } - result = new Method[matchedMethods.size()]; - for (int j = 0; j < matchedMethods.size(); ++j) { - result[j] = matchedMethods.elementAt(j); - } - return result; - } - - void setReadMethod(Class<?> beanClass, String getterName) { - boolean result = false; - Method[] getters = findMethods(beanClass, getterName); - for (Method element : getters) { - try { - setReadMethod(element); - result = true; - } catch (IntrospectionException ie) { - } - if (result) { - break; - } - } - } - - void setWriteMethod(Class<?> beanClass, String setterName) throws IntrospectionException { - boolean result = false; - Method[] setters = findMethods(beanClass, setterName); - for (Method element : setters) { - try { - setWriteMethod(element); - result = true; - } catch (IntrospectionException ie) { - } - if (result) { - break; - } - } - } - - public PropertyEditor createPropertyEditor(Object bean) { - PropertyEditor editor; - if (propertyEditorClass == null) { - return null; - } - if (!PropertyEditor.class.isAssignableFrom(propertyEditorClass)) { - // beans.48=Property editor is not assignable from the - // PropertyEditor interface - throw new ClassCastException(Messages.getString("beans.48")); //$NON-NLS-1$ - } - try { - Constructor<?> constr; - try { - // try to look for the constructor with single Object argument - constr = propertyEditorClass.getConstructor(Object.class); - editor = (PropertyEditor) constr.newInstance(bean); - } catch (NoSuchMethodException e) { - // try no-argument constructor - constr = propertyEditorClass.getConstructor(); - editor = (PropertyEditor) constr.newInstance(); - } - } catch (Exception e) { - // beans.47=Unable to instantiate property editor - RuntimeException re = new RuntimeException(Messages.getString("beans.47"), e); //$NON-NLS-1$ - throw re; - } - return editor; - } -} |