package org.jboss.shrinkwrap.descriptor.example;
import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.exporter.ZipExporter;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.jboss.shrinkwrap.descriptor.api.Descriptors;
import org.jboss.shrinkwrap.descriptor.spec.beans.Beans;
import org.jboss.shrinkwrap.descriptor.spec.beans.BeansDef;
import org.jboss.shrinkwrap.descriptor.spec.persistence.Persistence;
import org.jboss.shrinkwrap.descriptor.spec.persistence.PersistenceDef;
import org.jboss.shrinkwrap.descriptor.spec.persistence.ProviderType;
import org.jboss.shrinkwrap.descriptor.spec.persistence.SchemaGenerationModeType;
import org.jboss.shrinkwrap.descriptor.spec.persistence.TransactionType;
public class DescriptorsExample
{
public static void main(String[] args) throws Exception
{
PersistenceDef persistence = Descriptors.create(PersistenceDef.class)
.persistenceUnit("test").transactionType(TransactionType.JTA)
.provider(ProviderType.HIBERNATE)
.jtaDataSource("java:/DefaultDS")
.classes(User.class)
.schemaGenerationMode(SchemaGenerationModeType.CREATE_DROP)
.showSql()
.formatSql()
.property("hibernate.transaction.flush_before_completion", true)
.persistenceUnit().name("another").transactionType(TransactionType.RESOURCE_LOCAL)
.provider(ProviderType.ECLIPSE_LINK)
.nonJtaDataSource("jdbc/__default")
.excludeUnlistedClasses()
.schemaGenerationMode(SchemaGenerationModeType.CREATE);
BeansDef beans = Descriptors.create(BeansDef.class)
.interceptor(InterceptorSample.class)
.interceptor(AnotherInterceptorExample.class)
.decorator(DecoratorSample.class)
.alternativeStereotype(StereotypeExample.class);
// simple empty descriptor
//beans = Descriptors.create(BeansDef.class);
JavaArchive jar = ShrinkWrap.create("test.jar", JavaArchive.class)
.addManifestResource(persistence, "persistence.xml")
.addManifestResource(beans, "beans.xml");
jar.as(ZipExporter.class).exportZip(new File("/tmp/test.jar"), true);
JAXBContext context;
Marshaller m;
context = JAXBContext.newInstance(Persistence.class);
m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, persistence.descriptor().getSchemaLocation());
m.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
m.marshal(persistence.descriptor(), System.out);
context = JAXBContext.newInstance(Beans.class);
m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, beans.descriptor().getSchemaLocation());
m.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
m.marshal(beans.descriptor(), System.out);
}
}