in maven2-plugins/myfaces-builder-plugin/src/main/java/org/apache/myfaces/buildtools/maven2/plugin/builder/qdox/QdoxModelBuilder.java [104:231]
protected void buildModel(Model model, List sourceDirs, JavaClass[] classes)
throws MojoExecutionException
{
String currModelId = model.getModelId();
// Sort the class array so that they are processed in a
// predictable order, regardless of how the source scanning
// returned them.
Arrays.sort(classes, new QdoxHelper.JavaClassComparator());
Map processedClasses = new HashMap();
for (int i = 0; i < classes.length; ++i)
{
JavaClass clazz = classes[i];
processClass(processedClasses, clazz, model);
}
// Post-process the list of components which we added in this run.
// Note that model has all the inherited components in it too, so
// we need to skip them.
//
// Hmm..as noted elsewhere, JavaClass objects representing parent
// classes are accessable via getParentClazz(). Presumably they are
// not in the array returned by builder.getClasses() though..
for (Iterator it = model.getComponents().iterator(); it.hasNext();)
{
ComponentMeta component = (ComponentMeta) it.next();
if (!component.getModelId().equals(currModelId))
{
continue;
}
QdoxHelper.initComponentAncestry(processedClasses, model, component);
//Check if the component class java file exists in the source dirs
String classname = component.getClassName();
String classfile = StringUtils.replace(classname,".","/")+".java";
if (!IOUtils.existsSourceFile(classfile, sourceDirs))
{
component.setGeneratedComponentClass(Boolean.TRUE);
}
// Check if the tag class java file exists in the source dirs
if (QdoxHelper.isTagClassMissing(component.getTagClass(), sourceDirs))
{
component.setGeneratedTagClass(Boolean.TRUE);
}
}
// post-process the list of converters
for (Iterator it = model.getConverters().iterator(); it.hasNext();)
{
ConverterMeta converter = (ConverterMeta) it.next();
if (!converter.getModelId().equals(currModelId))
{
continue;
}
QdoxHelper.initConverterAncestry(processedClasses, model, converter);
//Check if the converter class file exists
if (!IOUtils.existsSourceFile(StringUtils.replace(
converter.getClassName(),".","/")+".java", sourceDirs))
{
converter.setGeneratedComponentClass(Boolean.TRUE);
}
// Check if the tag class java file exists in the source dirs
if (QdoxHelper.isTagClassMissing(converter.getTagClass(), sourceDirs))
{
converter.setGeneratedTagClass(Boolean.TRUE);
}
}
// post-process the list of validators
for (Iterator it = model.getValidators().iterator(); it.hasNext();)
{
ValidatorMeta validator = (ValidatorMeta) it.next();
if (!validator.getModelId().equals(currModelId))
{
continue;
}
QdoxHelper.initValidatorAncestry(processedClasses, model, validator);
//Check if the validator class file exists
if (!IOUtils.existsSourceFile(StringUtils.replace(
validator.getClassName(),".","/")+".java", sourceDirs))
{
validator.setGeneratedComponentClass(Boolean.TRUE);
}
// Check if the tag class java file exists in the source dirs
if (QdoxHelper.isTagClassMissing(validator.getTagClass(), sourceDirs))
{
validator.setGeneratedTagClass(Boolean.TRUE);
}
}
// post-process the list of behaviors
for (Iterator it = model.getBehaviors().iterator(); it.hasNext();)
{
BehaviorMeta behavior = (BehaviorMeta) it.next();
if (!behavior.getModelId().equals(currModelId))
{
continue;
}
QdoxHelper.initBehaviorAncestry(processedClasses, model, behavior);
//Check if the behavior class file exists
if (!IOUtils.existsSourceFile(StringUtils.replace(
behavior.getClassName(),".","/")+".java", sourceDirs))
{
behavior.setGeneratedComponentClass(Boolean.TRUE);
}
}
// post-process the list of tags
for (Iterator it = model.getTags().iterator(); it.hasNext();)
{
TagMeta tag = (TagMeta) it.next();
// nothing to do at the moment
}
for (Iterator it = model.getFaceletTags().iterator(); it.hasNext();)
{
FaceletTagMeta tag = (FaceletTagMeta) it.next();
if (!tag.getModelId().equals(currModelId))
{
continue;
}
QdoxHelper.initFaceletTagHandlerAncestry(processedClasses, model, tag);
}
}