Search in sources :

Example 1 with ApplicationEnvironment

use of org.wildfly.swarm.bootstrap.env.ApplicationEnvironment in project wildfly-swarm by wildfly-swarm.

the class ApplicationModuleFinderTest method testDependency.

@Test
public void testDependency() {
    // Mocks
    ApplicationEnvironment env = mock(ApplicationEnvironment.class);
    when(env.getDependencies()).thenReturn(Collections.singleton("org.jboss.forge.addon:ui-spi:jar:3.4.0.Final"));
    ModuleSpec.Builder builder = mock(ModuleSpec.Builder.class);
    ApplicationModuleFinder sut = new ApplicationModuleFinder();
    sut.addDependencies(builder, env);
    verify(builder, times(1)).addResourceRoot(any());
}
Also used : ModuleSpec(org.jboss.modules.ModuleSpec) ApplicationEnvironment(org.wildfly.swarm.bootstrap.env.ApplicationEnvironment) Test(org.junit.Test)

Example 2 with ApplicationEnvironment

use of org.wildfly.swarm.bootstrap.env.ApplicationEnvironment in project wildfly-swarm by wildfly-swarm.

the class ApplicationModuleFinder method buildModule.

@Override
public void buildModule(ModuleSpec.Builder builder, ModuleLoader delegateLoader) throws ModuleLoadException {
    ApplicationEnvironment env = ApplicationEnvironment.get();
    env.bootstrapModules().forEach((module) -> {
        builder.addDependency(DependencySpec.createModuleDependencySpec(PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), ClassFilters.acceptAll(), ClassFilters.acceptAll(), null, module, false));
    });
    try {
        addAsset(builder, env);
    } catch (IOException e) {
        throw new ModuleLoadException(e);
    }
    addDependencies(builder, env);
    try {
        addClasspathJars(builder);
    } catch (IOException e) {
        throw new ModuleLoadException(e);
    }
    builder.addDependency(DependencySpec.createModuleDependencySpec("org.jboss.modules"));
    builder.addDependency(DependencySpec.createModuleDependencySpec("org.jboss.shrinkwrap"));
    builder.addDependency(DependencySpec.createModuleDependencySpec("org.wildfly.swarm.configuration", false, true));
    builder.addDependency(DependencySpec.createModuleDependencySpec("sun.jdk", false, true));
    builder.addDependency(DependencySpec.createModuleDependencySpec(PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), ClassFilters.acceptAll(), ClassFilters.acceptAll(), null, "org.wildfly.swarm.container:api", true));
    builder.addDependency(DependencySpec.createLocalDependencySpec());
}
Also used : ModuleLoadException(org.jboss.modules.ModuleLoadException) IOException(java.io.IOException) ApplicationEnvironment(org.wildfly.swarm.bootstrap.env.ApplicationEnvironment)

Example 3 with ApplicationEnvironment

use of org.wildfly.swarm.bootstrap.env.ApplicationEnvironment in project wildfly-swarm by wildfly-swarm.

the class ContainerModuleFinder method buildModule.

@Override
public void buildModule(ModuleSpec.Builder builder, ModuleLoader delegateLoader) throws ModuleLoadException {
    builder.addDependency(DependencySpec.createModuleDependencySpec(PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), ClassFilters.acceptAll(), ClassFilters.acceptAll(), null, "org.wildfly.swarm.spi", false));
    builder.addDependency(DependencySpec.createModuleDependencySpec(PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), ClassFilters.acceptAll(), ClassFilters.acceptAll(), null, "org.wildfly.swarm.container:runtime", false));
    builder.addDependency(DependencySpec.createModuleDependencySpec(PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), ClassFilters.acceptAll(), ClassFilters.acceptAll(), null, "org.wildfly.swarm.bootstrap", false));
    builder.addDependency(DependencySpec.createModuleDependencySpec(PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), ClassFilters.acceptAll(), ClassFilters.acceptAll(), null, "org.jboss.jandex", false));
    builder.addDependency(DependencySpec.createModuleDependencySpec(PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), ClassFilters.acceptAll(), ClassFilters.acceptAll(), null, "org.jboss.weld.se", false));
    builder.addDependency(DependencySpec.createModuleDependencySpec(PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), ClassFilters.acceptAll(), ClassFilters.acceptAll(), null, "javax.enterprise.api", false));
    builder.addDependency(DependencySpec.createModuleDependencySpec(PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), ClassFilters.acceptAll(), ClassFilters.acceptAll(), null, "org.apache.xalan", true));
    builder.addDependency(DependencySpec.createModuleDependencySpec(PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), ClassFilters.acceptAll(), ClassFilters.acceptAll(), null, "org.apache.xerces", false));
    builder.addDependency(DependencySpec.createModuleDependencySpec(PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), ClassFilters.acceptAll(), ClassFilters.acceptAll(), null, "org.codehaus.woodstox", false));
    ApplicationEnvironment environment = ApplicationEnvironment.get();
    environment.bootstrapModules().forEach((module) -> {
        builder.addDependency(DependencySpec.createModuleDependencySpec(PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), PathFilters.acceptAll(), ClassFilters.acceptAll(), ClassFilters.acceptAll(), null, module + ":" + RUNTIME_SLOT, false));
    });
}
Also used : ApplicationEnvironment(org.wildfly.swarm.bootstrap.env.ApplicationEnvironment)

Example 4 with ApplicationEnvironment

use of org.wildfly.swarm.bootstrap.env.ApplicationEnvironment in project wildfly-swarm by wildfly-swarm.

the class RuntimeDeployer method deploy.

public void deploy(Archive<?> deployment, String asName) throws DeploymentException {
    if (deployment.getName().endsWith(".rar")) {
        // Track any .rar deployments
        this.rarDeploymentNames.add(deployment.getName());
    } else if (!this.rarDeploymentNames.isEmpty()) {
        // Add any previous .rar deployments as dependencies
        // of any non-.rar deployments.
        JARArchive mutable = deployment.as(JARArchive.class);
        this.rarDeploymentNames.forEach(e -> {
            mutable.addModule("deployment." + e);
        });
    }
    try (AutoCloseable deploymentTimer = Performance.time("deployment: " + deployment.getName())) {
        // see DependenciesContainer#addAllDependencies()
        if (deployment instanceof DependenciesContainer) {
            DependenciesContainer<?> depContainer = (DependenciesContainer) deployment;
            if (depContainer.hasMarker(DependenciesContainer.ALL_DEPENDENCIES_MARKER)) {
                if (!depContainer.hasMarker(ALL_DEPENDENCIES_ADDED_MARKER)) {
                    ApplicationEnvironment appEnv = ApplicationEnvironment.get();
                    if (ApplicationEnvironment.Mode.UBERJAR == appEnv.getMode()) {
                        ArtifactLookup artifactLookup = ArtifactLookup.get();
                        for (String gav : appEnv.getDependencies()) {
                            depContainer.addAsLibrary(artifactLookup.artifact(gav));
                        }
                    } else {
                        Set<String> paths = appEnv.resolveDependencies(Collections.emptyList());
                        for (String path : paths) {
                            final File pathFile = new File(path);
                            if (path.endsWith(".jar")) {
                                depContainer.addAsLibrary(pathFile);
                            } else if (pathFile.isDirectory()) {
                                depContainer.merge(ShrinkWrap.create(GenericArchive.class).as(ExplodedImporter.class).importDirectory(pathFile).as(GenericArchive.class), "/WEB-INF/classes", Filters.includeAll());
                            }
                        }
                    }
                    depContainer.addMarker(ALL_DEPENDENCIES_ADDED_MARKER);
                }
            }
        }
        this.deploymentContext.activate(deployment, asName, !this.implicitDeploymentsComplete);
        // 2. give fractions a chance to handle the deployment
        for (DeploymentProcessor processor : this.deploymentProcessors) {
            processor.process();
        }
        this.deploymentContext.deactivate();
        if (DeployerMessages.MESSAGES.isDebugEnabled()) {
            DeployerMessages.MESSAGES.deploying(deployment.getName());
            Map<ArchivePath, Node> ctx = deployment.getContent();
            for (Map.Entry<ArchivePath, Node> each : ctx.entrySet()) {
                DeployerMessages.MESSAGES.deploymentContent(each.getKey().toString());
            }
        }
        if (BootstrapProperties.flagIsSet(SwarmProperties.EXPORT_DEPLOYMENT)) {
            String exportLocation = System.getProperty(SwarmProperties.EXPORT_DEPLOYMENT);
            if (exportLocation != null) {
                Path archivePath = null;
                if (exportLocation.toLowerCase().equals("true")) {
                    archivePath = Paths.get(deployment.getName());
                } else {
                    Path exportDir = Paths.get(exportLocation);
                    Files.createDirectories(exportDir);
                    archivePath = exportDir.resolve(deployment.getName());
                }
                final File out = archivePath.toFile();
                DeployerMessages.MESSAGES.exportingDeployment(out.getAbsolutePath());
                deployment.as(ZipExporter.class).exportTo(out, true);
            }
        }
        byte[] hash = this.contentRepository.addContent(deployment);
        final ModelNode deploymentAdd = new ModelNode();
        deploymentAdd.get(OP).set(ADD);
        deploymentAdd.get(OP_ADDR).set("deployment", deployment.getName());
        deploymentAdd.get(RUNTIME_NAME).set(deployment.getName());
        deploymentAdd.get(ENABLED).set(true);
        deploymentAdd.get(PERSISTENT).set(true);
        ModelNode content = deploymentAdd.get(CONTENT).add();
        content.get(HASH).set(hash);
        int deploymentTimeout = Integer.getInteger(SwarmProperties.DEPLOYMENT_TIMEOUT, 300);
        final ModelNode opHeaders = new ModelNode();
        opHeaders.get(BLOCKING_TIMEOUT).set(deploymentTimeout);
        deploymentAdd.get(OPERATION_HEADERS).set(opHeaders);
        BootstrapLogger.logger("org.wildfly.swarm.runtime.deployer").info("deploying " + deployment.getName());
        System.setProperty(SwarmInternalProperties.CURRENT_DEPLOYMENT, deployment.getName());
        try {
            ModelNode result = client.execute(deploymentAdd);
            ModelNode outcome = result.get("outcome");
            if (outcome.asString().equals("success")) {
                return;
            }
            ModelNode description = result.get("failure-description");
            throw new DeploymentException(deployment, SwarmMessages.MESSAGES.deploymentFailed(description.asString()));
        } catch (IOException e) {
            throw SwarmMessages.MESSAGES.deploymentFailed(e, deployment);
        }
    } catch (Exception e) {
        throw new DeploymentException(deployment, e);
    }
}
Also used : ApplicationEnvironment(org.wildfly.swarm.bootstrap.env.ApplicationEnvironment) ADD(org.jboss.as.controller.descriptions.ModelDescriptionConstants.ADD) DefaultDeploymentCreator(org.wildfly.swarm.container.runtime.deployments.DefaultDeploymentCreator) DependenciesContainer(org.wildfly.swarm.spi.api.DependenciesContainer) Node(org.jboss.shrinkwrap.api.Node) PreDestroy(javax.annotation.PreDestroy) BLOCKING_TIMEOUT(org.jboss.as.controller.descriptions.ModelDescriptionConstants.BLOCKING_TIMEOUT) Map(java.util.Map) BootstrapLogger(org.wildfly.swarm.bootstrap.logging.BootstrapLogger) ENABLED(org.jboss.as.controller.descriptions.ModelDescriptionConstants.ENABLED) Any(javax.enterprise.inject.Any) Path(java.nio.file.Path) DeploymentContext(org.wildfly.swarm.container.runtime.cdi.DeploymentContext) Instance(javax.enterprise.inject.Instance) ZipImporter(org.jboss.shrinkwrap.api.importer.ZipImporter) Collection(java.util.Collection) SwarmInternalProperties(org.wildfly.swarm.spi.api.internal.SwarmInternalProperties) Set(java.util.Set) JARArchive(org.wildfly.swarm.spi.api.JARArchive) GenericArchive(org.jboss.shrinkwrap.api.GenericArchive) DeploymentException(org.wildfly.swarm.container.DeploymentException) FileSystemLayout(org.wildfly.swarm.internal.FileSystemLayout) List(java.util.List) OP(org.jboss.as.controller.descriptions.ModelDescriptionConstants.OP) Stream(java.util.stream.Stream) JavaArchive(org.jboss.shrinkwrap.api.spec.JavaArchive) CONTENT(org.jboss.as.controller.descriptions.ModelDescriptionConstants.CONTENT) ApplicationScoped(javax.enterprise.context.ApplicationScoped) ModelNode(org.jboss.dmr.ModelNode) SwarmProperties(org.wildfly.swarm.spi.api.SwarmProperties) RUNTIME_NAME(org.jboss.as.controller.descriptions.ModelDescriptionConstants.RUNTIME_NAME) DeploymentProcessor(org.wildfly.swarm.spi.api.DeploymentProcessor) TempFileProvider(org.jboss.vfs.TempFileProvider) Performance(org.wildfly.swarm.bootstrap.performance.Performance) ArrayList(java.util.ArrayList) Inject(javax.inject.Inject) Deployer(org.wildfly.swarm.container.internal.Deployer) ArchivePath(org.jboss.shrinkwrap.api.ArchivePath) DeployerMessages(org.wildfly.swarm.internal.DeployerMessages) ArtifactLookup(org.wildfly.swarm.spi.api.ArtifactLookup) ModelControllerClient(org.jboss.as.controller.client.ModelControllerClient) OPERATION_HEADERS(org.jboss.as.controller.descriptions.ModelDescriptionConstants.OPERATION_HEADERS) OP_ADDR(org.jboss.as.controller.descriptions.ModelDescriptionConstants.OP_ADDR) PERSISTENT(org.jboss.as.controller.descriptions.ModelDescriptionConstants.PERSISTENT) ShrinkWrap(org.jboss.shrinkwrap.api.ShrinkWrap) Files(java.nio.file.Files) BootstrapProperties(org.wildfly.swarm.bootstrap.util.BootstrapProperties) ExplodedImporter(org.jboss.shrinkwrap.api.importer.ExplodedImporter) SwarmMessages(org.wildfly.swarm.internal.SwarmMessages) IOException(java.io.IOException) Filters(org.jboss.shrinkwrap.api.Filters) Archive(org.jboss.shrinkwrap.api.Archive) SwarmContentRepository(org.wildfly.swarm.container.runtime.wildfly.SwarmContentRepository) ZipExporter(org.jboss.shrinkwrap.api.exporter.ZipExporter) File(java.io.File) HASH(org.jboss.as.controller.descriptions.ModelDescriptionConstants.HASH) Paths(java.nio.file.Paths) Collections(java.util.Collections) ArtifactLookup(org.wildfly.swarm.spi.api.ArtifactLookup) ZipExporter(org.jboss.shrinkwrap.api.exporter.ZipExporter) Node(org.jboss.shrinkwrap.api.Node) ModelNode(org.jboss.dmr.ModelNode) ArchivePath(org.jboss.shrinkwrap.api.ArchivePath) DeploymentProcessor(org.wildfly.swarm.spi.api.DeploymentProcessor) JARArchive(org.wildfly.swarm.spi.api.JARArchive) Path(java.nio.file.Path) ArchivePath(org.jboss.shrinkwrap.api.ArchivePath) DependenciesContainer(org.wildfly.swarm.spi.api.DependenciesContainer) IOException(java.io.IOException) ApplicationEnvironment(org.wildfly.swarm.bootstrap.env.ApplicationEnvironment) DeploymentException(org.wildfly.swarm.container.DeploymentException) IOException(java.io.IOException) GenericArchive(org.jboss.shrinkwrap.api.GenericArchive) DeploymentException(org.wildfly.swarm.container.DeploymentException) ModelNode(org.jboss.dmr.ModelNode) File(java.io.File) Map(java.util.Map)

Example 5 with ApplicationEnvironment

use of org.wildfly.swarm.bootstrap.env.ApplicationEnvironment in project wildfly-swarm by wildfly-swarm.

the class ArtifactManager method allArtifacts.

@Override
public List<JavaArchive> allArtifacts(String... groupIdExclusions) throws IOException {
    Map<String, JavaArchive> archives = new HashMap<>();
    Set<String> archivesPaths;
    final List<String> exclusions = Arrays.asList(groupIdExclusions);
    ApplicationEnvironment env = ApplicationEnvironment.get();
    archivesPaths = env.resolveDependencies(exclusions);
    // package the shrinkwrap bits
    for (final String element : archivesPaths) {
        final File artifact = new File(element);
        if (artifact.isFile()) {
            archives.put(artifact.getName(), ShrinkWrap.create(ZipImporter.class, artifact.getName()).importFrom(artifact).as(JavaArchive.class));
        } else {
            final String archiveName = FileSystemLayout.archiveNameForClassesDir(artifact.toPath());
            // pack resources and classes of the same project into one archive
            if (archives.containsKey(archiveName)) {
                archives.get(archiveName).as(ExplodedImporter.class).importDirectory(artifact);
            } else {
                archives.put(archiveName, ShrinkWrap.create(ExplodedImporter.class, archiveName).importDirectory(artifact).as(JavaArchive.class));
            }
        }
    }
    return new ArrayList<>(archives.values());
}
Also used : HashMap(java.util.HashMap) ZipImporter(org.jboss.shrinkwrap.api.importer.ZipImporter) ArrayList(java.util.ArrayList) ApplicationEnvironment(org.wildfly.swarm.bootstrap.env.ApplicationEnvironment) File(java.io.File) ExplodedImporter(org.jboss.shrinkwrap.api.importer.ExplodedImporter) JavaArchive(org.jboss.shrinkwrap.api.spec.JavaArchive)

Aggregations

ApplicationEnvironment (org.wildfly.swarm.bootstrap.env.ApplicationEnvironment)8 File (java.io.File)3 IOException (java.io.IOException)3 ArrayList (java.util.ArrayList)2 ModuleLoadException (org.jboss.modules.ModuleLoadException)2 ModuleSpec (org.jboss.modules.ModuleSpec)2 ExplodedImporter (org.jboss.shrinkwrap.api.importer.ExplodedImporter)2 ZipImporter (org.jboss.shrinkwrap.api.importer.ZipImporter)2 JavaArchive (org.jboss.shrinkwrap.api.spec.JavaArchive)2 Files (java.nio.file.Files)1 Path (java.nio.file.Path)1 Paths (java.nio.file.Paths)1 Collection (java.util.Collection)1 Collections (java.util.Collections)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 List (java.util.List)1 Map (java.util.Map)1 Set (java.util.Set)1 JarFile (java.util.jar.JarFile)1