package org.jboss.shrinkwrap.impl; import org.jboss.shrinkwrap.api.Archive; import org.jboss.shrinkwrap.api.ArchivePath; import org.jboss.shrinkwrap.api.ArchivePaths; import org.jboss.shrinkwrap.api.BeanArchive; import org.jboss.shrinkwrap.api.BeanDiscoveryMode; import org.jboss.shrinkwrap.impl.base.path.BasicPath; import org.jboss.shrinkwrap.impl.base.spec.JavaArchiveImpl; public class BeanArchiveImpl extends JavaArchiveImpl implements BeanArchive { //-------------------------------------------------------------------------------------|| // Class Members ----------------------------------------------------------------------|| //-------------------------------------------------------------------------------------|| /** * Path to the manifests inside of the Archive. */ private static final ArchivePath PATH_MANIFEST = new BasicPath("META-INF"); /** * Path to the resources inside of the Archive. */ private static final ArchivePath PATH_RESOURCE = new BasicPath("/"); /** * Path to the classes inside of the Archive. */ private static final ArchivePath PATH_CLASSES = new BasicPath("/"); /** * Beans XML object */ private BeansXml descriptor; public BeanArchiveImpl(final Archive<?> delegate) { super(delegate); // add beans.xml descriptor descriptor = new BeansXml(); addAsManifestResource(descriptor, ArchivePaths.create("beans.xml")); } //-------------------------------------------------------------------------------------|| // Required Implementations -----------------------------------------------------------|| //-------------------------------------------------------------------------------------|| //-------------------------------------------------------------------------------------|| // Required Implementations - BeanArchive ---------------------------------------------|| //-------------------------------------------------------------------------------------|| @Override public BeanArchive decorate(Class<?>... classes) { descriptor.decorators(classes); addClasses(classes); return covarientReturn(); } @Override public BeanArchive intercept(Class<?>... classes) { descriptor.interceptors(classes); addClasses(classes); return covarientReturn(); } @Override public BeanArchive alternate(Class<?>... classes) { descriptor.alternatives(classes); addClasses(classes); return covarientReturn(); } @Override public BeanArchive stereotype(Class<?>... classes) { descriptor.stereotype(classes); addClasses(classes); return covarientReturn(); } @Override public BeanArchive exclude(BeansXml.Exclude... excludes) { descriptor.excludeFilters(excludes); return covarientReturn(); } @Override protected BeanArchive covarientReturn() { return (BeanArchive) super.covarientReturn(); } @Override public BeanArchive beanDiscoveryMode(BeanDiscoveryMode mode) { descriptor.setBeanDiscoveryMode(mode); return covarientReturn(); } @Override public BeanArchive annotated() { return beanDiscoveryMode(BeanDiscoveryMode.ANNOTATED); } }