From fddefa9ecab449378932d9607e9294870135f6f0 Mon Sep 17 00:00:00 2001 From: Brian Stansberry Date: Thu, 26 Dec 2024 15:42:33 -0500 Subject: [PATCH] [WFCORE-7120] Move the server-side embedding logic to the server and host-controller modules --- .../jboss/as/host-controller/main/module.xml | 1 + .../base/org/jboss/as/server/main/module.xml | 1 + .../base/org/wildfly/embedded/main/module.xml | 11 +-- .../org/wildfly/embedding-spi/main/module.xml | 3 +- embedded/pom.xml | 33 --------- .../AbstractEmbeddedManagedProcess.java | 28 +++++-- .../EmbeddedHostControllerFactory.java | 12 +-- .../core/embedded/EmbeddedManagedProcess.java | 2 +- .../embedded/EmbeddedManagedProcessImpl.java | 8 +- .../core/embedded/EmbeddedProcessFactory.java | 17 +---- .../EmbeddedStandaloneServerFactory.java | 9 +-- .../core/embedded/logging/EmbeddedLogger.java | 4 - ...mbeddedServerFactorySetupUnitTestCase.java | 51 +++++++------ embedding-spi/pom.xml | 1 + .../spi/BootstrappedEmbeddedProcess.java | 22 +++++- .../spi/EmbeddedProcessBootstrap.java | 12 ++- .../embedding/spi/ProcessStateNotifier.java | 2 +- .../EmbeddedHostControllerBootstrap.java | 4 +- .../HostEmbeddedProcessBootstrap.java | 26 ++++++- .../controller/embedded/SecurityActions.java | 74 +++++++++++++++++++ ...ore.embedding.spi.EmbeddedProcessBootstrap | 6 ++ .../AbstractEmbeddedProcessBootstrap.java | 25 ++++--- .../StandaloneEmbeddedProcessBootstrap.java | 11 ++- .../jboss/as/server/logging/ServerLogger.java | 4 + ...ore.embedding.spi.EmbeddedProcessBootstrap | 6 ++ 25 files changed, 237 insertions(+), 136 deletions(-) rename {embedded/src/main/java/org/wildfly/core => host-controller/src/main/java/org/jboss/as/host/controller}/embedded/EmbeddedHostControllerBootstrap.java (96%) rename {embedded/src/main/java/org/wildfly/core => host-controller/src/main/java/org/jboss/as/host/controller}/embedded/HostEmbeddedProcessBootstrap.java (75%) create mode 100644 host-controller/src/main/java/org/jboss/as/host/controller/embedded/SecurityActions.java create mode 100644 host-controller/src/main/resources/META-INF/services/org.wildfly.core.embedding.spi.EmbeddedProcessBootstrap rename {embedded/src/main/java/org/wildfly/core => server/src/main/java/org/jboss/as/server}/embedded/AbstractEmbeddedProcessBootstrap.java (87%) rename {embedded/src/main/java/org/wildfly/core => server/src/main/java/org/jboss/as/server}/embedded/StandaloneEmbeddedProcessBootstrap.java (87%) create mode 100644 server/src/main/resources/META-INF/services/org.wildfly.core.embedding.spi.EmbeddedProcessBootstrap diff --git a/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/jboss/as/host-controller/main/module.xml b/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/jboss/as/host-controller/main/module.xml index 17dd33b9224..41b1e1d2563 100644 --- a/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/jboss/as/host-controller/main/module.xml +++ b/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/jboss/as/host-controller/main/module.xml @@ -56,6 +56,7 @@ + diff --git a/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/jboss/as/server/main/module.xml b/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/jboss/as/server/main/module.xml index bc4bdd1c955..611abc4e7a3 100644 --- a/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/jboss/as/server/main/module.xml +++ b/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/jboss/as/server/main/module.xml @@ -67,6 +67,7 @@ + diff --git a/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/wildfly/embedded/main/module.xml b/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/wildfly/embedded/main/module.xml index b5e6e2859ce..f17ec3a4e68 100644 --- a/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/wildfly/embedded/main/module.xml +++ b/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/wildfly/embedded/main/module.xml @@ -21,17 +21,12 @@ - - - - - + - + + - - diff --git a/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/wildfly/embedding-spi/main/module.xml b/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/wildfly/embedding-spi/main/module.xml index 757782923c4..a3692dd2fc8 100644 --- a/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/wildfly/embedding-spi/main/module.xml +++ b/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/wildfly/embedding-spi/main/module.xml @@ -15,7 +15,8 @@ - + + diff --git a/embedded/pom.xml b/embedded/pom.xml index 4b4a890bc7c..597b3164f9f 100644 --- a/embedded/pom.xml +++ b/embedded/pom.xml @@ -109,39 +109,6 @@ provided - - org.wildfly.core - wildfly-controller - - - * - * - - - provided - - - org.wildfly.core - wildfly-server - - - * - * - - - provided - - - org.wildfly.core - wildfly-host-controller - - - * - * - - - provided - org.jboss.msc jboss-msc diff --git a/embedded/src/main/java/org/wildfly/core/embedded/AbstractEmbeddedManagedProcess.java b/embedded/src/main/java/org/wildfly/core/embedded/AbstractEmbeddedManagedProcess.java index f617ddf5fd9..2e5137b36e6 100644 --- a/embedded/src/main/java/org/wildfly/core/embedded/AbstractEmbeddedManagedProcess.java +++ b/embedded/src/main/java/org/wildfly/core/embedded/AbstractEmbeddedManagedProcess.java @@ -7,6 +7,7 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.util.ServiceLoader; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; @@ -21,8 +22,12 @@ import org.wildfly.core.embedding.spi.EmbeddedProcessState; import org.wildfly.core.embedding.spi.ProcessStateNotifier; +/** + * Base class for modular-classloader-side implementations of {@link StandaloneServer} and {@link HostController}. + */ abstract class AbstractEmbeddedManagedProcess implements EmbeddedManagedProcess { + private final EmbeddedProcessBootstrap.Type type; private final PropertyChangeListener processStateListener; private final String[] cmdargs; private final ClassLoader embeddedModuleCL; @@ -31,7 +36,8 @@ abstract class AbstractEmbeddedManagedProcess implements EmbeddedManagedProcess private ModelControllerClient modelControllerClient; private ExecutorService executorService; - AbstractEmbeddedManagedProcess(String[] cmdargs, ClassLoader embeddedModuleCL) { + AbstractEmbeddedManagedProcess(EmbeddedProcessBootstrap.Type type, String[] cmdargs, ClassLoader embeddedModuleCL) { + this.type = type; this.cmdargs = cmdargs; this.embeddedModuleCL = embeddedModuleCL; @@ -45,12 +51,12 @@ public void propertyChange(PropertyChangeEvent evt) { } @Override - public synchronized ModelControllerClient getModelControllerClient() { + public final synchronized ModelControllerClient getModelControllerClient() { return modelControllerClient == null ? null : new DelegatingModelControllerClient(this::getActiveModelControllerClient); } @Override - public void start() throws EmbeddedProcessStartException { + public final void start() throws EmbeddedProcessStartException { EmbeddedProcessBootstrapConfiguration bootstrapConfiguration = getBootstrapConfiguration(); ClassLoader tccl = SecurityActions.getTccl(); @@ -58,7 +64,7 @@ public void start() throws EmbeddedProcessStartException { SecurityActions.setTccl(embeddedModuleCL); try { - EmbeddedProcessBootstrap bootstrap = loadEmbeddedProcessBootstrap(embeddedModuleCL); + EmbeddedProcessBootstrap bootstrap = loadEmbeddedProcessBootstrap(); embeddedProcess = bootstrap.startup(bootstrapConfiguration); if (embeddedProcess == null) { // TODO before adding embedded-spi, why did we ignore Main.determineEnvironment not providing one? @@ -83,7 +89,7 @@ public void start() throws EmbeddedProcessStartException { } @Override - public void stop() { + public final void stop() { ClassLoader tccl = SecurityActions.getTccl(); try { SecurityActions.setTccl(embeddedModuleCL); @@ -113,9 +119,17 @@ EmbeddedProcessBootstrapConfiguration getBootstrapConfiguration() { ); } - abstract EmbeddedProcessBootstrap loadEmbeddedProcessBootstrap(ClassLoader embeddedModuleCL); + private EmbeddedProcessBootstrap loadEmbeddedProcessBootstrap() { + ServiceLoader loader = ServiceLoader.load(EmbeddedProcessBootstrap.class, embeddedModuleCL); + for (EmbeddedProcessBootstrap epb : loader) { + if (type == epb.getType()) { + return epb; + } + } + throw new IllegalStateException(); + } - final synchronized void establishModelControllerClient(EmbeddedProcessState state, boolean storeState) { + private synchronized void establishModelControllerClient(EmbeddedProcessState state, boolean storeState) { ModelControllerClient newClient = null; if (state != EmbeddedProcessState.STOPPING && state != EmbeddedProcessState.STOPPED && embeddedProcess != null) { EmbeddedModelControllerClientFactory clientFactory = embeddedProcess.getModelControllerClientFactory(); diff --git a/embedded/src/main/java/org/wildfly/core/embedded/EmbeddedHostControllerFactory.java b/embedded/src/main/java/org/wildfly/core/embedded/EmbeddedHostControllerFactory.java index b2780d93dfe..6c4725a443f 100644 --- a/embedded/src/main/java/org/wildfly/core/embedded/EmbeddedHostControllerFactory.java +++ b/embedded/src/main/java/org/wildfly/core/embedded/EmbeddedHostControllerFactory.java @@ -4,6 +4,7 @@ */ package org.wildfly.core.embedded; + import java.io.File; import java.io.IOException; import java.nio.file.Files; @@ -19,7 +20,7 @@ import org.wildfly.core.embedding.spi.EmbeddedProcessBootstrapConfiguration; /** - * This is the host controller counterpart to EmbeddedProcessFactory which lives behind a module class loader. + * This is the host controller counterpart to EmbeddedProcessFactory that lives behind a module class loader. *

* Factory that sets up an embedded {@link HostController} using modular classloading. *

@@ -40,6 +41,7 @@ * @author Ken Wills * @see EmbeddedProcessFactory */ + public class EmbeddedHostControllerFactory { public static final String JBOSS_EMBEDDED_ROOT = "jboss.embedded.root"; @@ -180,7 +182,7 @@ private static class HostControllerImpl extends AbstractEmbeddedManagedProcess i private final Map systemEnv; // TODO why is this not used? public HostControllerImpl(final File jbossHomeDir, String[] cmdargs, Properties systemProps, Map systemEnv, ClassLoader embeddedModuleCL) { - super(cmdargs, embeddedModuleCL); + super(EmbeddedProcessBootstrap.Type.HOST_CONTROLLER, cmdargs, embeddedModuleCL); this.jbossHomeDir = jbossHomeDir; this.systemProps = systemProps; this.systemEnv = systemEnv; @@ -193,12 +195,6 @@ EmbeddedProcessBootstrapConfiguration getBootstrapConfiguration() { return configuration; } - @Override - EmbeddedProcessBootstrap loadEmbeddedProcessBootstrap(ClassLoader embeddedModuleCL) { - return new HostEmbeddedProcessBootstrap(); - } - - } } diff --git a/embedded/src/main/java/org/wildfly/core/embedded/EmbeddedManagedProcess.java b/embedded/src/main/java/org/wildfly/core/embedded/EmbeddedManagedProcess.java index 6e19e9dc122..72c745f463d 100644 --- a/embedded/src/main/java/org/wildfly/core/embedded/EmbeddedManagedProcess.java +++ b/embedded/src/main/java/org/wildfly/core/embedded/EmbeddedManagedProcess.java @@ -37,7 +37,7 @@ public interface EmbeddedManagedProcess { /** * Returns the current process state of this managed process. *

- * The returned value is a String representation of one of the possible {@code ControlledProcessState.State} values. + * The returned value is a String representation of one of the possible {@code EmbeddedProcessState} values. * * @return The current process state, or {@code null} if currently the process state is unknown. * @throws UnsupportedOperationException if the requested operation is not supported by the implementation of this embedded server. diff --git a/embedded/src/main/java/org/wildfly/core/embedded/EmbeddedManagedProcessImpl.java b/embedded/src/main/java/org/wildfly/core/embedded/EmbeddedManagedProcessImpl.java index 1ff976f5d22..11a68ae8ed1 100644 --- a/embedded/src/main/java/org/wildfly/core/embedded/EmbeddedManagedProcessImpl.java +++ b/embedded/src/main/java/org/wildfly/core/embedded/EmbeddedManagedProcessImpl.java @@ -12,10 +12,10 @@ import org.wildfly.core.embedded.logging.EmbeddedLogger; /** - * Indirection to the {@link StandaloneServer} or {@link HostController}; used to encapsulate access to the underlying - * embedded instance in a manner that does not directly link this class. Necessary to avoid {@link ClassCastException} - * when this class is loaded by the application {@link ClassLoader} (or any other hierarchical CL) while the server is - * loaded by a modular environment. + * Embedding-application-side indirection to the {@link StandaloneServer} or {@link HostController}. + * Used to encapsulate access to the underlying embedded instance in a manner that does not directly link this class. + * Necessary to avoid {@link ClassCastException} when this class is loaded by the application {@link ClassLoader} + * (or any other hierarchical CL) while the server is loaded by a modular environment. * * @author Andrew Lee Rubinger * @author Thomas.Diesler@jboss.com. diff --git a/embedded/src/main/java/org/wildfly/core/embedded/EmbeddedProcessFactory.java b/embedded/src/main/java/org/wildfly/core/embedded/EmbeddedProcessFactory.java index 5fd12279a0c..1faaf11283c 100644 --- a/embedded/src/main/java/org/wildfly/core/embedded/EmbeddedProcessFactory.java +++ b/embedded/src/main/java/org/wildfly/core/embedded/EmbeddedProcessFactory.java @@ -18,7 +18,6 @@ import org.jboss.modules.Module; import org.jboss.modules.ModuleClassLoader; -import org.jboss.modules.ModuleIdentifier; import org.jboss.modules.ModuleLoadException; import org.jboss.modules.ModuleLoader; import org.wildfly.core.embedded.logging.EmbeddedLogger; @@ -41,17 +40,6 @@ public class EmbeddedProcessFactory { private static final String MODULE_ID_EMBEDDED = "org.wildfly.embedded"; private static final String MODULE_ID_VFS = "org.jboss.vfs"; - private static final String SYSPROP_KEY_JBOSS_DOMAIN_BASE_DIR = "jboss.domain.base.dir"; - private static final String SYSPROP_KEY_JBOSS_DOMAIN_CONFIG_DIR = "jboss.domain.config.dir"; - private static final String SYSPROP_KEY_JBOSS_DOMAIN_DEPLOYMENT_DIR = "jboss.domain.deployment.dir"; - private static final String SYSPROP_KEY_JBOSS_DOMAIN_TEMP_DIR = "jboss.domain.temp.dir"; - private static final String SYSPROP_KEY_JBOSS_DOMAIN_LOG_DIR = "jboss.domain.log.dir"; - - static final String[] DOMAIN_KEYS = { - SYSPROP_KEY_JBOSS_DOMAIN_BASE_DIR, SYSPROP_KEY_JBOSS_DOMAIN_CONFIG_DIR, SYSPROP_KEY_JBOSS_DOMAIN_DEPLOYMENT_DIR, - SYSPROP_KEY_JBOSS_DOMAIN_TEMP_DIR, SYSPROP_KEY_JBOSS_DOMAIN_LOG_DIR, SYSPROP_KEY_JBOSS_DOMAIN_CONFIG_DIR - }; - private static final String HOST_FACTORY = "org.wildfly.core.embedded.EmbeddedHostControllerFactory"; private static final String SERVER_FACTORY = "org.wildfly.core.embedded.EmbeddedStandaloneServerFactory"; /** @@ -302,14 +290,11 @@ public static HostController createHostController(final Configuration configurat } private static void setupVfsModule(final ModuleLoader moduleLoader) { - final ModuleIdentifier vfsModuleID = ModuleIdentifier.create(MODULE_ID_VFS); - final Module vfsModule; try { - vfsModule = moduleLoader.loadModule(vfsModuleID); + Module.registerURLStreamHandlerFactoryModule(moduleLoader.loadModule(MODULE_ID_VFS)); } catch (final ModuleLoadException mle) { throw EmbeddedLogger.ROOT_LOGGER.moduleLoaderError(mle,MODULE_ID_VFS, moduleLoader); } - Module.registerURLStreamHandlerFactoryModule(vfsModule); } private static Object createManagedProcess(final ProcessType embeddedType, final Method createServerMethod, final Configuration configuration, ModuleClassLoader embeddedModuleCL) { diff --git a/embedded/src/main/java/org/wildfly/core/embedded/EmbeddedStandaloneServerFactory.java b/embedded/src/main/java/org/wildfly/core/embedded/EmbeddedStandaloneServerFactory.java index f01a0f0e825..97ba58d8444 100644 --- a/embedded/src/main/java/org/wildfly/core/embedded/EmbeddedStandaloneServerFactory.java +++ b/embedded/src/main/java/org/wildfly/core/embedded/EmbeddedStandaloneServerFactory.java @@ -19,7 +19,7 @@ import org.wildfly.core.embedding.spi.EmbeddedProcessBootstrapConfiguration; /** - * This is the standalone server counter-part of EmbeddedProcessFactory which lives behind a module class loader. + * This is the standalone server counter-part of EmbeddedProcessFactory that lives behind a module class loader. *

* Factory that sets up an embedded @{link StandaloneServer} using modular classloading. *

@@ -179,7 +179,7 @@ private static class StandaloneServerImpl extends AbstractEmbeddedManagedProcess private final ModuleLoader moduleLoader; public StandaloneServerImpl(String[] cmdargs, Properties systemProps, Map systemEnv, ModuleLoader moduleLoader, ClassLoader embeddedModuleCL) { - super(cmdargs, embeddedModuleCL); + super(EmbeddedProcessBootstrap.Type.STANDALONE_SERVER, cmdargs, embeddedModuleCL); this.systemProps = systemProps; this.systemEnv = systemEnv; this.moduleLoader = moduleLoader; @@ -205,11 +205,6 @@ EmbeddedProcessBootstrapConfiguration getBootstrapConfiguration() { configuration.setSystemEnv(systemEnv); return configuration; } - - @Override - EmbeddedProcessBootstrap loadEmbeddedProcessBootstrap(ClassLoader embeddedModuleCL) { - return new StandaloneEmbeddedProcessBootstrap(); - } } } diff --git a/embedded/src/main/java/org/wildfly/core/embedded/logging/EmbeddedLogger.java b/embedded/src/main/java/org/wildfly/core/embedded/logging/EmbeddedLogger.java index 22e1951d93a..9ef2ce9a0f3 100644 --- a/embedded/src/main/java/org/wildfly/core/embedded/logging/EmbeddedLogger.java +++ b/embedded/src/main/java/org/wildfly/core/embedded/logging/EmbeddedLogger.java @@ -202,8 +202,4 @@ public interface EmbeddedLogger extends BasicLogger { @Message(id = 146, value = "Failed to restore context %s") @LogMessage(level = Logger.Level.ERROR) void failedToRestoreContext(@Cause Throwable cause, Context context); - - @Message(id = 147, value = "Embedded process services are not available after %d seconds: %s") - @LogMessage(level = Logger.Level.ERROR) - void embeddedProcessServicesUnavailable(int timeout, String unavailable); } diff --git a/embedded/src/test/java/org/wildfly/core/embedded/EmbeddedServerFactorySetupUnitTestCase.java b/embedded/src/test/java/org/wildfly/core/embedded/EmbeddedServerFactorySetupUnitTestCase.java index 6cf3868148b..3275c72f37d 100644 --- a/embedded/src/test/java/org/wildfly/core/embedded/EmbeddedServerFactorySetupUnitTestCase.java +++ b/embedded/src/test/java/org/wildfly/core/embedded/EmbeddedServerFactorySetupUnitTestCase.java @@ -11,7 +11,6 @@ import java.nio.file.Paths; import java.util.Properties; -import org.jboss.as.server.ServerEnvironment; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -22,6 +21,10 @@ * @version $Revision: 1.1 $ */ public class EmbeddedServerFactorySetupUnitTestCase { + private static final String SERVER_BASE_DIR = "jboss.server.base.dir"; + private static final String SERVER_CONFIG_DIR = "jboss.server.config.dir"; + private static final String SERVER_DATA_DIR = "jboss.server.data.dir"; + final Path standardJBossHome; final Path alternativeServer; final Path alternativeDataDir; @@ -66,65 +69,65 @@ public void testEmbeddedRootNoOverrides() throws Exception { Assert.assertEquals(4, props.size()); Assert.assertEquals(embeddedRoot.toAbsolutePath().toString(), props.getProperty(EmbeddedStandaloneServerFactory.JBOSS_EMBEDDED_ROOT)); - assertPropertyAndEmbeddedRootFile(props, ServerEnvironment.SERVER_BASE_DIR, -1); - assertPropertyAndEmbeddedRootFile(props, ServerEnvironment.SERVER_DATA_DIR, 1); - assertPropertyAndEmbeddedRootFile(props, ServerEnvironment.SERVER_CONFIG_DIR, 1); + assertPropertyAndEmbeddedRootFile(props, SERVER_BASE_DIR, -1); + assertPropertyAndEmbeddedRootFile(props, SERVER_DATA_DIR, 1); + assertPropertyAndEmbeddedRootFile(props, SERVER_CONFIG_DIR, 1); } @Test public void testEmbeddedRootServerOverride() throws Exception { Properties props = new Properties(); props.setProperty(EmbeddedStandaloneServerFactory.JBOSS_EMBEDDED_ROOT, embeddedRoot.toAbsolutePath().toString()); - props.setProperty(ServerEnvironment.SERVER_BASE_DIR, alternativeServer.toAbsolutePath().toString()); + props.setProperty(SERVER_BASE_DIR, alternativeServer.toAbsolutePath().toString()); EmbeddedStandaloneServerFactory.setupCleanDirectories(standardJBossHome, props); Assert.assertEquals(4, props.size()); Assert.assertEquals(embeddedRoot.toAbsolutePath().toString(), props.getProperty(EmbeddedStandaloneServerFactory.JBOSS_EMBEDDED_ROOT)); - assertPropertyAndEmbeddedRootFile(props, ServerEnvironment.SERVER_BASE_DIR, -1); - assertPropertyAndEmbeddedRootFile(props, ServerEnvironment.SERVER_DATA_DIR, 2); - assertPropertyAndEmbeddedRootFile(props, ServerEnvironment.SERVER_CONFIG_DIR, 2); + assertPropertyAndEmbeddedRootFile(props, SERVER_BASE_DIR, -1); + assertPropertyAndEmbeddedRootFile(props, SERVER_DATA_DIR, 2); + assertPropertyAndEmbeddedRootFile(props, SERVER_CONFIG_DIR, 2); } @Test public void testDataAndConfigOverride() throws Exception { Properties props = new Properties(); props.setProperty(EmbeddedStandaloneServerFactory.JBOSS_EMBEDDED_ROOT, embeddedRoot.toAbsolutePath().toString()); - props.setProperty(ServerEnvironment.SERVER_DATA_DIR, alternativeDataDir.toAbsolutePath().toString()); - props.setProperty(ServerEnvironment.SERVER_CONFIG_DIR, alternativeConfigDir.toAbsolutePath().toString()); + props.setProperty(SERVER_DATA_DIR, alternativeDataDir.toAbsolutePath().toString()); + props.setProperty(SERVER_CONFIG_DIR, alternativeConfigDir.toAbsolutePath().toString()); EmbeddedStandaloneServerFactory.setupCleanDirectories(standardJBossHome, props); Assert.assertEquals(4, props.size()); Assert.assertEquals(embeddedRoot.toAbsolutePath().toString(), props.getProperty(EmbeddedStandaloneServerFactory.JBOSS_EMBEDDED_ROOT)); - assertPropertyAndEmbeddedRootFile(props, ServerEnvironment.SERVER_BASE_DIR, -1); - assertPropertyAndEmbeddedRootFile(props, ServerEnvironment.SERVER_DATA_DIR, 3); - assertPropertyAndEmbeddedRootFile(props, ServerEnvironment.SERVER_CONFIG_DIR, 4); + assertPropertyAndEmbeddedRootFile(props, SERVER_BASE_DIR, -1); + assertPropertyAndEmbeddedRootFile(props, SERVER_DATA_DIR, 3); + assertPropertyAndEmbeddedRootFile(props, SERVER_CONFIG_DIR, 4); } @Test public void testServerOverrideAndDataAndConfigOverride() throws Exception { Properties props = new Properties(); props.setProperty(EmbeddedStandaloneServerFactory.JBOSS_EMBEDDED_ROOT, embeddedRoot.toAbsolutePath().toString()); - props.setProperty(ServerEnvironment.SERVER_BASE_DIR, alternativeServer.toAbsolutePath().toString()); - props.setProperty(ServerEnvironment.SERVER_DATA_DIR, alternativeDataDir.toAbsolutePath().toString()); - props.setProperty(ServerEnvironment.SERVER_CONFIG_DIR, alternativeConfigDir.toAbsolutePath().toString()); + props.setProperty(SERVER_BASE_DIR, alternativeServer.toAbsolutePath().toString()); + props.setProperty(SERVER_DATA_DIR, alternativeDataDir.toAbsolutePath().toString()); + props.setProperty(SERVER_CONFIG_DIR, alternativeConfigDir.toAbsolutePath().toString()); EmbeddedStandaloneServerFactory.setupCleanDirectories(standardJBossHome, props); Assert.assertEquals(4, props.size()); Assert.assertEquals(embeddedRoot.toAbsolutePath().toString(), props.getProperty(EmbeddedStandaloneServerFactory.JBOSS_EMBEDDED_ROOT)); - assertPropertyAndEmbeddedRootFile(props, ServerEnvironment.SERVER_BASE_DIR, -1); - assertPropertyAndEmbeddedRootFile(props, ServerEnvironment.SERVER_DATA_DIR, 3); - assertPropertyAndEmbeddedRootFile(props, ServerEnvironment.SERVER_CONFIG_DIR, 4); + assertPropertyAndEmbeddedRootFile(props, SERVER_BASE_DIR, -1); + assertPropertyAndEmbeddedRootFile(props, SERVER_DATA_DIR, 3); + assertPropertyAndEmbeddedRootFile(props, SERVER_CONFIG_DIR, 4); } @Test public void testServerOverrideAndConfigOverride() throws Exception { Properties props = new Properties(); props.setProperty(EmbeddedStandaloneServerFactory.JBOSS_EMBEDDED_ROOT, embeddedRoot.toAbsolutePath().toString()); - props.setProperty(ServerEnvironment.SERVER_BASE_DIR, alternativeServer.toAbsolutePath().toString()); - props.setProperty(ServerEnvironment.SERVER_CONFIG_DIR, alternativeConfigDir.toAbsolutePath().toString()); + props.setProperty(SERVER_BASE_DIR, alternativeServer.toAbsolutePath().toString()); + props.setProperty(SERVER_CONFIG_DIR, alternativeConfigDir.toAbsolutePath().toString()); EmbeddedStandaloneServerFactory.setupCleanDirectories(standardJBossHome, props); Assert.assertEquals(4, props.size()); Assert.assertEquals(embeddedRoot.toAbsolutePath().toString(), props.getProperty(EmbeddedStandaloneServerFactory.JBOSS_EMBEDDED_ROOT)); - assertPropertyAndEmbeddedRootFile(props, ServerEnvironment.SERVER_BASE_DIR, -1); - assertPropertyAndEmbeddedRootFile(props, ServerEnvironment.SERVER_DATA_DIR, 2); - assertPropertyAndEmbeddedRootFile(props, ServerEnvironment.SERVER_CONFIG_DIR, 4); + assertPropertyAndEmbeddedRootFile(props, SERVER_BASE_DIR, -1); + assertPropertyAndEmbeddedRootFile(props, SERVER_DATA_DIR, 2); + assertPropertyAndEmbeddedRootFile(props, SERVER_CONFIG_DIR, 4); } private void assertPropertyAndEmbeddedRootFile(Properties props, String property, int id) { diff --git a/embedding-spi/pom.xml b/embedding-spi/pom.xml index e020185286b..15c584df28e 100644 --- a/embedding-spi/pom.xml +++ b/embedding-spi/pom.xml @@ -17,6 +17,7 @@ wildfly-embedding-spi WildFly: Embedding SPI + SPI managed processes can implement to allow embedding.