You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by an...@apache.org on 2012/06/14 11:00:33 UTC

svn commit: r1350136 - /openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java

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();