Search in sources :

Example 1 with FacesComponent

use of jakarta.faces.component.FacesComponent in project myfaces by apache.

the class AnnotationConfigurator method createFacesConfig.

/**
 * TODO: Implement strategy pattern over this method.
 *
 * @param map
 * @return
 */
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 = (FacesComponent) 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(value, new ComponentTagDeclarationImpl(value, comp.namespace(), tagName));
                }
            }
        }
    }
    classes = map.get(FacesConverter.class);
    if (classes != null && !classes.isEmpty()) {
        for (Class<?> clazz : classes) {
            FacesConverter conv = (FacesConverter) 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 = (FacesValidator) 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 = (FacesRenderer) 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);
    }
    classes = map.get(FaceletsResourceResolver.class);
    if (classes != null && !classes.isEmpty()) {
        handleFaceletsResourceResolver(facesConfig, classes);
    }
    return facesConfig;
}
Also used : FacesBehaviorRenderer(jakarta.faces.render.FacesBehaviorRenderer) ApplicationImpl(org.apache.myfaces.config.impl.element.ApplicationImpl) ConverterImpl(org.apache.myfaces.config.impl.element.ConverterImpl) ComponentImpl(org.apache.myfaces.config.impl.element.ComponentImpl) ComponentTagDeclarationImpl(org.apache.myfaces.config.impl.element.ComponentTagDeclarationImpl) FaceletsResourceResolver(jakarta.faces.view.facelets.FaceletsResourceResolver) FacesConfigImpl(org.apache.myfaces.config.impl.element.FacesConfigImpl) FacesValidator(jakarta.faces.validator.FacesValidator) FacesRenderer(jakarta.faces.render.FacesRenderer) FacesConverter(jakarta.faces.convert.FacesConverter) NamedEvent(jakarta.faces.event.NamedEvent) FacesException(jakarta.faces.FacesException) FacesComponent(jakarta.faces.component.FacesComponent) FacesBehavior(jakarta.faces.component.behavior.FacesBehavior)

Example 2 with FacesComponent

use of jakarta.faces.component.FacesComponent in project mojarra by eclipse-ee4j.

the class FacesComponentTagLibrary method findFacesComponentUsageForLocalName.

private FacesComponentUsage findFacesComponentUsageForLocalName(String ns, String localName) {
    FacesComponentUsage result = null;
    Util.notNull("namespace", ns);
    Util.notNull("tagName", localName);
    if (!ns.equals(getNamespace())) {
        return result;
    }
    List<FacesComponentUsage> componentsForNamespace = appAss.getComponentsForNamespace(ns);
    String tagName;
    for (FacesComponentUsage cur : componentsForNamespace) {
        FacesComponent curFacesComponent = cur.getAnnotation();
        tagName = curFacesComponent.tagName();
        // if the current entry has an explicitly declared tagName...
        if (null != tagName && 0 < tagName.length()) {
            // compare it to the argument tagName
            if (localName.equals(tagName)) {
                result = cur;
                break;
            }
        } else if (null != tagName) {
            tagName = cur.getTarget().getSimpleName();
            tagName = tagName.substring(0, 1).toLowerCase() + tagName.substring(1);
            if (localName.equals(tagName)) {
                result = cur;
                break;
            }
        }
    }
    return result;
}
Also used : FacesComponent(jakarta.faces.component.FacesComponent) FacesComponentUsage(com.sun.faces.application.annotation.FacesComponentUsage)

Aggregations

FacesComponent (jakarta.faces.component.FacesComponent)2 FacesComponentUsage (com.sun.faces.application.annotation.FacesComponentUsage)1 FacesException (jakarta.faces.FacesException)1 FacesBehavior (jakarta.faces.component.behavior.FacesBehavior)1 FacesConverter (jakarta.faces.convert.FacesConverter)1 NamedEvent (jakarta.faces.event.NamedEvent)1 FacesBehaviorRenderer (jakarta.faces.render.FacesBehaviorRenderer)1 FacesRenderer (jakarta.faces.render.FacesRenderer)1 FacesValidator (jakarta.faces.validator.FacesValidator)1 FaceletsResourceResolver (jakarta.faces.view.facelets.FaceletsResourceResolver)1 ApplicationImpl (org.apache.myfaces.config.impl.element.ApplicationImpl)1 ComponentImpl (org.apache.myfaces.config.impl.element.ComponentImpl)1 ComponentTagDeclarationImpl (org.apache.myfaces.config.impl.element.ComponentTagDeclarationImpl)1 ConverterImpl (org.apache.myfaces.config.impl.element.ConverterImpl)1 FacesConfigImpl (org.apache.myfaces.config.impl.element.FacesConfigImpl)1