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