throw new IllegalArgumentException("Duplicate attribute " + type + " " + previous + " and " + method);
}
}
else
{
ManagedName managedName = methodNames.get(method);
if (managedName != null)
{
throw new IllegalArgumentException("Managed operation " + method.getName()
+ " cannot be annoated with @" + ManagedName.class.getName() + " with value " + managedName.value());
}
//
managedType.addMethod(entry.getValue());
}
}
// Process attributes
Set<String> attributeNames = new HashSet<String>();
attributeNames.addAll(getters.keySet());
attributeNames.addAll(setters.keySet());
for (String attributeName : attributeNames)
{
ManagedMethodMetaData managedGetter = getters.get(attributeName);
ManagedMethodMetaData managedSetter = setters.get(attributeName);
String propertyDescription = null;
ManagedName getterName = null;
ManagedName setterName = null;
String getterDescription = null;
String setterDescription = null;
Method getter = null;
Method setter = null;
ManagedParameterMetaData mpm = null;
if (managedGetter != null)
{
getter = managedGetter.getMethod();
getterName = methodNames.get(getter);
getterDescription = managedGetter.getDescription();
propertyDescription = getterDescription;
}
if (managedSetter != null)
{
setter = managedSetter.getMethod();
setterName = methodNames.get(setter);
setterDescription = managedSetter.getDescription();
if (propertyDescription == null)
{
propertyDescription = setterDescription;
}
mpm = managedSetter.getParameters().iterator().next();
}
// Consistency check
if (getterName != null)
{
if (setterName != null)
{
if (!getterName.value().equals(setterName.value()))
{
throw new IllegalArgumentException("Getter name=" + getterName.value()
+ " does not match the setter name=" + setterName.value());
}
}
attributeName = getterName.value();
}
else if (setterName != null)
{
attributeName = setterName.value();
}
//
ManagedPropertyMetaData managedProperty =
new ManagedPropertyMetaData(attributeName, getter, getterDescription, setter, setterDescription, mpm);