package org.qi4j.library.struts2;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import org.qi4j.api.common.Visibility;
import org.qi4j.api.composite.Composite;
import org.qi4j.api.composite.TransientComposite;
import org.qi4j.bootstrap.Assembler;
import org.qi4j.bootstrap.AssemblyException;
import org.qi4j.bootstrap.ModuleAssembly;
public class ActionConfiguration
implements Assembler, Serializable
{
static final long serialVersionUID = 1L;
private final Set<Class> objectTypes;
private final Set<Class<? extends Composite>> compositeTypes;
public ActionConfiguration()
{
compositeTypes = new HashSet<Class<? extends Composite>>();
objectTypes = new HashSet<Class>();
}
public void addObjects( Class... objectTypes )
throws AssemblyException
{
this.objectTypes.addAll( Arrays.asList( objectTypes ) );
}
public void addComposites( Class<? extends Composite>... compositeTypes )
throws AssemblyException
{
this.compositeTypes.addAll( Arrays.asList( compositeTypes ) );
}
public Set<Class> getClasses()
{
Set<Class> classes = new HashSet<Class>( objectTypes );
classes.addAll( compositeTypes );
return Collections.unmodifiableSet( classes );
}
@Override
public void assemble( ModuleAssembly module )
throws AssemblyException
{
module.objects( objectTypes.toArray( new Class[]{ } ) ).visibleIn( Visibility.module );
module.transients( (Class<? extends TransientComposite>[]) compositeTypes.toArray( new Class[]{ } ) )
.visibleIn( Visibility.module );
}
}