/** * Adds property substitute for <code>pName</code> * * @param pName * property name * @param pType * property type * @param getter * method name for getter * @param setter * method name for setter * @param argParams * actual types for parameterized type (List<?>, Map<?>) */ public void substituteProperty(String pName, Class<?> pType, String getter, String setter, Class<?>... argParams) { substituteProperty(new PropertySubstitute(pName, pType, getter, setter, argParams)); }
this.targetType = targetType; final String name = getName(); for (Class<?> c = targetType; c != null; c = c.getSuperclass()) { for (Field f : c.getDeclaredFields()) { getName())); read = discoverMethod(targetType, readMethod); write = discoverMethod(targetType, writeMethod, getType()); if (write == null && parameters != null) { filler = true; write = discoverMethod(targetType, writeMethod, parameters);
public void setDelegate(Property delegate) { this.delegate = delegate; if (writeMethod != null && write == null && !filler) { filler = true; write = discoverMethod(targetType, writeMethod, getActualTypeArguments()); } } }
public void substituteProperty(PropertySubstitute substitute) { if (Collections.EMPTY_MAP == properties) { properties = new LinkedHashMap<String, PropertySubstitute>(); } substitute.setTargetType(type); properties.put(substitute.getName(), substitute); }
private void checkDelegates() { Collection<PropertySubstitute> values = properties.values(); for (PropertySubstitute p : values) { try { p.setDelegate(discoverProperty(p.getName())); } catch (YAMLException e) { } } delegatesChecked = true; }
/** * Get class of List values for provided JavaBean property. * * @param property * property name * @return class of List values */ @Deprecated public Class<? extends Object> getListPropertyType(String property) { if (properties.containsKey(property)) { Class<?>[] typeArguments = properties.get(property).getActualTypeArguments(); if (typeArguments != null && typeArguments.length > 0) { return typeArguments[0]; } } return null; }
private Method discoverMethod(Class<?> type, String name, Class<?>... params) { for (Class<?> c = type; c != null; c = c.getSuperclass()) { for (Method method : c.getDeclaredMethods()) { if (name.equals(method.getName())) { Class<?>[] parameterTypes = method.getParameterTypes(); if (parameterTypes.length != params.length) { continue; } boolean found = true; for (int i = 0; i < parameterTypes.length; i++) { if (!parameterTypes[i].isAssignableFrom(params[i])) { found = false; } } if (found) { method.setAccessible(true); return method; } } } } if (log.isLoggable(Level.FINE)) { log.fine(String.format("Failed to find [%s(%d args)] for %s.%s", name, params.length, targetType.getName(), getName())); } return null; }
public PropertySubstitute(String name, Class<?> type, String readMethod, String writeMethod, Class<?>... params) { super(name, type); this.readMethod = readMethod; this.writeMethod = writeMethod; setActualTypeArguments(params); this.filler = false; }
public void substituteProperty(PropertySubstitute substitute) { if (Collections.EMPTY_MAP == properties) { properties = new LinkedHashMap<String, PropertySubstitute>(); } substitute.setTargetType(type); properties.put(substitute.getName(), substitute); }
private void checkDelegates() { Collection<PropertySubstitute> values = properties.values(); for (PropertySubstitute p : values) { try { p.setDelegate(discoverProperty(p.getName())); } catch (YAMLException e) { } } delegatesChecked = true; }
/** * Get values type info for this JavaBean * * @param property * property name of this JavaBean * @return class of values in the Map */ @Deprecated public Class<? extends Object> getMapValueType(String property) { if (properties.containsKey(property)) { Class<?>[] typeArguments = properties.get(property).getActualTypeArguments(); if (typeArguments != null && typeArguments.length > 1) { return typeArguments[1]; } } return null; }
@Override public Object get(Object object) { try { if (read != null) { return read.invoke(object); } else if (field != null) { return field.get(object); } } catch (Exception e) { throw new YAMLException("Unable to find getter for property '" + getName() + "' on object " + object + ":" + e); } if (delegate != null) { return delegate.get(object); } throw new YAMLException("No getter or delegate for property '" + getName() + "' on object " + object); }
/** * Adds new substitute for property <code>pName</code> parameterized by * <code>classes</code> to this <code>TypeDescription</code>. If * <code>pName</code> has been added before - updates parameters with * <code>classes</code>. * * @param pName - parameter name * @param classes - parameterized by */ public void addPropertyParameters(String pName, Class<?>... classes) { if (!properties.containsKey(pName)) { substituteProperty(pName, null, null, null, classes); } else { PropertySubstitute pr = properties.get(pName); pr.setActualTypeArguments(classes); } }
this.targetType = targetType; final String name = getName(); for (Class<?> c = targetType; c != null; c = c.getSuperclass()) { for (Field f : c.getDeclaredFields()) { getName())); read = discoverMethod(targetType, readMethod); write = discoverMethod(targetType, writeMethod, getType()); if (write == null && parameters != null) { filler = true; write = discoverMethod(targetType, writeMethod, parameters);
public void setDelegate(Property delegate) { this.delegate = delegate; if (writeMethod != null && write == null && !filler) { filler = true; write = discoverMethod(targetType, writeMethod, getActualTypeArguments()); } } }
/** * Get keys type info for this JavaBean * * @param property * property name of this JavaBean * @return class of keys in the Map */ @Deprecated public Class<? extends Object> getMapKeyType(String property) { if (properties.containsKey(property)) { Class<?>[] typeArguments = properties.get(property).getActualTypeArguments(); if (typeArguments != null && typeArguments.length > 0) { return typeArguments[0]; } } return null; }
delegate.set(object, value); } else { log.warning("No setter/delegate for '" + getName() + "' on object " + object);
public PropertySubstitute(String name, Class<?> type, String readMethod, String writeMethod, Class<?>... params) { super(name, type); this.readMethod = readMethod; this.writeMethod = writeMethod; setActualTypeArguments(params); this.filler = false; }
/** * Adds property substitute for <code>pName</code> * * @param pName * property name * @param pType * property type * @param getter * method name for getter * @param setter * method name for setter * @param argParams * actual types for parameterized type (List<?>, Map<?>) */ public void substituteProperty(String pName, Class<?> pType, String getter, String setter, Class<?>... argParams) { substituteProperty(new PropertySubstitute(pName, pType, getter, setter, argParams)); }
/** * Get class of List values for provided JavaBean property. * * @param property * property name * @return class of List values */ @Deprecated public Class<? extends Object> getListPropertyType(String property) { if (properties.containsKey(property)) { Class<?>[] typeArguments = properties.get(property).getActualTypeArguments(); if (typeArguments != null && typeArguments.length > 0) { return typeArguments[0]; } } return null; }