package org.etk.core.rest; import org.etk.core.rest.impl.ApplicationContext; import org.etk.core.rest.impl.ObjectFactory; import org.etk.core.rest.impl.ObjectModel; import org.etk.kernel.container.KernelContainerContext; /** * Factory provides object that is created and is manageable by * inversion-of-control container, PicoContainer. * * @param <T> any extension of {@link ObjectModel} */ public class ContainerObjectFactory<T extends ObjectModel> implements ObjectFactory<T> { /** * Object model. */ protected final T model; /** * @param model object model * @see ObjectModel */ public ContainerObjectFactory(T model) { this.model = model; } /** * {@inheritDoc} */ public Object getInstance(ApplicationContext context) { Class<?> clazz = model.getObjectClass(); return KernelContainerContext.getCurrentContainer().getComponentInstanceOfType(clazz); } /** * {@inheritDoc} */ public T getObjectModel() { return model; } }