import java.util.Map;
import java.util.Objects;
import java.util.Properties;
+import java.util.TreeMap;
import org.argeo.init.logging.ThinLoggerFinder;
import org.argeo.init.osgi.OsgiBoot;
public class Service {
private final static Logger logger = System.getLogger(Service.class.getName());
+ final static String FILE_SYSTEM_PROPERTIES = "system.properties";
+
public final static String PROP_ARGEO_INIT_MAIN = "argeo.init.main";
private static RuntimeContext runtimeContext = null;
if (configArea != null) {
Path configAreaPath = Paths.get(configArea);
- Path additionalSystemPropertiesPath = configAreaPath.resolve("system.properties");
+ Path additionalSystemPropertiesPath = configAreaPath.resolve(FILE_SYSTEM_PROPERTIES);
if (Files.exists(additionalSystemPropertiesPath)) {
Properties properties = new Properties();
try (InputStream in = Files.newInputStream(additionalSystemPropertiesPath)) {
+ currentValue + " instead of " + value + ". Ignoring new value.");
} else {
System.setProperty(key.toString(), value);
+ logger.log(Logger.Level.TRACE, () -> "Added " + key + "=" + value
+ + " to system properties, from " + additionalSystemPropertiesPath.getFileName());
}
}
ThinLoggerFinder.reloadConfiguration();
Map<String, String> config = new HashMap<>();
config.put(PROP_ARGEO_INIT_MAIN, "true");
+ // add OSGi system properties to the configuration
+ sysprops: for (Object key : new TreeMap<>(System.getProperties()).keySet()) {
+ String keyStr = key.toString();
+ switch (keyStr) {
+ case OsgiBoot.PROP_OSGI_CONFIGURATION_AREA:
+ case OsgiBoot.PROP_OSGI_SHARED_CONFIGURATION_AREA:
+ case OsgiBoot.PROP_OSGI_INSTANCE_AREA:
+ // we should already have dealt with those
+ continue sysprops;
+ default:
+ }
+
+ if (keyStr.startsWith("osgi.") || keyStr.startsWith("org.osgi.") || keyStr.startsWith("eclipse.")
+ || keyStr.startsWith("org.eclipse.equinox.") || keyStr.startsWith("felix.")) {
+ String value = System.getProperty(keyStr);
+ config.put(keyStr, value);
+ logger.log(Logger.Level.TRACE,
+ () -> "Added " + key + "=" + value + " to configuration, from system properties");
+ }
+ }
+
try {
try {
if (stateArea != null)
logger.log(Logger.Level.DEBUG, "Argeo Init stopped with PID " + pid);
}
+ /** The root runtime context in this JVM. */
public static RuntimeContext getRuntimeContext() {
return runtimeContext;
}