in src/java/org/apache/fulcrum/intake/IntakeServiceImpl.java [583:628]
public Method getFieldSetter(String className, String propName)
throws ClassNotFoundException, IntrospectionException
{
Map<String, Method> settersForClassName = setterMap.get(className);
if (settersForClassName == null)
{
throw new IntrospectionException("No setter Map for " + className
+ " available!");
}
Method setter = settersForClassName.get(propName);
if (setter == null)
{
PropertyDescriptor pd = new PropertyDescriptor(propName, Class
.forName(className));
synchronized (setterMap)
{
setter = pd.getWriteMethod();
settersForClassName.put(propName, setter);
if (setter == null)
{
getLogger().error(
"Intake: setter for '" + propName + "' in class '"
+ className + "' could not be found.");
}
}
// we have already completed the reflection on the getter, so
// save it so we do not have to repeat
synchronized (getterMap)
{
Map<String, Method> gettersForClassName = getterMap.get(className);
if (gettersForClassName != null)
{
Method getter = pd.getReadMethod();
if (getter != null)
{
gettersForClassName.put(propName, getter);
}
}
}
}
return setter;
}