package org.jboss.seam.security.externaltest.integration.client;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import javax.enterprise.inject.spi.Extension;
import org.jboss.seam.security.external.ResponseHandler;
import org.jboss.seam.security.external.dialogues.DialogueContextExtension;
import org.jboss.seam.security.external.virtualapplications.VirtualApplicationContextExtension;
import org.jboss.seam.security.externaltest.integration.MetaDataLoader;
import org.jboss.seam.security.externaltest.integration.openid.op.OpCustomizer;
import org.jboss.seam.security.externaltest.integration.openid.rp.RpCustomizer;
import org.jboss.seam.security.externaltest.integration.saml.idp.IdpCustomizer;
import org.jboss.seam.security.externaltest.integration.saml.sp.SpCustomizer;
import org.jboss.shrinkwrap.api.GenericArchive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.importer.ZipImporter;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jboss.shrinkwrap.resolver.api.DependencyResolvers;
import org.jboss.shrinkwrap.resolver.api.maven.MavenDependencyResolver;
class ArchiveBuilder {
static WebArchive idpArchive;
static WebArchive spArchive;
static Map<String, WebArchive> webArchives = new HashMap<String, WebArchive>();
static WebArchive getArchive(String entity) {
WebArchive webArchive = webArchives.get(entity);
if (webArchive == null) {
webArchive = createTestArchive(entity);
webArchives.put(entity, webArchive);
}
return webArchive;
}
static private WebArchive createTestArchive(String entity) {
WebArchive war = ShrinkWrap.create(WebArchive.class, entity + ".war");
war.addAsLibraries(DependencyResolvers.use(MavenDependencyResolver.class)
.loadReposFromPom("../external/pom.xml")
.artifact("org.jboss.solder:solder-impl")
.artifact("org.jboss.seam.security:seam-security")
.artifact("org.openid4java:openid4java-consumer:pom").exclusion("xerces:xercesImpl")
.artifact("nekohtml:nekohtml")
.artifact("org.apache:xmlsec")
.artifact("commons-httpclient:commons-httpclient")
.resolveAs(GenericArchive.class));
war.addAsLibraries(
ShrinkWrap.create(ZipImporter.class, "seam-security-external.jar")
.importFrom(new File("../external/target/seam-security-external.jar"))
.as(JavaArchive.class));
war.addAsWebInfResource("WEB-INF/" + entity + "-beans.xml", "beans.xml");
war.addAsWebInfResource("WEB-INF/" + entity + "-seam-beans.xml", "classes/META-INF/seam-beans.xml");
war.addAsWebInfResource("WEB-INF/context.xml", "context.xml");
war.addPackage(MetaDataLoader.class.getPackage());
if (entity.equals("sp")) {
war.addPackage(SpCustomizer.class.getPackage());
war.addAsWebInfResource("test_keystore.jks", "classes/test_keystore.jks");
} else if (entity.equals("idp")) {
war.addPackage(IdpCustomizer.class.getPackage());
war.addAsWebInfResource("test_keystore.jks", "classes/test_keystore.jks");
} else if (entity.equals("op")) {
war.addPackage(OpCustomizer.class.getPackage());
} else if (entity.equals("rp")) {
war.addPackage(RpCustomizer.class.getPackage());
}
return war;
}
}