in maven2-plugins/myfaces-builder-plugin/src/main/java/org/apache/myfaces/buildtools/maven2/plugin/builder/trinidad/TrinidadMavenFacesPluginModelBuilder.java [54:371]
public void buildModel(Model model, ModelParams parameters)
throws MojoExecutionException
{
FacesConfigBean facesConfigBean = parameters.getFacesConfigBean();
if (facesConfigBean == null)
{
return;
}
for (Iterator<ComponentBean> it = facesConfigBean.components(); it.hasNext();)
{
ComponentBean sourceComponent = it.next();
String componentType = sourceComponent.getComponentType();
if (componentType.startsWith("jakarta.faces.") || sourceComponent.getComponentClass().startsWith("jakarta.faces."))
{
// Components in jakarta.faces package were already loaded, so
// there is no need to load them again
continue;
}
boolean created = false;
ComponentMeta targetComponent = model.findComponentByClassName(sourceComponent.getComponentClass());
if (targetComponent == null)
{
targetComponent = new ComponentMeta();
created = true;
}
targetComponent.setModelId(model.getModelId());
// className
targetComponent.setClassName(sourceComponent.getComponentClass());
// sourceClassName
targetComponent.setSourceClassName(sourceComponent.getComponentClass());
// parentClassName
// sourceClassParentClassName
// Trinidad Maven Faces plugin uses hieararchy by type, but MyFaces
// Builder Plugin do it per class name.
String componentSuperclass = sourceComponent.findComponentSuperclass();
if (componentSuperclass != null)
{
if (componentSuperclass.equals("UIXCollection"))
{
componentSuperclass = "org.apache.myfaces.trinidad.component.UIXCollection";
}
targetComponent.setParentClassName(componentSuperclass);
targetComponent.setSourceClassParentClassName(componentSuperclass);
}
// type
targetComponent.setType(sourceComponent.getComponentType());
// name
if (sourceComponent.getTagName() != null)
{
targetComponent.setName(getTagPrefix(sourceComponent.getTagName())+':'+sourceComponent.getTagName().getLocalPart());
}
// description
targetComponent.setDescription(sourceComponent.getDescription());
// longDescription
targetComponent.setLongDescription(sourceComponent.getLongDescription());
// family
targetComponent.setFamily(sourceComponent.getComponentFamily());
// rendererType
targetComponent.setRendererType(sourceComponent.getRendererType());
// tagClass
targetComponent.setTagClass(sourceComponent.getTagClass());
// tagHandler
targetComponent.setTagHandler(sourceComponent.getTagHandler());
// tagSuperclass;
targetComponent.setTagSuperclass(sourceComponent.getTagSuperclass());
// namingContainer
if (sourceComponent.isNamingContainer())
{
targetComponent.setNamingContainer(sourceComponent.isNamingContainer());
}
// clientBehaviorHolder
if (sourceComponent.isClientBehaviorHolder())
{
targetComponent.setClientBehaviorHolder(sourceComponent.isClientBehaviorHolder());
}
// children
targetComponent.setChildren(sourceComponent.hasChildren());
// defaultEventName
targetComponent.setDefaultEventName(sourceComponent.getDefaultEventName());
// Attributes without match
// bodyContent
// configExcluded
// serialuid
// implements
// composite
// overrideDefaultEventName
// ccLibraryName;
// ccResourceName;
// generatedComponentClass
// generatedTagClass
// template;
visitProperties(sourceComponent, targetComponent);
for (Iterator<FacetBean> facetIterator = sourceComponent.facets(); facetIterator.hasNext();)
{
FacetBean facet = facetIterator.next();
FacetMeta facetMeta = targetComponent.getFacet(facet.getFacetName());
boolean facetCreated = false;
if (facetMeta == null)
{
facetMeta = new FacetMeta();
facetCreated = true;
}
facetMeta.setName(facet.getFacetName());
facetMeta.setDescription(facet.getDescription());
facetMeta.setLongDescription(facet.getDescription());
if (facet.isRequired())
{
facetMeta.setRequired(facet.isRequired());
}
if (facetCreated)
{
targetComponent.addFacet(facetMeta);
}
}
for (Iterator<EventRefBean> eventIterator = sourceComponent.events(); eventIterator.hasNext();)
{
EventRefBean event = eventIterator.next();
String listenerName = event.getEventName()+"Listener";
ListenerMeta listenerMeta = targetComponent.getListener(listenerName);
boolean listenerCreated = false;
if (listenerMeta == null)
{
listenerMeta = new ListenerMeta();
listenerCreated = true;
}
listenerMeta.setEventClassName(event.getEventType());
listenerMeta.setName(listenerName);
if (event.getEventDeliveryPhases() != null)
{
StringBuilder phases = new StringBuilder();
for (int i = 0; i < event.getEventDeliveryPhases().length; i++)
{
phases.append(event.getEventDeliveryPhases()[i]);
if (i+1 < event.getEventDeliveryPhases().length)
{
phases.append(" ,");
}
}
listenerMeta.setPhases(phases.toString());
}
EventBean eventBean = event.resolveEventType();
if (eventBean != null)
{
listenerMeta.setClassName(eventBean.getEventListenerClass());
listenerMeta.setDescription(eventBean.getDescription());
listenerMeta.setLongDescription(eventBean.getDescription());
}
if (listenerCreated)
{
targetComponent.addListener(listenerMeta);
}
}
if (created)
{
model.addComponent(targetComponent);
}
}
for (Iterator<ConverterBean> it = facesConfigBean.converters(); it.hasNext();)
{
ConverterBean sourceComponent = it.next();
String converterId = sourceComponent.getConverterId();
if (converterId.startsWith("jakarta.faces.") || sourceComponent.getConverterClass().startsWith("jakarta.faces."))
{
// Components in jakarta.faces package were already loaded, so
// there is no need to load them again
continue;
}
boolean created = false;
ConverterMeta targetComponent = model.findConverterByClassName(sourceComponent.getConverterClass());
if (targetComponent == null)
{
targetComponent = new ConverterMeta();
created = true;
}
targetComponent.setModelId(model.getModelId());
targetComponent.setClassName(sourceComponent.getConverterClass());
targetComponent.setSourceClassName(sourceComponent.getConverterClass());
targetComponent.setParentClassName(sourceComponent.getConverterSuperClass());
targetComponent.setSourceClassParentClassName(sourceComponent.getConverterSuperClass());
// name
if (sourceComponent.getTagName() != null)
{
targetComponent.setName(getTagPrefix(sourceComponent.getTagName())+':'+sourceComponent.getTagName().getLocalPart());
}
targetComponent.setDescription(sourceComponent.getDescription());
targetComponent.setLongDescription(sourceComponent.getLongDescription());
targetComponent.setConverterId(sourceComponent.getConverterId());
targetComponent.setTagClass(sourceComponent.getTagClass());
visitProperties(sourceComponent, targetComponent);
if (created)
{
model.addConverter(targetComponent);
}
}
for (Iterator<ValidatorBean> it = facesConfigBean.validators(); it.hasNext();)
{
ValidatorBean sourceComponent = it.next();
String validatorId = sourceComponent.getValidatorId();
if (validatorId.startsWith("jakarta.faces.") || sourceComponent.getValidatorClass().startsWith("jakarta.faces."))
{
// Components in jakarta.faces package were already loaded, so
// there is no need to load them again
continue;
}
boolean created = false;
ValidatorMeta targetComponent = model.findValidatorByClassName(sourceComponent.getValidatorClass());
if (targetComponent == null)
{
targetComponent = new ValidatorMeta();
created = true;
}
targetComponent.setModelId(model.getModelId());
targetComponent.setClassName(sourceComponent.getValidatorClass());
targetComponent.setSourceClassName(sourceComponent.getValidatorClass());
targetComponent.setParentClassName(sourceComponent.getValidatorSuperClass());
targetComponent.setSourceClassParentClassName(sourceComponent.getValidatorSuperClass());
// name
if (sourceComponent.getTagName() != null)
{
targetComponent.setName(getTagPrefix(sourceComponent.getTagName())+':'+sourceComponent.getTagName().getLocalPart());
}
targetComponent.setDescription(sourceComponent.getDescription());
targetComponent.setLongDescription(sourceComponent.getLongDescription());
targetComponent.setValidatorId(sourceComponent.getValidatorId());
targetComponent.setTagClass(sourceComponent.getTagClass());
visitProperties(sourceComponent, targetComponent);
if (created)
{
model.addValidator(targetComponent);
}
}
for (Iterator<RenderKitBean> it = facesConfigBean.renderKits(); it.hasNext();)
{
RenderKitBean sourceComponent = it.next();
boolean created = false;
RenderKitMeta targetComponent = model.findRenderKitById(sourceComponent.getRenderKitId());
if (targetComponent == null)
{
targetComponent = new RenderKitMeta();
created = true;
}
targetComponent.setRenderKitId(sourceComponent.getRenderKitId());
for (Iterator<RendererBean> rendererIterator = sourceComponent.renderers(); rendererIterator.hasNext(); )
{
RendererBean renderer = rendererIterator.next();
boolean rendererCreated = false;
RendererMeta rendererMeta = targetComponent.findRenderer(renderer.getComponentFamily(), renderer.getRendererType());
if (rendererMeta == null)
{
rendererMeta = new RendererMeta();
rendererCreated = true;
}
rendererMeta.setModelId(model.getModelId());
rendererMeta.setClassName(renderer.getRendererClass());
rendererMeta.setParentClassName(renderer.getRendererSuperclass());
rendererMeta.setComponentFamily(renderer.getComponentFamily());
rendererMeta.setRendererType(renderer.getRendererType());
rendererMeta.setDescription(renderer.getDescription());
if (rendererCreated)
{
targetComponent.addRenderer(rendererMeta);
}
}
if (created)
{
model.addRenderKit(targetComponent);
}
}
}