Issue #23507 Allow to set null as the installRoot (in tests)
- ServerEnvironmentImpl is extremely problematic class as it's initialization
is not well defined, but the class changes System.properties and affects
whatever uses them later (but doesn't affect what started earlier)
diff --git a/nucleus/test-utils/utils/src/main/java/org/glassfish/tests/utils/DomainXml.java b/nucleus/test-utils/utils/src/main/java/org/glassfish/tests/utils/DomainXml.java
index fdb34c4..830b84e 100644
--- a/nucleus/test-utils/utils/src/main/java/org/glassfish/tests/utils/DomainXml.java
+++ b/nucleus/test-utils/utils/src/main/java/org/glassfish/tests/utils/DomainXml.java
@@ -24,6 +24,7 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import org.glassfish.hk2.api.ServiceLocator;
import org.glassfish.tests.utils.ConfigApiTest.TestDocument;
import org.jvnet.hk2.config.DomDocument;
@@ -46,7 +47,8 @@
/**
- * @return DOM tree representation
+ * @return DOM tree representation. Must have public constructor with a single parameter
+ * {@link ServiceLocator}
*/
Class<? extends DomDocument<?>> domDocumentClass() default TestDocument.class;
}
diff --git a/nucleus/test-utils/utils/src/main/java/org/glassfish/tests/utils/HK2JUnit5Extension.java b/nucleus/test-utils/utils/src/main/java/org/glassfish/tests/utils/HK2JUnit5Extension.java
index 039e7a0..69ec757 100644
--- a/nucleus/test-utils/utils/src/main/java/org/glassfish/tests/utils/HK2JUnit5Extension.java
+++ b/nucleus/test-utils/utils/src/main/java/org/glassfish/tests/utils/HK2JUnit5Extension.java
@@ -121,7 +121,6 @@
final Set<Class<?>> excludedClasses = getExcludedClasses(testClass);
config = locator.getService(DynamicConfigurationService.class).createDynamicConfiguration();
- config.addActiveDescriptor(ServerEnvironmentImpl.class);
addServicesFromLocatorFiles(loader, excludedClasses, getLocatorFilePaths(context));
addServicesFromPackage(packages, excludedClasses);
addServices(classes, excludedClasses);
@@ -232,6 +231,12 @@
final StartupContext startupContext = new StartupContext(startupContextProperties);
addOneConstant(locator, startupContext);
addOneConstant(locator, new StaticModulesRegistry(getClassLoader(context), startupContext));
+ String installRoot = startupContext.getArguments().getProperty(Constants.INSTALL_ROOT_PROP_NAME);
+ if (installRoot == null) {
+ addOneConstant(locator, new ServerEnvironmentImpl());
+ } else {
+ addOneConstant(locator, new ServerEnvironmentImpl(new File(installRoot)));
+ }
}