You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ad...@apache.org on 2011/03/03 01:34:50 UTC
svn commit: r1076469 - in
/ofbiz/trunk/framework/base/src/org/ofbiz/base/container:
ContainerConfig.java ContainerLoader.java
Author: adrianc
Date: Thu Mar 3 00:34:49 2011
New Revision: 1076469
URL: http://svn.apache.org/viewvc?rev=1076469&view=rev
Log:
Small code cleanup in container loader code.
Small functional change: ContainerConfig.getContainers(String configFile) used to return ALL loaded containers, not just the ones in configFile. This commit fixes that - now the method returns only the containers found in the specified file.
Modified:
ofbiz/trunk/framework/base/src/org/ofbiz/base/container/ContainerConfig.java
ofbiz/trunk/framework/base/src/org/ofbiz/base/container/ContainerLoader.java
Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/container/ContainerConfig.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/container/ContainerConfig.java?rev=1076469&r1=1076468&r2=1076469&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/container/ContainerConfig.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/container/ContainerConfig.java Thu Mar 3 00:34:49 2011
@@ -20,6 +20,7 @@ package org.ofbiz.base.container;
import java.io.IOException;
import java.net.URL;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.LinkedList;
@@ -28,6 +29,7 @@ import java.util.Map;
import javax.xml.parsers.ParserConfigurationException;
+import org.ofbiz.base.lang.LockedBy;
import org.ofbiz.base.util.UtilURL;
import org.ofbiz.base.util.UtilValidate;
import org.ofbiz.base.util.UtilXml;
@@ -43,43 +45,43 @@ public class ContainerConfig {
public static final String module = ContainerConfig.class.getName();
- protected static Map<String, Container> containers = new LinkedHashMap<String, Container>();
+ @LockedBy("ContainerConfig.class")
+ private static Map<String, Container> containers = new LinkedHashMap<String, Container>();
public static Container getContainer(String containerName, String configFile) throws ContainerException {
Container container = containers.get(containerName);
if (container == null) {
- synchronized (ContainerConfig.class) {
- container = containers.get(containerName);
- if (container == null) {
- if (configFile == null) {
- throw new ContainerException("Container config file cannot be null");
- }
- new ContainerConfig(configFile);
- container = containers.get(containerName);
- }
- }
- if (container == null) {
- throw new ContainerException("No container found with the name : " + containerName);
- }
+ getContainers(configFile);
+ container = containers.get(containerName);
+ }
+ if (container == null) {
+ throw new ContainerException("No container found with the name : " + containerName);
}
return container;
}
public static Collection<Container> getContainers(String configFile) throws ContainerException {
- if (containers.size() == 0) {
- synchronized (ContainerConfig.class) {
- if (containers.size() == 0) {
- if (configFile == null) {
- throw new ContainerException("Container config file cannot be null");
- }
- new ContainerConfig(configFile);
- }
- }
- if (containers.size() == 0) {
- throw new ContainerException("No containers loaded; problem with configuration");
+ if (UtilValidate.isEmpty(configFile)) {
+ throw new ContainerException("configFile argument cannot be null or empty");
+ }
+ URL xmlUrl = UtilURL.fromResource(configFile);
+ if (xmlUrl == null) {
+ throw new ContainerException("Could not find container config file " + configFile);
+ }
+ return getContainers(xmlUrl);
+ }
+
+ public static Collection<Container> getContainers(URL xmlUrl) throws ContainerException {
+ if (xmlUrl == null) {
+ throw new ContainerException("xmlUrl argument cannot be null");
+ }
+ Collection<Container> result = getContainerPropsFromXml(xmlUrl);
+ synchronized (ContainerConfig.class) {
+ for (Container container : result) {
+ containers.put(container.name, container);
}
}
- return containers.values();
+ return result;
}
public static String getPropertyValue(ContainerConfig.Container parentProp, String name, String defaultValue) {
@@ -148,16 +150,9 @@ public class ContainerConfig {
}
}
- protected ContainerConfig() {}
+ private ContainerConfig() {}
- protected ContainerConfig(String configFileLocation) throws ContainerException {
- // load the config file
- URL xmlUrl = UtilURL.fromResource(configFileLocation);
- if (xmlUrl == null) {
- throw new ContainerException("Could not find " + configFileLocation + " master OFBiz container configuration");
- }
-
- // read the document
+ private static Collection<Container> getContainerPropsFromXml(URL xmlUrl) throws ContainerException {
Document containerDocument = null;
try {
containerDocument = UtilXml.readXmlDocument(xmlUrl, true);
@@ -168,15 +163,12 @@ public class ContainerConfig {
} catch (IOException e) {
throw new ContainerException("Error reading the container config file: " + xmlUrl, e);
}
-
- // root element
Element root = containerDocument.getDocumentElement();
-
- // containers
+ List<Container> result = new ArrayList<Container>();
for (Element curElement: UtilXml.childElementList(root, "container")) {
- Container container = new Container(curElement);
- containers.put(container.name, container);
+ result.add(new Container(curElement));
}
+ return result;
}
public static class Container {
Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/container/ContainerLoader.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/container/ContainerLoader.java?rev=1076469&r1=1076468&r2=1076469&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/container/ContainerLoader.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/container/ContainerLoader.java Thu Mar 3 00:34:49 2011
@@ -28,6 +28,7 @@ import org.ofbiz.base.start.Start;
import org.ofbiz.base.start.StartupException;
import org.ofbiz.base.start.StartupLoader;
import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilValidate;
/**
* ContainerLoader - StartupLoader for the container
@@ -52,37 +53,36 @@ public class ContainerLoader implements
// get the master container configuration file
this.configFile = config.containerConfig;
-
Collection<ContainerConfig.Container> containers = null;
try {
containers = ContainerConfig.getContainers(configFile);
+ if (UtilValidate.isEmpty(containers)) {
+ throw new StartupException("No containers loaded; problem with configuration");
+ }
} catch (ContainerException e) {
throw new StartupException(e);
}
-
- if (containers != null) {
- for (ContainerConfig.Container containerCfg: containers) {
- Container tmpContainer = loadContainer(containerCfg, args);
- loadedContainers.add(tmpContainer);
-
- // This is only used in case of OFBiz running in Geronimo or WASCE. It allows to use the RMIDispatcher
- if (containerCfg.name.equals("rmi-dispatcher") && configFile.equals("limited-containers.xml")) {
- try {
- ContainerConfig.Container.Property initialCtxProp = containerCfg.getProperty("use-initial-context");
- String useCtx = initialCtxProp == null || initialCtxProp.value == null ? "false" : initialCtxProp.value;
- if (!useCtx.equalsIgnoreCase("true")) {
- //system.setProperty("java.security.policy", "client.policy"); maybe used if needed...
- if (System.getSecurityManager() == null) { // needed by WASCE with a client.policy file.
- System.setSecurityManager(new java.rmi.RMISecurityManager());
- }
- tmpContainer.start();
- rmiLoadedContainer = tmpContainer; // used in Geronimo/WASCE to allow to deregister
+ for (ContainerConfig.Container containerCfg : containers) {
+ Container tmpContainer = loadContainer(containerCfg, args);
+ loadedContainers.add(tmpContainer);
+
+ // This is only used in case of OFBiz running in Geronimo or WASCE. It allows to use the RMIDispatcher
+ if (containerCfg.name.equals("rmi-dispatcher") && configFile.equals("limited-containers.xml")) {
+ try {
+ ContainerConfig.Container.Property initialCtxProp = containerCfg.getProperty("use-initial-context");
+ String useCtx = initialCtxProp == null || initialCtxProp.value == null ? "false" : initialCtxProp.value;
+ if (!useCtx.equalsIgnoreCase("true")) {
+ //system.setProperty("java.security.policy", "client.policy"); maybe used if needed...
+ if (System.getSecurityManager() == null) { // needed by WASCE with a client.policy file.
+ System.setSecurityManager(new java.rmi.RMISecurityManager());
}
- } catch (ContainerException e) {
- throw new StartupException("Cannot start() " + tmpContainer.getClass().getName(), e);
- } catch (java.lang.AbstractMethodError e) {
- throw new StartupException("Cannot start() " + tmpContainer.getClass().getName(), e);
+ tmpContainer.start();
+ rmiLoadedContainer = tmpContainer; // used in Geronimo/WASCE to allow to deregister
}
+ } catch (ContainerException e) {
+ throw new StartupException("Cannot start() " + tmpContainer.getClass().getName(), e);
+ } catch (java.lang.AbstractMethodError e) {
+ throw new StartupException("Cannot start() " + tmpContainer.getClass().getName(), e);
}
}
}