Search in sources :

Example 1 with ComponentImpl

use of org.apache.myfaces.config.impl.element.ComponentImpl in project myfaces by apache.

the class FacesConfigUnmarshallerImpl method processComponent.

protected ComponentImpl processComponent(Node node) {
    ComponentImpl obj = new ComponentImpl();
    onChild("component-type", node, (n) -> {
        obj.setComponentType(getTextContent(n));
    });
    onChild("component-class", node, (n) -> {
        obj.setComponentClass(getTextContent(n));
    });
    onChild("attribute", node, (n) -> {
        AttributeImpl a = new AttributeImpl();
        onChild("description", n, (cn) -> {
            a.addDescription(getTextContent(cn));
        });
        onChild("display-name", n, (cn) -> {
            a.addDisplayName(getTextContent(cn));
        });
        onChild("icon", n, (cn) -> {
            a.addIcon(getTextContent(cn));
        });
        onChild("attribute-name", n, (cn) -> {
            a.setAttributeName(getTextContent(cn));
        });
        onChild("attribute-class", n, (cn) -> {
            a.setAttributeClass(getTextContent(cn));
        });
        onChild("default-value", n, (cn) -> {
            a.setDefaultValue(getTextContent(cn));
        });
        onChild("suggested-value", n, (cn) -> {
            a.setSuggestedValue(getTextContent(cn));
        });
        onChild("attribute-extension", n, (cn) -> {
            a.addAttributeExtension(getTextContent(cn));
        });
        obj.addAttribute(a);
    });
    onChild("property", node, (n) -> {
        PropertyImpl p = new PropertyImpl();
        onChild("description", n, (cn) -> {
            p.addDescription(getTextContent(cn));
        });
        onChild("display-name", n, (cn) -> {
            p.addDisplayName(getTextContent(cn));
        });
        onChild("icon", n, (cn) -> {
            p.addIcon(getTextContent(cn));
        });
        onChild("property-name", n, (cn) -> {
            p.setPropertyName(getTextContent(cn));
        });
        onChild("property-class", n, (cn) -> {
            p.setPropertyClass(getTextContent(cn));
        });
        onChild("default-value", n, (cn) -> {
            p.setDefaultValue(getTextContent(cn));
        });
        onChild("suggested-value", n, (cn) -> {
            p.setSuggestedValue(getTextContent(cn));
        });
        onChild("property-extension", n, (cn) -> {
            p.addPropertyExtension(getTextContent(cn));
        });
        obj.addProperty(p);
    });
    return obj;
}
Also used : AttributeImpl(org.apache.myfaces.config.impl.element.AttributeImpl) PropertyImpl(org.apache.myfaces.config.impl.element.PropertyImpl) ComponentImpl(org.apache.myfaces.config.impl.element.ComponentImpl)

Example 2 with ComponentImpl

use of org.apache.myfaces.config.impl.element.ComponentImpl 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)

Aggregations

ComponentImpl (org.apache.myfaces.config.impl.element.ComponentImpl)2 FacesException (jakarta.faces.FacesException)1 FacesComponent (jakarta.faces.component.FacesComponent)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 AttributeImpl (org.apache.myfaces.config.impl.element.AttributeImpl)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 PropertyImpl (org.apache.myfaces.config.impl.element.PropertyImpl)1