package org.qi4j.library.rdf;
import org.junit.Test;
import org.qi4j.api.common.Visibility;
import org.qi4j.api.composite.TransientComposite;
import org.qi4j.api.structure.ApplicationDescriptor;
import org.qi4j.bootstrap.*;
import org.qi4j.library.rdf.model.Model2XML;
import org.w3c.dom.Document;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
/**
* TODO
*/
public class Model2XMLTest
{
@Test
public void testModel2XML() throws AssemblyException, TransformerException
{
Energy4Java is = new Energy4Java( );
ApplicationDescriptor model = is.newApplicationModel( new ApplicationAssembler()
{
@Override
public ApplicationAssembly assemble( ApplicationAssemblyFactory applicationFactory ) throws AssemblyException
{
ApplicationAssembly assembly = applicationFactory.newApplicationAssembly();
assembly.setName( "Test application" );
LayerAssembly webLayer = assembly.layer( "Web" );
LayerAssembly domainLayer = assembly.layer( "Domain" );
LayerAssembly infrastructureLayer = assembly.layer( "Infrastructure" );
webLayer.uses( domainLayer, infrastructureLayer );
domainLayer.uses( infrastructureLayer );
ModuleAssembly rest = webLayer.module( "REST" );
rest.transients( TestTransient.class ).visibleIn( Visibility.layer );
domainLayer.module( "Domain" );
infrastructureLayer.module( "Database" );
return assembly;
}
} );
Document document = new Model2XML().map( model );
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty( "indent", "yes" );
transformer.setOutputProperty( "{http://xml.apache.org/xslt}indent-amount", "2" );
transformer.transform( new DOMSource( document ), new StreamResult( System.out ) );
}
interface TestTransient
extends TransientComposite
{}
}