in impl/src/main/java/org/apache/myfaces/config/annotation/AnnotationConfigurator.java [96:276]
protected FacesConfigImpl createFacesConfig(Map<Class<? extends Annotation>, Set<Class<?>>> map)
{
FacesConfigImpl facesConfig = new FacesConfigImpl();
Set<Class<?>> classes = map.get(FacesComponent.class);
if (classes != null && !classes.isEmpty())
{
for (Class<?> clazz : classes)
{
FacesComponent comp = clazz.getAnnotation(FacesComponent.class);
if (comp != null)
{
if (log.isLoggable(Level.FINEST))
{
log.finest("addComponent(" + comp.value() + ',' + clazz.getName() + ')');
}
String value = comp.value();
if (StringUtils.isEmpty(value))
{
String simpleName = clazz.getSimpleName();
value = Character.toLowerCase(simpleName.charAt(0)) + simpleName.substring(1);
}
facesConfig.addComponent(new ComponentImpl(value, clazz.getName()));
if (comp.createTag())
{
String tagName = comp.tagName();
if (StringUtils.isEmpty(tagName))
{
tagName = clazz.getSimpleName();
tagName = Character.toLowerCase(tagName.charAt(0)) + tagName.substring(1);
}
facesConfig.addComponentTagDeclaration(
new ComponentTagDeclarationImpl(value, comp.namespace(), tagName));
facesConfig.addComponentTagDeclaration(
new ComponentTagDeclarationImpl(value, JCP_NAMESPACE_FACES_COMPONENT, tagName));
}
}
}
}
classes = map.get(FacesConverter.class);
if (classes != null && !classes.isEmpty())
{
for (Class<?> clazz : classes)
{
FacesConverter conv = clazz.getAnnotation(FacesConverter.class);
if (conv != null)
{
if (log.isLoggable(Level.FINEST))
{
log.finest("addConverter(" + conv.value() + ',' + clazz.getName() + ')');
}
//If there is a previous entry on Application Configuration Resources,
//the entry there takes precedence
boolean hasForClass = !Object.class.equals(conv.forClass());
boolean hasValue = conv.value().length() > 0;
if (hasForClass || hasValue)
{
ConverterImpl converter = new ConverterImpl();
if (hasForClass)
{
converter.setForClass(conv.forClass().getName());
}
if (hasValue)
{
converter.setConverterId(conv.value());
}
converter.setConverterClass(clazz.getName());
facesConfig.addConverter(converter);
}
else
{
throw new FacesException("@FacesConverter must have value, forClass or both. Check annotation "
+ "@FacesConverter on class: " + clazz.getName());
}
}
}
}
classes = map.get(FacesValidator.class);
if (classes != null && !classes.isEmpty())
{
for (Class<?> clazz : classes)
{
FacesValidator val = clazz.getAnnotation(FacesValidator.class);
if (val != null)
{
if (log.isLoggable(Level.FINEST))
{
log.finest("addValidator(" + val.value() + ',' + clazz.getName() + ')');
}
String value = val.value();
if (value == null || value.isEmpty())
{
String simpleName = clazz.getSimpleName();
value = Character.toLowerCase(simpleName.charAt(0)) + simpleName.substring(1);
}
facesConfig.addValidator(value, clazz.getName());
if (val.isDefault())
{
ApplicationImpl app = null;
if (facesConfig.getApplications().isEmpty())
{
app = new ApplicationImpl();
}
else
{
app = (ApplicationImpl) facesConfig.getApplications().get(0);
}
app.addDefaultValidatorId(value);
}
}
}
}
classes = map.get(FacesRenderer.class);
if (classes != null && !classes.isEmpty())
{
for (Class<?> clazz : classes)
{
FacesRenderer rend = clazz.getAnnotation(FacesRenderer.class);
if (rend != null)
{
String renderKitId = rend.renderKitId();
if (renderKitId == null)
{
renderKitId = RenderKitFactory.HTML_BASIC_RENDER_KIT;
}
if (log.isLoggable(Level.FINEST))
{
log.finest("addRenderer(" + renderKitId + ", "
+ rend.componentFamily() + ", " + rend.rendererType()
+ ", " + clazz.getName() + ')');
}
org.apache.myfaces.config.impl.element.RenderKitImpl renderKit =
(org.apache.myfaces.config.impl.element.RenderKitImpl)
facesConfig.getRenderKit(renderKitId);
if (renderKit == null)
{
renderKit = new org.apache.myfaces.config.impl.element.RenderKitImpl();
renderKit.setId(renderKitId);
facesConfig.addRenderKit(renderKit);
}
org.apache.myfaces.config.impl.element.RendererImpl renderer =
new org.apache.myfaces.config.impl.element.RendererImpl();
renderer.setComponentFamily(rend.componentFamily());
renderer.setRendererClass(clazz.getName());
renderer.setRendererType(rend.rendererType());
renderKit.addRenderer(renderer);
}
}
}
classes = map.get(NamedEvent.class);
if (classes != null && !classes.isEmpty())
{
handleNamedEvent(facesConfig, classes);
}
classes = map.get(FacesBehavior.class);
if (classes != null && !classes.isEmpty())
{
handleFacesBehavior(facesConfig, classes);
}
classes = map.get(FacesBehaviorRenderer.class);
if (classes != null && !classes.isEmpty())
{
handleFacesBehaviorRenderer(facesConfig, classes);
}
return facesConfig;
}