package org.oddjob.describe;
import java.util.Map;
import org.oddjob.arooa.ArooaSession;
/**
* A composite {@link Describer}.
*
* @see DescribeableDescriber
* @see AnnotationDescriber
* @see AccessorDescriber
*
* @author rob
*
*/
public class UniversalDescriber implements Describer {
private final Describer[] describers;
/**
* Create the describer.
*
* @param session The session used for delegate describers.
*/
public UniversalDescriber(ArooaSession session) {
describers = new Describer[] {
new DescribeableDescriber(),
new AnnotationDescriber(session),
new AccessorDescriber(session)
};
}
@Override
public Map<String, String> describe(Object bean) {
for (int i = 0; i < describers.length; ++i) {
Map<String, String> description =
describers[i].describe(bean);
if (description != null) {
return description;
}
}
return null;
}
}