public ComponentFactory(ComponentDefinition def) { this.def = def; this.clazz = def.getComponentClass(); }
/** * Adds a component definition to the registry. * * @param item Item to add. */ @Override public void register(ComponentDefinition item) { super.register(item); classToDefinition.put(item.getComponentClass(), item); }
/** * A special processor may modify the component's implementation class, as long as the * substituted class is a subclass of the original. * * @param clazz Component implementation class to substitute. */ @FactoryParameter("impl") protected void setImplementationClass(Class<? extends BaseComponent> clazz) { Class<? extends BaseComponent> originalClazz = def.getComponentClass(); if (clazz != null && !originalClazz.isAssignableFrom(clazz)) { throw new ComponentException("Implementation class must extend class " + originalClazz.getName()); } this.clazz = clazz; }
private BaseComponent materialize(PageElement element, BaseComponent parent, List<DeferredSetter> deferrals, Map<String, Object> args) { ComponentDefinition def = element.getDefinition(); boolean merge = parent instanceof Page && def.getComponentClass() == Page.class; boolean skip = def.getComponentClass() == Page.class && parent != null; Map<String, String> attributes; BaseComponent component;