All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.contextfw.web.application.internal.component.ElementBuilder Maven / Gradle / Ivy

package net.contextfw.web.application.internal.component;

import net.contextfw.web.application.component.DOMBuilder;

class ElementBuilder extends NamedBuilder {

    private final ComponentBuilder componentBuilder;
    
    protected ElementBuilder(ComponentBuilder componentBuilder, PropertyAccess propertyAccess, String name, String accessName) {
        super(propertyAccess, name, accessName);
        this.componentBuilder = componentBuilder;
    }

    @Override
    void buildNamedValue(DOMBuilder b, String name, Object value) {
        if (value != null) {
            if (componentBuilder.isBuildable(value.getClass())) {
                componentBuilder.build(name == null ? b : b.descend(name), value);
            } else if (value instanceof Iterable) {
                DOMBuilder child = b.descend(name);
                for (Object i : ((Iterable) value)) {
                    componentBuilder.build(child, i);
                }
            } else if (value instanceof Object[]) {
                DOMBuilder child = b.descend(name);
                for (Object i : ((Object[]) value)) {
                    componentBuilder.build(child, i);
                }
            } else {
                b.descend(name).text(value);
            }
        }
    }
}