package org.kie.server.swarm; import java.io.File; import java.util.HashSet; import java.util.Set; import org.jboss.shrinkwrap.api.Filters; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.importer.ExplodedImporter; import org.kie.server.api.KieServerConstants; import org.kie.server.api.model.KieContainerResource; import org.kie.server.api.model.KieContainerStatus; import org.kie.server.api.model.ReleaseId; import org.kie.server.services.impl.storage.KieServerState; import org.kie.server.services.impl.storage.file.KieServerStateFileRepository; import org.wildfly.swarm.Swarm; import org.wildfly.swarm.config.security.Flag; import org.wildfly.swarm.config.security.SecurityDomain; import org.wildfly.swarm.config.security.security_domain.ClassicAuthentication; import org.wildfly.swarm.config.security.security_domain.authentication.LoginModule; import org.wildfly.swarm.jaxrs.JAXRSArchive; import org.wildfly.swarm.security.SecurityFraction; import org.wildfly.swarm.undertow.WARArchive; public abstract class AbstractKieServerMain { private static String configFolder = System.getProperty("org.kie.server.swarm.conf", "src/main/config"); private static String webFolder = "src/main/webapp"; protected static void installKJars(String[] args) { if (args == null || args.length == 0) { return; } String serverId = System.getProperty(KieServerConstants.KIE_SERVER_ID); String controller = System.getProperty(KieServerConstants.KIE_SERVER_CONTROLLER); if ( controller != null) { System.out.println("Controller is configured ("+controller+") - no local kjars can be installed"); return; } // proceed only when kie server id is given and there is no controller if (serverId != null) { KieServerStateFileRepository repository = new KieServerStateFileRepository(); KieServerState currentState = repository.load(serverId); Set<KieContainerResource> containers = new HashSet<KieContainerResource>(); for (String gav : args) { String[] gavElements = gav.split(":"); ReleaseId releaseId = new ReleaseId(gavElements[0], gavElements[1], gavElements[2]); KieContainerResource container = new KieContainerResource(releaseId.getArtifactId(), releaseId, KieContainerStatus.STARTED); containers.add(container); } currentState.setContainers(containers); repository.store(serverId, currentState); } } protected static JAXRSArchive createDeployment(Swarm container) throws Exception { System.out.println("\tConfiguration folder is " + configFolder); LoginModule<?> loginModule = new LoginModule<>("UsersRoles"); loginModule.flag(Flag.REQUIRED) .code("UsersRoles") .moduleOption("usersProperties", configFolder + "/security/application-users.properties") .moduleOption("rolesProperties", configFolder + "/security/application-roles.properties"); SecurityDomain<?> security = new SecurityDomain<>("other") .classicAuthentication(new ClassicAuthentication<>() .loginModule(loginModule)); container.fraction(new SecurityFraction().securityDomain(security)); JAXRSArchive deployment = ShrinkWrap.create(JAXRSArchive.class, "kie-server.war"); deployment.staticContent(); deployment.addAllDependencies(); deployment.addAsWebInfResource(new File(configFolder + "/web/web.xml"), "web.xml"); deployment.addAsWebInfResource(new File(configFolder + "/web/jboss-web.xml"), "jboss-web.xml"); return deployment; } }