Author: andygumbrecht
Date: Thu Jun 14 09:00:32 2012
New Revision: 1350136
URL: http://svn.apache.org/viewvc?rev=1350136&view=rev
Log:
Add some logic to the 'conf.d' issue using system property
'openejb.conf.schema.legacy'.
The default is to use 'conf.d', but with a logical file check if the property
is not set (also the default).
Modified:
openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java
Modified:
openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java?rev=1350136&r1=1350135&r2=1350136&view=diff
==============================================================================
---
openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java
(original)
+++
openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java
Thu Jun 14 09:00:32 2012
@@ -33,6 +33,7 @@ import org.apache.xbean.recipe.Option;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import java.io.File;
+import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -198,21 +199,53 @@ public abstract class ServiceManager {
}
private void overrideProperties(String serviceName, Properties
serviceProperties) throws IOException {
- final FileUtils base = SystemInstance.get().getBase();
+ final SystemInstance systemInstance = SystemInstance.get();
+ final FileUtils base = systemInstance.getBase();
// Override with file from conf dir
final File conf = base.getDirectory("conf");
if (conf.exists()) {
+
+ final String legacy =
System.getProperty("openejb.conf.schema.legacy");
+ boolean legacySchema = Boolean.parseBoolean((null != legacy ?
legacy : "false"));
+
+ if (null == legacy) {
+ //Legacy is not configured either way, so make an educated
guess.
+ //If we find at least 2 known service.properties files then
assume legacy
+ final File[] files = conf.listFiles(new FilenameFilter() {
+ @Override
+ public boolean accept(final File dir, String name) {
+ name = name.toLowerCase();
+ return name.equals("ejbd.properties")
+ || name.equals("ejbds.properties")
+ || name.equals("admin.properties")
+ || name.equals("httpejbd.properties");
+ }
+ });
+
+ if (null != files && files.length > 1) {
+ legacySchema = true;
+ }
+ }
+
File serviceConfig = new File(conf, serviceName + ".properties");
+
if (!serviceConfig.exists()) {
- serviceConfig = new File(conf, "conf.d/" +
serviceConfig.getName());
+ serviceConfig = new File(conf, (legacySchema ? "" : "conf.d/")
+ serviceConfig.getName());
+
+ if (legacySchema) {
+ logger.info("Using legacy configuration path for new
service: " + serviceConfig);
+ }
}
+
if (serviceConfig.exists()) {
IO.readProperties(serviceConfig, serviceProperties);
} else {
+
final File confD = serviceConfig.getParentFile();
+
if (!confD.exists() && !confD.mkdirs()) {
- logger.warning("can't create " + serviceConfig.getPath());
+ logger.warning("Failed to create " +
serviceConfig.getPath());
}
if (confD.exists()) {
@@ -233,7 +266,7 @@ public abstract class ServiceManager {
// Override with system properties
final String prefix = serviceName + ".";
final Properties sysProps = new Properties(System.getProperties());
- sysProps.putAll(SystemInstance.get().getProperties());
+ sysProps.putAll(systemInstance.getProperties());
for (final Map.Entry<Object, Object> entry : sysProps.entrySet()) {
final Map.Entry entry1 = (Map.Entry) entry;
final Object value = entry1.getValue();