package com.softwaremill.common.dbtest;
import com.google.common.base.Charsets;
import org.jboss.shrinkwrap.api.ArchivePaths;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.ByteArrayAsset;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import com.softwaremill.common.cdi.persistence.EntityWriter;
import com.softwaremill.common.cdi.transaction.TransactionalInterceptor;
/**
* @author Adam Warski (adam at warski dot org)
*/
public abstract class ArchiveConfigurator {
public JavaArchive createTestArchive() {
JavaArchive ar = configureBeans(ShrinkWrap.create(JavaArchive.class))
.addPackage(EntityWriter.class.getPackage())
.addPackage(TransactionalInterceptor.class.getPackage());
// Creating beans.xml
StringBuilder beansXmlBuilder = new StringBuilder();
beansXmlBuilder.append("<beans>");
fillBeansXml(beansXmlBuilder);
beansXmlBuilder.append("</beans>");
ar = ar.addAsManifestResource(
new ByteArrayAsset(beansXmlBuilder.toString().getBytes(Charsets.UTF_8)),
ArchivePaths.create("beans.xml"));
return ar;
}
/**
* Implement this and add beans that are tested in the test and which should be deployed.
*/
protected abstract JavaArchive configureBeans(JavaArchive ar);
/**
* Overwrite this to add custom configuration to beans.xml.
*/
protected void fillBeansXml(StringBuilder sb) {
}
}