Refine search
private void addPropertyDescriptorToClassIntrospectionData(Map<Object, Object> introspData, PropertyDescriptor pd, Class<?> clazz, Map<MethodSignature, List<Method>> accessibleMethods) { Method readMethod = getMatchingAccessibleMethod(pd.getReadMethod(), accessibleMethods); if (readMethod != null && !isAllowedToExpose(readMethod)) { readMethod = null; } Method indexedReadMethod; if (pd instanceof IndexedPropertyDescriptor) { indexedReadMethod = getMatchingAccessibleMethod( ((IndexedPropertyDescriptor) pd).getIndexedReadMethod(), accessibleMethods); if (indexedReadMethod != null && !isAllowedToExpose(indexedReadMethod)) { indexedReadMethod = null; } if (indexedReadMethod != null) { getArgTypesByMethod(introspData).put( indexedReadMethod, indexedReadMethod.getParameterTypes()); } } else { indexedReadMethod = null; } if (readMethod != null || indexedReadMethod != null) { introspData.put(pd.getName(), new FastPropertyDescriptor(readMethod, indexedReadMethod)); } }
final DynaClass dynaClass = ((DynaBean) target).getDynaClass(); final DynaProperty dynaProperty = dynaClass.getDynaProperty(propName); if (dynaProperty == null) { return; // Skip this property setter try { descriptor = getPropertyUtils().getPropertyDescriptor(target, name); if (descriptor == null) { return; // Skip this property setter getMappedPropertyType(); } else if (index >= 0 && descriptor instanceof IndexedPropertyDescriptor) { if (((IndexedPropertyDescriptor) descriptor).getIndexedWriteMethod() == null) { if (log.isDebugEnabled()) { log.debug("Skipping read-only property"); getIndexedPropertyType(); } else if (index >= 0 && List.class.isAssignableFrom(descriptor.getPropertyType())) { type = Object.class; } else if (key != null) { if (descriptor.getReadMethod() == null) { if (log.isDebugEnabled()) { log.debug("Skipping read-only property"); if (descriptor.getWriteMethod() == null) { if (log.isDebugEnabled()) { log.debug("Skipping read-only property");
if (pd instanceof IndexedPropertyDescriptor) { final IndexedPropertyDescriptor descriptor = (IndexedPropertyDescriptor) pd; final String propName = descriptor.getName().substring(0, 1) .toUpperCase() + descriptor.getName().substring(1); if (descriptor.getReadMethod() == null) { final String methodName = descriptor.getIndexedReadMethod() != null ? descriptor .getIndexedReadMethod().getName() : "get" + propName; final Method readMethod = MethodUtils if (readMethod != null) { try { descriptor.setReadMethod(readMethod); } catch (final Exception e) { log.error( if (descriptor.getWriteMethod() == null) { final String methodName = descriptor.getIndexedWriteMethod() != null ? descriptor .getIndexedWriteMethod().getName() : "set" + propName; Method writeMethod = MethodUtils descriptor.setWriteMethod(writeMethod); } catch (final Exception e) { log.error(
public SimpleIndexedPropertyDescriptor(IndexedPropertyDescriptor original) throws IntrospectionException { this(original.getName(), original.getReadMethod(), original.getWriteMethod(), original.getIndexedReadMethod(), original.getIndexedWriteMethod()); PropertyDescriptorUtils.copyNonMethodProperties(original, this); }
@Override public boolean equals(Object other) { if (this == other) { return true; } if (!(other instanceof IndexedPropertyDescriptor)) { return false; } IndexedPropertyDescriptor otherPd = (IndexedPropertyDescriptor) other; return (ObjectUtils.nullSafeEquals(getIndexedReadMethod(), otherPd.getIndexedReadMethod()) && ObjectUtils.nullSafeEquals(getIndexedWriteMethod(), otherPd.getIndexedWriteMethod()) && ObjectUtils.nullSafeEquals(getIndexedPropertyType(), otherPd.getIndexedPropertyType()) && PropertyDescriptorUtils.equals(this, otherPd)); }
if (pd instanceof IndexedPropertyDescriptor) { IndexedPropertyDescriptor ipd = (IndexedPropertyDescriptor) pd; Method readMethod = getPublicMethod (ipd.getIndexedReadMethod ()); Method writeMethod = getPublicMethod (ipd.getIndexedWriteMethod ()); BeanInfoIndexedProperty property = new BeanInfoIndexedProperty (readMethod, ipd); mIndexedPropertyByName.put (ipd.getName (), property); Method readMethod = getPublicMethod (pd.getReadMethod ()); Method writeMethod = getPublicMethod (pd.getWriteMethod ()); BeanInfoProperty property = new BeanInfoProperty (readMethod, pd); mPropertyByName.put (pd.getName (), property);
if (propertyDescriptor[i].getPropertyType() == null) { continue; IndexedPropertyDescriptor p = (IndexedPropertyDescriptor) propertyDescriptor[i]; if ((p.getReadMethod() != null) && (!p.getReadMethod().getReturnType().isArray())) { bean, p.getPropertyType(), p.getIndexedPropertyType(), p.getReadMethod(), p.getWriteMethod(), p.getIndexedReadMethod(), p.getIndexedWriteMethod() ); support.setName(p.getName()); support.setDisplayName(p.getDisplayName()); support.setShortDescription(p.getShortDescription()); for (Enumeration e = p.attributeNames(); e.hasMoreElements();) { String aname = (String) e.nextElement(); support.setValue(aname, p.getValue(aname)); bean, p.getPropertyType(), p.getReadMethod(), p.getWriteMethod() ); support.setName(p.getName());
@Nullable private PropertyDescriptor findExistingPropertyDescriptor(String propertyName, Class<?> propertyType) { for (PropertyDescriptor pd : this.propertyDescriptors) { final Class<?> candidateType; final String candidateName = pd.getName(); if (pd instanceof IndexedPropertyDescriptor) { IndexedPropertyDescriptor ipd = (IndexedPropertyDescriptor) pd; candidateType = ipd.getIndexedPropertyType(); if (candidateName.equals(propertyName) && (candidateType.equals(propertyType) || candidateType.equals(propertyType.getComponentType()))) { return pd; } } else { candidateType = pd.getPropertyType(); if (candidateName.equals(propertyName) && (candidateType.equals(propertyType) || propertyType.equals(candidateType.getComponentType()))) { return pd; } } } return null; }
if (existingPD.getReadMethod() != null) { if (readMethod != null && existingPD.getReadMethod().getReturnType() != readMethod.getReturnType() || writeMethod != null && existingPD.getReadMethod().getReturnType() != writeMethod.getParameterTypes()[0]) { if (existingIPD.getIndexedReadMethod() != null) { if (indexedReadMethod != null && existingIPD.getIndexedReadMethod().getReturnType() != indexedReadMethod.getReturnType() || indexedWriteMethod != null && existingIPD.getIndexedReadMethod().getReturnType() != indexedWriteMethod.getParameterTypes()[1]) { existingIPD.setIndexedReadMethod(indexedReadMethod); existingIPD.setIndexedWriteMethod(null); existingIPD.setIndexedReadMethod(indexedReadMethod); if (existingIPD.getIndexedWriteMethod() != null) { if (indexedReadMethod != null && existingIPD.getIndexedWriteMethod().getParameterTypes()[1] != indexedReadMethod.getReturnType() || indexedWriteMethod != null && existingIPD.getIndexedWriteMethod().getParameterTypes()[1] != indexedWriteMethod.getParameterTypes()[1]) { existingIPD.setIndexedWriteMethod(indexedWriteMethod); pd = new IndexedPropertyDescriptor(propertyName, readMethod, writeMethod, indexedReadMethod, indexedWriteMethod); ((IndexedPropertyDescriptor)pd).setIndexedReadMethod(indexedReadMethod); try { ((IndexedPropertyDescriptor)pd).setIndexedWriteMethod(indexedWriteMethod); } catch (IntrospectionException ex) { logger.debug(format("Could not add indexed write method [%s] for property [%s]. Reason: %s",
IndexedPropertyDescriptor ipd = (IndexedPropertyDescriptor)pd; Method readMethod = ipd.getIndexedReadMethod(); Method publicReadMethod = getAccessibleMethod(readMethod, accessibleMethods); try { if(readMethod != publicReadMethod) { ipd = new IndexedPropertyDescriptor( ipd.getName(), ipd.getReadMethod(), ipd.getWriteMethod(), publicReadMethod, ipd.getIndexedWriteMethod()); classMap.put(ipd.getName(), ipd); getArgTypes(classMap).put(publicReadMethod, publicReadMethod.getParameterTypes()); logger.warn("Failed creating a publicly-accessible " + "property descriptor for " + clazz.getName() + " indexed property " + pd.getName() + ", read method " + publicReadMethod + ", write method " + ipd.getIndexedWriteMethod(), e);
Method readMethod = pd.getReadMethod(); Method writeMethod = pd.getWriteMethod(); Method readMethod = ipd.getReadMethod(); Method writeMethod = ipd.getWriteMethod(); Method indexedReadMethod = ipd.getIndexedReadMethod(); Method indexedWriteMethod = ipd.getIndexedWriteMethod(); String propertyName = pd.getName(); Method readMethod = pd.getReadMethod(); Method mostSpecificReadMethod = ClassUtils.getMostSpecificMethod(readMethod, method.getDeclaringClass()); || (pd instanceof IndexedPropertyDescriptor && method.equals(((IndexedPropertyDescriptor) pd).getIndexedReadMethod()))) { this.addOrUpdatePropertyDescriptor(pd, propertyName, readMethod, pd.getWriteMethod(), ((IndexedPropertyDescriptor)pd).getIndexedReadMethod(), ((IndexedPropertyDescriptor)pd).getIndexedWriteMethod()); } else { this.addOrUpdatePropertyDescriptor(pd, propertyName, readMethod, pd.getWriteMethod());
final DynaClass dynaClass = ((DynaBean) target).getDynaClass(); final DynaProperty dynaProperty = dynaClass.getDynaProperty(propName); if (dynaProperty == null) { return null; // Skip this property setter try { descriptor = getPropertyUtils().getPropertyDescriptor(target, name); if (descriptor == null) { return null; // Skip this property setter getIndexedPropertyType(); type = descriptor.getPropertyType();
PropertyReaderMethodPair(PropertyDescriptor pd) { this( pd.getReadMethod(), pd instanceof IndexedPropertyDescriptor ? ((IndexedPropertyDescriptor) pd).getIndexedReadMethod() : null); }
private Class<?> getDeclaringClass(PropertyDescriptor property) { Method method = null; if (property instanceof IndexedPropertyDescriptor) { method = ((IndexedPropertyDescriptor)property).getIndexedReadMethod(); if (method == null) { method = ((IndexedPropertyDescriptor)property).getIndexedWriteMethod(); } } else { method = property.getReadMethod(); if (method == null) { method = property.getWriteMethod(); } } return method.getDeclaringClass(); }
private boolean hasIndexedReadMethodForProperty(BeanInfo beanInfo, String propertyName) { for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) { if (pd.getName().equals(propertyName)) { if (!(pd instanceof IndexedPropertyDescriptor)) { return false; } return ((IndexedPropertyDescriptor)pd).getIndexedReadMethod() != null; } } return false; }
private boolean hasIndexedWriteMethodForProperty(BeanInfo beanInfo, String propertyName) { for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) { if (pd.getName().equals(propertyName)) { if (!(pd instanceof IndexedPropertyDescriptor)) { return false; } return ((IndexedPropertyDescriptor)pd).getIndexedWriteMethod() != null; } } return false; }
public BeanProperty(Class<?> owner, PropertyDescriptor descriptor) { this.owner = owner; this.descriptor = descriptor; //20110927, henrichen: Introspector see getAbc(int) as IndexedPropertyDescriptor this.type = descriptor instanceof IndexedPropertyDescriptor ? ((IndexedPropertyDescriptor)descriptor).getIndexedPropertyType() : descriptor.getPropertyType(); }
public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) { if (base == null) { return null; } try { PropertyDescriptor[] pds = Util.getPropertyDescriptors(base.getClass()); for (int i = 0; i < pds.length; i++) { //20110927, henrichen: Instrospector see getAbc(int) as IndexedPropertyDescriptor final PropertyDescriptor pd = pds[i]; pd.setValue(RESOLVABLE_AT_DESIGN_TIME, Boolean.TRUE); if (pd instanceof IndexedPropertyDescriptor) { pd.setValue(TYPE, ((IndexedPropertyDescriptor) pd).getIndexedPropertyType()); } else { pd.setValue(TYPE, pd.getPropertyType()); } } return Arrays.asList((FeatureDescriptor[]) pds).iterator(); } catch (IntrospectionException e) { // } return null; }
mergedPDs.add( indexedReadMethod != null ? new IndexedPropertyDescriptor(propName, readMethod, null, indexedReadMethod, null) : new PropertyDescriptor(propName, readMethod, null)); } catch (IntrospectionException e) { if (LOG.isWarnEnabled()) {
private PropertyDescriptor recoverIndexedPropertyDescriptor(Class baseClz, PropertyDescriptor pd) { if (pd instanceof IndexedPropertyDescriptor) { final IndexedPropertyDescriptor ipd = (IndexedPropertyDescriptor) pd; if (ipd.getIndexedReadMethod() != null) { try { //try to get getter parameter type final String name = ipd.getName(); final Method rm = ipd.getIndexedReadMethod(); final String readMethodName = rm != null ? rm.getName() : null; final Method wm = ipd.getIndexedWriteMethod(); final String writeMethodName = wm != null ? wm.getName() : null; pd = new PropertyDescriptor(name, baseClz, readMethodName, writeMethodName); } catch (IntrospectionException e) { //ignore } catch (SecurityException e) { //ignore } } } return pd; }