You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by sa...@apache.org on 2012/08/07 08:26:13 UTC

svn commit: r1370126 [5/15] - in /ofbiz/branches/jackrabbit20120501: ./ applications/accounting/script/org/ofbiz/accounting/payment/ applications/accounting/src/org/ofbiz/accounting/payment/ applications/accounting/webapp/accounting/WEB-INF/ applicatio...

Modified: ofbiz/branches/jackrabbit20120501/framework/base/src/org/ofbiz/base/container/ContainerLoader.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/base/src/org/ofbiz/base/container/ContainerLoader.java?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/base/src/org/ofbiz/base/container/ContainerLoader.java (original)
+++ ofbiz/branches/jackrabbit20120501/framework/base/src/org/ofbiz/base/container/ContainerLoader.java Tue Aug  7 06:25:59 2012
@@ -33,7 +33,9 @@ import org.ofbiz.base.start.Config;
 import org.ofbiz.base.start.StartupException;
 import org.ofbiz.base.start.StartupLoader;
 import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.StringUtil;
 import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.base.util.UtilXml;
 
 /**
  * An object that loads containers (background processes).
@@ -46,22 +48,6 @@ import org.ofbiz.base.util.UtilValidate;
 public class ContainerLoader implements StartupLoader {
 
     public static final String module = ContainerLoader.class.getName();
-    private static Map<String, Container> containerMap = new ConcurrentHashMap<String, Container>();
-
-    /**
-     * Returns a <code>Container</code> that has the specified name. Returns
-     * <code>null</code> if the specified container was not loaded. If more than one
-     * instance of the container was loaded, then the last instance that was loaded is
-     * returned. The returned <code>Container</code> will be initialized, but there is no
-     * guarantee that it will be in the running state.
-     * 
-     * @param containerName
-     *            The name of the container.
-     * @return A <code>Container</code> that has the specified name.
-     */
-    public static Container getContainer(String containerName) {
-        return containerMap.get(containerName);
-    }
 
     private String configFile = null;
     private final List<Container> loadedContainers = new LinkedList<Container>();
@@ -75,16 +61,21 @@ public class ContainerLoader implements 
         if (this.loaded || this.unloading) {
             return;
         }
-        Debug.logInfo("[Startup] Loading containers...", module);
         this.loadedContainers.clear();
         // get this loader's configuration file
         this.configFile = config.containerConfig;
+
+        List<String> loaders = null;
+        for (Map loaderMap: config.loaders) {
+            if (module.equals((String)loaderMap.get("class"))) {
+                loaders = StringUtil.split((String)loaderMap.get("profiles"), ",");
+            }
+        }
+
+        Debug.logInfo("[Startup] Loading containers from " + configFile + " for loaders " + loaders, module);
         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);
         }
@@ -92,38 +83,47 @@ public class ContainerLoader implements 
             if (this.unloading) {
                 return;
             }
-            Container tmpContainer = loadContainer(containerCfg, args);
-            this.loadedContainers.add(tmpContainer);
-            containerMap.put(containerCfg.name, tmpContainer);
-
-            // TODO: Put container-specific code in the container.
-            // 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();
+            boolean matchingLoaderFound = false;
+            if (UtilValidate.isEmpty(containerCfg.loaders) && UtilValidate.isEmpty(loaders)) {
+                matchingLoaderFound = true;
+            } else {
+                for (String loader: loaders) {
+                    if (UtilValidate.isEmpty(containerCfg.loaders) || containerCfg.loaders.contains(loader)) {
+                        matchingLoaderFound = true;
+                        break;
                     }
-                } 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);
                 }
             }
+            if (matchingLoaderFound) {
+                Debug.logInfo("Loading container: " + containerCfg.name, module);
+                Container tmpContainer = loadContainer(containerCfg, args);
+                this.loadedContainers.add(tmpContainer);
+                Debug.logInfo("Loaded container: " + containerCfg.name, module);
+            }
         }
         if (this.unloading) {
             return;
         }
+
         List<ContainerConfig.Container> containersDefinedInComponents = ComponentConfig.getAllContainers();
         for (ContainerConfig.Container containerCfg: containersDefinedInComponents) {
-            Container tmpContainer = loadContainer(containerCfg, args);
-            this.loadedContainers.add(tmpContainer);
-            containerMap.put(containerCfg.name, tmpContainer);
+            boolean matchingLoaderFound = false;
+            if (UtilValidate.isEmpty(containerCfg.loaders) && UtilValidate.isEmpty(loaders)) {
+                matchingLoaderFound = true;
+            } else {
+                for (String loader: loaders) {
+                    if (UtilValidate.isEmpty(containerCfg.loaders) || containerCfg.loaders.contains(loader)) {
+                        matchingLoaderFound = true;
+                        break;
+                    }
+                }
+            }
+            if (matchingLoaderFound) {
+                Debug.logInfo("Loading component's container: " + containerCfg.name, module);
+                Container tmpContainer = loadContainer(containerCfg, args);
+                this.loadedContainers.add(tmpContainer);
+                Debug.logInfo("Loaded component's container: " + containerCfg.name, module);
+            }
         }
         // Get hot-deploy container configuration files
         ClassLoader loader = Thread.currentThread().getContextClassLoader();
@@ -140,7 +140,6 @@ public class ContainerLoader implements 
                     }
                     Container tmpContainer = loadContainer(containerCfg, args);
                     this.loadedContainers.add(tmpContainer);
-                    containerMap.put(containerCfg.name, tmpContainer);
                 }
             }
         } catch (Exception e) {
@@ -185,7 +184,7 @@ public class ContainerLoader implements 
 
         // initialize the container object
         try {
-            containerObj.init(args, configFile);
+            containerObj.init(args, containerCfg.name, configFile);
         } catch (ContainerException e) {
             throw new StartupException("Cannot init() " + containerCfg.name, e);
         } catch (java.lang.AbstractMethodError e) {
@@ -233,6 +232,7 @@ public class ContainerLoader implements 
             if (this.unloading) {
                 return;
             }
+            Debug.logInfo("Starting container " + container.getName(), module);
             try {
                 container.start();
             } catch (ContainerException e) {
@@ -240,6 +240,7 @@ public class ContainerLoader implements 
             } catch (java.lang.AbstractMethodError e) {
                 throw new StartupException("Cannot start() " + container.getClass().getName(), e);
             }
+            Debug.logInfo("Started container " + container.getName(), module);
         }
     }
 
@@ -257,11 +258,13 @@ public class ContainerLoader implements 
                 // shutting down in reverse order
                 for (int i = this.loadedContainers.size(); i > 0; i--) {
                     Container container = this.loadedContainers.get(i-1);
+                    Debug.logInfo("Stopping container " + container.getName(), module);
                     try {
                         container.stop();
                     } catch (ContainerException e) {
                         Debug.logError(e, module);
                     }
+                    Debug.logInfo("Stopped container " + container.getName(), module);
                 }
             }
         }

Modified: ofbiz/branches/jackrabbit20120501/framework/base/src/org/ofbiz/base/container/GroovyShellContainer.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/base/src/org/ofbiz/base/container/GroovyShellContainer.java?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/base/src/org/ofbiz/base/container/GroovyShellContainer.java (original)
+++ ofbiz/branches/jackrabbit20120501/framework/base/src/org/ofbiz/base/container/GroovyShellContainer.java Tue Aug  7 06:25:59 2012
@@ -28,14 +28,13 @@ public class GroovyShellContainer implem
 
     private static final Logger log = Logger.getLogger(GroovyShellContainer.class);
 
+    private String name;
     private String configFileLocation = null;
     private GroovyService gsh = null;
 
-    /**
-     * @see org.ofbiz.base.container.Container#init(java.lang.String[], java.lang.String)
-     */
     @Override
-    public void init(String[] args, String configFile) {
+    public void init(String[] args, String name, String configFile) {
+        this.name = name;
         configFileLocation = configFile;
     }
 
@@ -62,8 +61,12 @@ public class GroovyShellContainer implem
         gsh = null;
     }
 
+    public String getName() {
+        return name;
+    }
+
     private int getTelnetPort() throws ContainerException {
-        ContainerConfig.Container config = ContainerConfig.getContainer("groovyshell-container", configFileLocation);
+        ContainerConfig.Container config = ContainerConfig.getContainer(name, configFileLocation);
         Property telnetPort = config.getProperty("telnet-port");
         try {
             return Integer.parseInt(telnetPort.value);

Modified: ofbiz/branches/jackrabbit20120501/framework/base/src/org/ofbiz/base/container/JustLoadComponentsContainer.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/base/src/org/ofbiz/base/container/JustLoadComponentsContainer.java?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/base/src/org/ofbiz/base/container/JustLoadComponentsContainer.java (original)
+++ ofbiz/branches/jackrabbit20120501/framework/base/src/org/ofbiz/base/container/JustLoadComponentsContainer.java Tue Aug  7 06:25:59 2012
@@ -29,10 +29,11 @@ public class JustLoadComponentsContainer
 
     public static final String module = JustLoadComponentsContainer.class.getName();
 
-    /**
-     * @see org.ofbiz.base.container.Container#init(java.lang.String[], java.lang.String)
-     */
-    public void init(String[] args, String configFile) {
+    private String name;
+
+    @Override
+    public void init(String[] args, String name, String configFile) {
+        this.name = name;
         try {
             ComponentContainer.loadComponents(true);
         } catch (AlreadyLoadedException e) {
@@ -49,4 +50,8 @@ public class JustLoadComponentsContainer
 
     public void stop() throws ContainerException {
     }
+
+    public String getName() {
+        return name;
+    }
 }

Modified: ofbiz/branches/jackrabbit20120501/framework/base/src/org/ofbiz/base/container/NamingServiceContainer.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/base/src/org/ofbiz/base/container/NamingServiceContainer.java?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/base/src/org/ofbiz/base/container/NamingServiceContainer.java (original)
+++ ofbiz/branches/jackrabbit20120501/framework/base/src/org/ofbiz/base/container/NamingServiceContainer.java Tue Aug  7 06:25:59 2012
@@ -44,10 +44,13 @@ public class NamingServiceContainer impl
 
     protected RMIExtendedSocketFactory rmiSocketFactory;
 
-    public void init(String[] args, String configFile) throws ContainerException {
+    private String name;
+
+    public void init(String[] args, String name, String configFile) throws ContainerException {
+        this.name =name;
         this.configFileLocation = configFile;
 
-        ContainerConfig.Container cfg = ContainerConfig.getContainer("naming-container", configFileLocation);
+        ContainerConfig.Container cfg = ContainerConfig.getContainer(name, configFileLocation);
 
         // get the telnet-port
         ContainerConfig.Container.Property port = cfg.getProperty("port");
@@ -93,4 +96,8 @@ public class NamingServiceContainer impl
             }
         }
     }
+
+    public String getName() {
+        return name;
+    }
 }

Modified: ofbiz/branches/jackrabbit20120501/framework/base/src/org/ofbiz/base/util/UtilHttp.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/base/src/org/ofbiz/base/util/UtilHttp.java?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/base/src/org/ofbiz/base/util/UtilHttp.java (original)
+++ ofbiz/branches/jackrabbit20120501/framework/base/src/org/ofbiz/base/util/UtilHttp.java Tue Aug  7 06:25:59 2012
@@ -113,7 +113,7 @@ public class UtilHttp {
      */
     public static Map<String, Object> getParameterMap(HttpServletRequest request, Set<? extends String> nameSet, Boolean onlyIncludeOrSkip) {
         boolean onlyIncludeOrSkipPrim = onlyIncludeOrSkip == null ? true : onlyIncludeOrSkip.booleanValue();
-        Map<String, Object> paramMap = FastMap.newInstance();
+        Map<String, Object> paramMap = new HashMap<String, Object>();
 
         // add all the actual HTTP request parameters
         Enumeration<String> e = UtilGenerics.cast(request.getParameterNames());

Modified: ofbiz/branches/jackrabbit20120501/framework/build.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/build.xml?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/build.xml (original)
+++ ofbiz/branches/jackrabbit20120501/framework/build.xml Tue Aug  7 06:25:59 2012
@@ -28,7 +28,7 @@ under the License.
                security/build.xml,service/build.xml,entityext/build.xml,
                bi/build.xml,minilang/build.xml,
                webapp/build.xml,widget/build.xml,
-               common/build.xml,datafile/build.xml,birt/build.xml,
+               common/build.xml,datafile/build.xml,
                testtools/build.xml,
                appserver/build.xml,webtools/build.xml,jcr/build.xml"/>
 

Modified: ofbiz/branches/jackrabbit20120501/framework/catalina/ofbiz-component.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/catalina/ofbiz-component.xml?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/catalina/ofbiz-component.xml (original)
+++ ofbiz/branches/jackrabbit20120501/framework/catalina/ofbiz-component.xml Tue Aug  7 06:25:59 2012
@@ -27,6 +27,320 @@ under the License.
     <classpath type="dir" location="config"/>
     <entity-resource type="model" reader-name="main" loader="main" location="entitydef/entitymodel.xml"/>
 
+    <container name="catalina-container" loaders="main" class="org.ofbiz.catalina.container.CatalinaContainer">
+        <!-- static configuration for tomcat -->
+        <property name="delegator-name" value="default"/>
+        <property name="use-naming" value="false"/>
+        <property name="debug" value="0"/>
+        <property name="catalina-runtime-home" value="runtime/catalina"/>
+        <property name="apps-context-reloadable" value="false"/>
+        <property name="apps-cross-context" value="false"/>
+        <property name="apps-distributable" value="false"/><!-- you must also set all the webapps you want distributable, by adding <distributable/> in their web.xml file -->
+        <!-- one or more tomcat engines (servers); map to this + host -->
+        <property name="default-server" value="engine">
+            <property name="default-host" value="0.0.0.0"/>
+            <property name="jvm-route" value="jvm1"/>
+            <property name="access-log-pattern">
+                <property-value>%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"</property-value>
+            </property>
+            <property name="access-log-resolve" value="true"/>
+            <property name="access-log-rotate" value="true"/>
+            <property name="access-log-prefix" value="access_log."/>
+            <property name="access-log-dir" value="runtime/logs"/>
+            <!-- uncomment for cluster support
+            <property name="default-server-cluster" value="cluster">
+                <property name="rep-valve-filter">
+                <property-value>.*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;.*\.png;.*\.css;.*\.ico;.*\.htc;</property-value>
+                </property>
+                <property name="manager-class" value="org.apache.catalina.ha.session.DeltaManager"/>
+                <property name="debug" value="5"/>
+                <property name="replication-mode" value="org.apache.catalina.tribes.transport.bio.PooledMultiSender"/>
+                <property name="tcp-listen-host" value="auto"/>
+                <property name="tcp-listen-port" value="4001"/>
+                <property name="tcp-sector-timeout" value="100"/>
+                <property name="tcp-thread-count" value="6"/>
+                <property name="mcast-bind-addr" value="192.168.2.1"/>
+                <property name="mcast-addr" value="228.0.0.4"/>
+                <property name="mcast-port" value="45564"/>
+                <property name="mcast-freq" value="500"/>
+                <property name="mcast-drop-time" value="3000"/>
+            </property>
+            -->
+            <!-- <property name="ssl-accelerator-port" value="8443"/> -->
+            <property name="enable-cross-subdomain-sessions" value="false"/>
+        </property>
+        <!-- all connectors support type, host, port, enable-lookups -->
+        <property name="ajp-connector" value="connector">
+            <!-- see http://jakarta.apache.org/tomcat/tomcat-5.5-doc/config/ajp.html for reference -->
+            <property name="allowTrace" value="false"/>
+            <property name="emptySessionPath" value="false"/>
+            <property name="enableLookups" value="false"/>
+            <property name="maxPostSize" value="2097152"/>
+            <property name="protocol" value="AJP/1.3"/>
+            <property name="proxyName" value=""/>
+            <property name="proxyPort" value=""/>
+            <property name="redirectPort" value=""/>
+            <property name="scheme" value="http"/>
+            <property name="secure" value="false"/>
+            <property name="URIEncoding" value="UTF-8"/>
+            <property name="useBodyEncodingForURI" value="false"/>
+            <property name="xpoweredBy" value="true"/>
+            <!-- AJP/13 connector attributes -->
+            <property name="address" value="0.0.0.0"/>
+            <property name="backlog" value="10"/>
+            <property name="maxSpareThreads" value="50"/>
+            <property name="maxThreads" value="200"/>
+            <property name="minSpareThreads" value="4"/>
+            <property name="port" value="8009"/>
+            <property name="tcpNoDelay" value="true"/>
+            <property name="soTimeout" value="60000"/>
+            <property name="tomcatAuthentication" value="true"/>
+        </property>
+        <property name="http-connector" value="connector">
+            <!-- see http://jakarta.apache.org/tomcat/tomcat-5.5-doc/config/http.html for reference -->
+            <property name="allowTrace" value="false"/>
+            <property name="emptySessionPath" value="false"/>
+            <property name="enableLookups" value="false"/>
+            <property name="maxPostSize" value="2097152"/>
+            <property name="protocol" value="HTTP/1.1"/>
+            <property name="proxyName" value=""/>
+            <property name="proxyPort" value=""/>
+            <property name="redirectPort" value=""/>
+            <property name="scheme" value="http"/>
+            <property name="secure" value="false"/>
+            <property name="URIEncoding" value="UTF-8"/>
+            <property name="useBodyEncodingForURI" value="false"/>
+            <property name="xpoweredBy" value="true"/>
+            <!-- HTTP connector attributes -->
+            <property name="acceptCount" value="10"/>
+            <property name="address" value="0.0.0.0"/>
+            <property name="bufferSize" value="2048"/>
+            <property name="compression" value="on"/>
+            <property name="compressableMimeType" value="text/html,text/xml,text/plain,text/javascript,text/css"/>
+            <property name="noCompressionUserAgents" value=""/>
+            <property name="connectionLinger" value="-1"/>
+            <property name="connectionTimeout" value="60000"/>
+            <property name="disableUploadTimeout" value="false"/>
+            <property name="maxHttpHeaderSize" value="4096"/>
+            <property name="maxKeepAliveRequests" value="100"/>
+            <property name="maxSpareThreads" value="50"/>
+            <property name="maxThreads" value="100"/>
+            <property name="minSpareThreads" value="4"/>
+            <property name="port" value="8080"/>
+            <property name="restrictedUserAgents" value=""/>
+            <property name="server" value=""/>
+            <property name="socketBuffer" value="9000"/>
+            <property name="strategy" value="lf"/>
+            <property name="tcpNoDelay" value="true"/>
+            <property name="threadPriority" value="java.lang.Thread#NORM_PRIORITY"/>
+        </property>
+        <property name="https-connector" value="connector">
+            <!-- see http://jakarta.apache.org/tomcat/tomcat-5.5-doc/config/http.html for reference -->
+            <property name="allowTrace" value="false"/>
+            <property name="emptySessionPath" value="false"/>
+            <property name="enableLookups" value="false"/>
+            <property name="maxPostSize" value="2097152"/>
+            <property name="protocol" value="HTTP/1.1"/>
+            <property name="proxyName" value=""/>
+            <property name="proxyPort" value=""/>
+            <property name="redirectPort" value=""/>
+            <property name="scheme" value="https"/>
+            <property name="secure" value="true"/>
+            <property name="URIEncoding" value="UTF-8"/>
+            <property name="useBodyEncodingForURI" value="false"/>
+            <property name="xpoweredBy" value="true"/>
+            <!-- HTTP connector attributes -->
+            <property name="acceptCount" value="10"/>
+            <property name="address" value="0.0.0.0"/>
+            <property name="bufferSize" value="2048"/>
+            <property name="compression" value="on"/>
+            <property name="compressableMimeType" value="text/html,text/xml,text/plain,text/javascript,text/css"/>
+            <property name="noCompressionUserAgents" value=""/>
+            <property name="connectionLinger" value="-1"/>
+            <property name="connectionTimeout" value="60000"/>
+            <property name="disableUploadTimeout" value="false"/>
+            <property name="maxHttpHeaderSize" value="4096"/>
+            <property name="maxKeepAliveRequests" value="100"/>
+            <property name="maxSpareThreads" value="50"/>
+            <property name="maxThreads" value="100"/>
+            <property name="minSpareThreads" value="4"/>
+            <property name="port" value="8443"/>
+            <property name="restrictedUserAgents" value=""/>
+            <property name="server" value=""/>
+            <property name="socketBuffer" value="9000"/>
+            <property name="strategy" value="lf"/>
+            <property name="tcpNoDelay" value="true"/>
+            <property name="threadPriority" value="java.lang.Thread#NORM_PRIORITY"/>
+            <!-- SSL connector attributes -->
+            <property name="sSLImplementation" value="org.ofbiz.catalina.container.SSLImpl"/>
+            <property name="algorithm" value="SunX509"/>
+            <!-- the clientAuth to "want" in order to receive certs from the client;
+                note that this isn't set this way by default because with certain browsers
+                (like Safari) it breaks access via HTTPS, so until that problem is fixed
+                the default will be false -->
+            <property name="clientAuth" value="false"/>
+            <property name="keystoreFile" value="framework/base/config/ofbizssl.jks"/>
+            <property name="keystorePass" value="changeit"/>
+            <property name="keystoreType" value="JKS"/>
+            <property name="sslProtocol" value="TLS"/>
+            <property name="ciphers" value=""/>
+        </property>
+    </container>
+    <container name="catalina-container-test" loaders="test" class="org.ofbiz.catalina.container.CatalinaContainer">
+        <!-- static configuration for tomcat -->
+        <property name="delegator-name" value="default"/>
+        <property name="use-naming" value="false"/>
+        <property name="debug" value="0"/>
+        <property name="catalina-runtime-home" value="runtime/catalina"/>
+        <property name="apps-context-reloadable" value="false"/>
+        <property name="apps-cross-context" value="false"/>
+        <property name="apps-distributable" value="false"/><!-- you must also set all the webapps you want distributable, by adding <distributable/> in their web.xml file -->
+        <!-- one or more tomcat engines (servers); map to this + host -->
+        <property name="default-server" value="engine">
+            <property name="default-host" value="0.0.0.0"/>
+            <property name="jvm-route" value="jvm1"/>
+            <property name="access-log-pattern">
+                <property-value>%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"</property-value>
+            </property>
+            <property name="access-log-resolve" value="true"/>
+            <property name="access-log-rotate" value="true"/>
+            <property name="access-log-prefix" value="access_log."/>
+            <property name="access-log-dir" value="runtime/logs"/>
+            <property name="enable-request-dump" value="false"/>
+            <!-- uncomment for cluster support
+            <property name="default-server-cluster" value="cluster">
+                <property name="rep-valve-filter">
+                <property-value>.*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;.*\.png;.*\.css;.*\.ico;.*\.htc;</property-value>
+                </property>
+                <property name="manager-class" value="org.apache.catalina.cluster.session.DeltaManager"/>
+                <property name="debug" value="5"/>
+                <property name="replication-mode" value="org.apache.catalina.tribes.transport.bio.PooledMultiSender"/>
+                <property name="tcp-listen-host" value="auto"/>
+                <property name="tcp-listen-port" value="4001"/>
+                <property name="tcp-sector-timeout" value="100"/>
+                <property name="tcp-thread-count" value="6"/>
+                <property name="mcast-bind-addr" value="192.168.2.1"/>
+                <property name="mcast-addr" value="224.0.0.1"/>
+                <property name="mcast-port" value="45564"/>
+                <property name="mcast-freq" value="500"/>
+                <property name="mcast-drop-time" value="3000"/>
+            </property>
+            -->
+            <!-- <property name="ssl-accelerator-port" value="8443"/> -->
+        </property>
+        <!-- all connectors support type, host, port, enable-lookups -->
+        <property name="ajp-connector" value="connector">
+            <!-- see http://jakarta.apache.org/tomcat/tomcat-5.5-doc/config/ajp.html for reference -->
+            <property name="allowTrace" value="false"/>
+            <property name="emptySessionPath" value="false"/>
+            <property name="enableLookups" value="false"/>
+            <property name="maxPostSize" value="2097152"/>
+            <property name="protocol" value="AJP/1.3"/>
+            <property name="proxyName" value=""/>
+            <property name="proxyPort" value=""/>
+            <property name="redirectPort" value=""/>
+            <property name="scheme" value="http"/>
+            <property name="secure" value="false"/>
+            <property name="URIEncoding" value="UTF-8"/>
+            <property name="useBodyEncodingForURI" value="false"/>
+            <property name="xpoweredBy" value="true"/>
+            <!-- AJP/13 connector attributes -->
+            <property name="address" value="0.0.0.0"/>
+            <property name="backlog" value="10"/>
+            <property name="maxSpareThreads" value="50"/>
+            <property name="maxThreads" value="200"/>
+            <property name="minSpareThreads" value="4"/>
+            <property name="port" value="8010"/>
+            <property name="tcpNoDelay" value="true"/>
+            <property name="soTimeout" value="60000"/>
+            <property name="tomcatAuthentication" value="true"/>
+        </property>
+        <property name="http-connector" value="connector">
+            <!-- see http://jakarta.apache.org/tomcat/tomcat-5.5-doc/config/http.html for reference -->
+            <property name="allowTrace" value="false"/>
+            <property name="emptySessionPath" value="false"/>
+            <property name="enableLookups" value="false"/>
+            <property name="maxPostSize" value="2097152"/>
+            <property name="protocol" value="HTTP/1.1"/>
+            <property name="proxyName" value=""/>
+            <property name="proxyPort" value=""/>
+            <property name="redirectPort" value=""/>
+            <property name="scheme" value="http"/>
+            <property name="secure" value="false"/>
+            <property name="URIEncoding" value="UTF-8"/>
+            <property name="useBodyEncodingForURI" value="false"/>
+            <property name="xpoweredBy" value="true"/>
+            <!-- HTTP connector attributes -->
+            <property name="acceptCount" value="10"/>
+            <property name="address" value="0.0.0.0"/>
+            <property name="bufferSize" value="2048"/>
+            <property name="compressableMimeType" value="text/html,text/xml,text/plain"/>
+            <property name="compression" value="on"/>
+            <property name="connectionLinger" value="-1"/>
+            <property name="connectionTimeout" value="60000"/>
+            <property name="disableUploadTimeout" value="false"/>
+            <property name="maxHttpHeaderSize" value="4096"/>
+            <property name="maxKeepAliveRequests" value="100"/>
+            <property name="maxSpareThreads" value="50"/>
+            <property name="maxThreads" value="100"/>
+            <property name="minSpareThreads" value="4"/>
+            <property name="noCompressionUserAgents" value=""/>
+            <property name="port" value="8081"/>
+            <property name="restrictedUserAgents" value=""/>
+            <property name="server" value=""/>
+            <property name="socketBuffer" value="9000"/>
+            <property name="strategy" value="lf"/>
+            <property name="tcpNoDelay" value="true"/>
+            <property name="threadPriority" value="java.lang.Thread#NORM_PRIORITY"/>
+        </property>
+        <property name="https-connector" value="connector">
+            <!-- see http://jakarta.apache.org/tomcat/tomcat-5.5-doc/config/http.html for reference -->
+            <property name="allowTrace" value="false"/>
+            <property name="emptySessionPath" value="false"/>
+            <property name="enableLookups" value="false"/>
+            <property name="maxPostSize" value="2097152"/>
+            <property name="protocol" value="HTTP/1.1"/>
+            <property name="proxyName" value=""/>
+            <property name="proxyPort" value=""/>
+            <property name="redirectPort" value=""/>
+            <property name="scheme" value="https"/>
+            <property name="secure" value="true"/>
+            <property name="URIEncoding" value="UTF-8"/>
+            <property name="useBodyEncodingForURI" value="false"/>
+            <property name="xpoweredBy" value="true"/>
+            <!-- HTTP connector attributes -->
+            <property name="acceptCount" value="10"/>
+            <property name="address" value="0.0.0.0"/>
+            <property name="bufferSize" value="2048"/>
+            <property name="compressableMimeType" value="text/html,text/xml,text/plain"/>
+            <property name="compression" value="on"/>
+            <property name="connectionLinger" value="-1"/>
+            <property name="connectionTimeout" value="60000"/>
+            <property name="disableUploadTimeout" value="false"/>
+            <property name="maxHttpHeaderSize" value="4096"/>
+            <property name="maxKeepAliveRequests" value="100"/>
+            <property name="maxSpareThreads" value="50"/>
+            <property name="maxThreads" value="100"/>
+            <property name="minSpareThreads" value="4"/>
+            <property name="noCompressionUserAgents" value=""/>
+            <property name="port" value="8444"/>
+            <property name="restrictedUserAgents" value=""/>
+            <property name="server" value=""/>
+            <property name="socketBuffer" value="9000"/>
+            <property name="strategy" value="lf"/>
+            <property name="tcpNoDelay" value="true"/>
+            <property name="threadPriority" value="java.lang.Thread#NORM_PRIORITY"/>
+            <!-- SSL connector attributes -->
+            <property name="sSLImplementation" value="org.ofbiz.catalina.container.SSLImpl"/>
+            <property name="algorithm" value="SunX509"/>
+            <property name="clientAuth" value="want"/>
+            <property name="keystoreFile" value="framework/base/config/ofbizssl.jks"/>
+            <property name="keystorePass" value="changeit"/>
+            <property name="keystoreType" value="JKS"/>
+            <property name="sslProtocol" value="TLS"/>
+            <property name="ciphers" value=""/>
+        </property>
+    </container>
     <!--
         <webapp name="catalina-root"
                 title="ROOT"

Modified: ofbiz/branches/jackrabbit20120501/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java (original)
+++ ofbiz/branches/jackrabbit20120501/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java Tue Aug  7 06:25:59 2012
@@ -171,12 +171,13 @@ public class CatalinaContainer implement
 
     protected String catalinaRuntimeHome;
 
-    /**
-     * @see org.ofbiz.base.container.Container#init(java.lang.String[], java.lang.String)
-     */
-    public void init(String[] args, String configFile) throws ContainerException {
+    private String name;
+
+    @Override
+    public void init(String[] args, String name, String configFile) throws ContainerException {
+        this.name = name;
         // get the container config
-        ContainerConfig.Container cc = ContainerConfig.getContainer("catalina-container", configFile);
+        ContainerConfig.Container cc = ContainerConfig.getContainer(name, configFile);
         if (cc == null) {
             throw new ContainerException("No catalina-container configuration found in container config!");
         }
@@ -803,6 +804,10 @@ public class CatalinaContainer implement
         }
     }
 
+    public String getName() {
+        return name;
+    }
+
     protected void configureMimeTypes(Context context) throws ContainerException {
         Map<String, String> mimeTypes = CatalinaContainer.getMimeTypes();
         if (UtilValidate.isNotEmpty(mimeTypes)) {

Modified: ofbiz/branches/jackrabbit20120501/framework/common/servicedef/services.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/common/servicedef/services.xml?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/common/servicedef/services.xml (original)
+++ ofbiz/branches/jackrabbit20120501/framework/common/servicedef/services.xml Tue Aug  7 06:25:59 2012
@@ -787,4 +787,20 @@ under the License.
         <attribute name="encoding" mode="IN" type="String" optional="true" default-value="UTF-8"></attribute>
     </service>
 
+    <!-- Metrics services -->
+    <service name="getAllMetrics" auth="true" use-transaction="false"
+            engine="java" location="org.ofbiz.common.CommonServices" invoke="getAllMetrics">
+        <description>
+            Get all metrics. Returns a List of Maps - one Map per metric. Each Map includes the following keys:
+            name, serviceRate, threshold, totalEvents. See org.ofbiz.base.metrics.Metrics.
+        </description>
+        <attribute name="metricsList" mode="OUT" type="java.util.List" optional="false" />
+    </service>
+
+    <service name="resetMetric" auth="true" use-transaction="false"
+         engine="java" location="org.ofbiz.common.CommonServices" invoke="resetMetric">
+        <description>Resets a metric. See org.ofbiz.base.metrics.Metrics.</description>
+        <attribute name="name" mode="IN" type="String" optional="false"/>
+    </service>
+
 </services>

Modified: ofbiz/branches/jackrabbit20120501/framework/common/src/org/ofbiz/common/CommonServices.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/common/src/org/ofbiz/common/CommonServices.java?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/common/src/org/ofbiz/common/CommonServices.java (original)
+++ ofbiz/branches/jackrabbit20120501/framework/common/src/org/ofbiz/common/CommonServices.java Tue Aug  7 06:25:59 2012
@@ -18,11 +18,14 @@
  *******************************************************************************/
 package org.ofbiz.common;
 
+import static org.ofbiz.base.util.UtilGenerics.checkList;
+import static org.ofbiz.base.util.UtilGenerics.checkMap;
+
 import java.io.BufferedReader;
 import java.io.FileNotFoundException;
+import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.io.IOException;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.RandomAccessFile;
@@ -43,14 +46,14 @@ import javolution.util.FastMap;
 
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
+import org.ofbiz.base.metrics.Metrics;
+import org.ofbiz.base.metrics.MetricsFactory;
 import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.StringUtil;
 import org.ofbiz.base.util.UtilDateTime;
-import org.ofbiz.base.util.UtilValidate;
-
-import static org.ofbiz.base.util.UtilGenerics.checkList;
-import static org.ofbiz.base.util.UtilGenerics.checkMap;
 import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.base.util.UtilProperties;
+import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.entity.Delegator;
 import org.ofbiz.entity.GenericEntityException;
 import org.ofbiz.entity.GenericValue;
@@ -63,6 +66,7 @@ import org.ofbiz.service.ModelService;
 import org.ofbiz.service.ServiceUtil;
 import org.ofbiz.service.ServiceXaWrapper;
 import org.ofbiz.service.mail.MimeMessageWrapper;
+import org.owasp.esapi.errors.EncodingException;
 
 /**
  * Common Services
@@ -541,4 +545,35 @@ public class CommonServices {
         }
     }
 
+    public static Map<String, Object> getAllMetrics(DispatchContext dctx, Map<String, ?> context) {
+        List<Map<String, Object>> metricsMapList = FastList.newInstance();
+        List<Metrics> metricsList = MetricsFactory.getMetrics();
+        for (Metrics metrics : metricsList) {
+            Map<String, Object> metricsMap = FastMap.newInstance();
+            metricsMap.put("name", metrics.getName());
+            metricsMap.put("serviceRate", metrics.getServiceRate());
+            metricsMap.put("threshold", metrics.getThreshold());
+            metricsMap.put("totalEvents", metrics.getTotalEvents());
+            metricsMapList.add(metricsMap);
+        }
+        Map<String, Object> result = ServiceUtil.returnSuccess();
+        result.put("metricsList", metricsMapList);
+        return result;
+    }
+
+    public static Map<String, Object> resetMetric(DispatchContext dctx, Map<String, ?> context) {
+        String name = (String) context.get("name");
+        try {
+            name = StringUtil.defaultWebEncoder.decodeFromURL(name);
+        } catch (EncodingException e) {
+            return ServiceUtil.returnError("Exception thrown while decoding metric name \"" + name + "\"");
+        }
+        Metrics metric = MetricsFactory.getMetric(name);
+        if (metric != null) {
+            metric.reset();
+            return ServiceUtil.returnSuccess();
+
+        }
+        return ServiceUtil.returnError("Metric \"" + name + "\" not found.");
+    }
 }

Modified: ofbiz/branches/jackrabbit20120501/framework/common/src/org/ofbiz/common/authentication/api/Authenticator.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/common/src/org/ofbiz/common/authentication/api/Authenticator.java?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/common/src/org/ofbiz/common/authentication/api/Authenticator.java (original)
+++ ofbiz/branches/jackrabbit20120501/framework/common/src/org/ofbiz/common/authentication/api/Authenticator.java Tue Aug  7 06:25:59 2012
@@ -33,7 +33,7 @@ public interface Authenticator {
     /**
      * Method called when authenticator is first initialized (the delegator
      * object can be obtained from the LocalDispatcher)
-     * @param dispatcher The ServiceDispatcher to use for this Authenticator
+     * @param dispatcher The LocalDispatcher to use for this Authenticator
      */
     public void initialize(LocalDispatcher dispatcher);
 

Modified: ofbiz/branches/jackrabbit20120501/framework/common/src/org/ofbiz/common/authentication/example/TestFailAuthenticator.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/common/src/org/ofbiz/common/authentication/example/TestFailAuthenticator.java?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/common/src/org/ofbiz/common/authentication/example/TestFailAuthenticator.java (original)
+++ ofbiz/branches/jackrabbit20120501/framework/common/src/org/ofbiz/common/authentication/example/TestFailAuthenticator.java Tue Aug  7 06:25:59 2012
@@ -39,7 +39,7 @@ public class TestFailAuthenticator imple
      * Method called when authenticator is first initialized (the delegator
      * object can be obtained from the LocalDispatcher)
      *
-     * @param dispatcher The ServiceDispatcher to use for this Authenticator
+     * @param dispatcher The LocalDispatcher to use for this Authenticator
      */
     public void initialize(LocalDispatcher dispatcher) {
         this.dispatcher = dispatcher;

Modified: ofbiz/branches/jackrabbit20120501/framework/common/src/org/ofbiz/common/scripting/ContextHelper.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/common/src/org/ofbiz/common/scripting/ContextHelper.java?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/common/src/org/ofbiz/common/scripting/ContextHelper.java (original)
+++ ofbiz/branches/jackrabbit20120501/framework/common/src/org/ofbiz/common/scripting/ContextHelper.java Tue Aug  7 06:25:59 2012
@@ -40,7 +40,6 @@ import org.ofbiz.base.util.string.Flexib
 import org.ofbiz.entity.Delegator;
 import org.ofbiz.entity.GenericValue;
 import org.ofbiz.security.Security;
-import org.ofbiz.security.authz.Authorization;
 import org.ofbiz.service.LocalDispatcher;
 import org.ofbiz.service.ModelService;
 
@@ -78,10 +77,6 @@ public final class ContextHelper {
         return FlexibleStringExpander.expandString(original, getBindings());
     }
 
-    public Authorization getAuthz() {
-        return (Authorization) this.context.getAttribute("authz");
-    }
-
     public Map<String, Object> getBindings() {
         return this.context.getBindings(ScriptContext.ENGINE_SCOPE);
     }

Modified: ofbiz/branches/jackrabbit20120501/framework/common/webcommon/WEB-INF/common-controller.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/common/webcommon/WEB-INF/common-controller.xml?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/common/webcommon/WEB-INF/common-controller.xml (original)
+++ ofbiz/branches/jackrabbit20120501/framework/common/webcommon/WEB-INF/common-controller.xml Tue Aug  7 06:25:59 2012
@@ -44,7 +44,6 @@ under the License.
     <handler name="screenfop" type="view" class="org.ofbiz.widget.screen.ScreenFopViewHandler"/>
     <handler name="jsp" type="view" class="org.ofbiz.webapp.view.JspViewHandler"/>
     <handler name="http" type="view" class="org.ofbiz.webapp.view.HttpViewHandler"/>
-    <handler name="birt" type="view" class="org.ofbiz.birt.webapp.view.BirtViewHandler"/>
 
     <preprocessor>
         <!-- Events to run on every request before security (chains exempt) -->

Modified: ofbiz/branches/jackrabbit20120501/framework/common/webcommon/WEB-INF/portal-controller.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/common/webcommon/WEB-INF/portal-controller.xml?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/common/webcommon/WEB-INF/portal-controller.xml (original)
+++ ofbiz/branches/jackrabbit20120501/framework/common/webcommon/WEB-INF/portal-controller.xml Tue Aug  7 06:25:59 2012
@@ -27,10 +27,6 @@ under the License.
         <security https="true" auth="true"/>
         <response name="success" type="view" value="showPortlet"/>
     </request-map>
-    <request-map uri="refreshPortlet">
-        <security https="true" auth="true"/>
-        <response name="success" type="view" value="showPortletUiLabelDecorator"/>
-    </request-map>
     <request-map uri="showPortletMainDecorator">
         <security https="true" auth="true"/>
         <response name="success" type="view" value="showPortletMainDecorator"/>
@@ -82,12 +78,6 @@ under the License.
         <response name="success" type="view-last" value="main" save-last-view="true"/>
         <response name="error" type="request" value="main"/>
     </request-map>
-    <request-map uri="updatePortalPagePortletSeq">
-        <security https="true" auth="true"/>
-        <event type="service" invoke="updatePortalPagePortletSeq"/>
-        <response name="success" type="view-last" value="main" save-last-view="true"/>
-        <response name="error" type="request" value="main"/>
-    </request-map>
     <request-map uri="updatePortletSeqDragDrop">
         <security https="true" auth="true"/>
         <event type="service" invoke="updatePortletSeqDragDrop"/>
@@ -170,7 +160,6 @@ under the License.
     <!-- View Mappings -->
     <view-map name="showPortalPage" type="screen" page="component://common/widget/PortalPageScreens.xml#showPortalPage"/>
     <view-map name="showPortlet" type="screen" page="component://common/widget/PortalPageScreens.xml#showPortlet"/>
-    <view-map name="showPortletUiLabelDecorator" type="screen" page="component://common/widget/PortalPageScreens.xml#showPortletUiLabelDecorator"/>
     <view-map name="showPortletMainDecorator" type="screen" page="component://common/widget/PortalPageScreens.xml#showPortletMainDecorator"/>
     <view-map name="showPortletSimpleDecorator" type="screen" page="component://common/widget/PortalPageScreens.xml#showPortletSimpleDecorator"/>
     <view-map name="ManagePortalPages" type="screen" page="component://common/widget/PortalPageScreens.xml#ManagePortalPages"/>

Modified: ofbiz/branches/jackrabbit20120501/framework/component-load.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/component-load.xml?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/component-load.xml (original)
+++ ofbiz/branches/jackrabbit20120501/framework/component-load.xml Tue Aug  7 06:25:59 2012
@@ -24,16 +24,15 @@ under the License.
     <load-component component-location="geronimo"/>
     <load-component component-location="sql"/>
     <load-component component-location="entity"/>
-    <load-component component-location="catalina"/>
-    <!-- <load-component component-location="jetty"/> -->
     <load-component component-location="security"/>
     <load-component component-location="datafile"/>
     <load-component component-location="minilang"/>
     <load-component component-location="common"/>
     <load-component component-location="service"/>
+    <!-- <load-component component-location="jetty"/> -->
+    <load-component component-location="catalina"/>
     <load-component component-location="entityext"/>
     <load-component component-location="bi"/>
-    <load-component component-location="birt"/>
     <load-component component-location="webapp"/>
     <load-component component-location="widget"/>
     <load-component component-location="appserver"/>

Modified: ofbiz/branches/jackrabbit20120501/framework/entity/build.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/entity/build.xml?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/entity/build.xml (original)
+++ ofbiz/branches/jackrabbit20120501/framework/entity/build.xml Tue Aug  7 06:25:59 2012
@@ -41,8 +41,6 @@ under the License.
     </path>
 
     <patternset id="src.exc.set">
-        <exclude name="org/ofbiz/entity/connection/XaPoolConnectionFactory.java"/>
-        <exclude name="org/ofbiz/entity/connection/TyrexConnectionFactory.java"/>
     </patternset>
 
     <target name="jar" depends="classes">

Modified: ofbiz/branches/jackrabbit20120501/framework/entity/dtd/entitymodel.xsd
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/entity/dtd/entitymodel.xsd?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/entity/dtd/entitymodel.xsd (original)
+++ ofbiz/branches/jackrabbit20120501/framework/entity/dtd/entitymodel.xsd Tue Aug  7 06:25:59 2012
@@ -92,6 +92,15 @@ under the License.
         <xs:attribute name="never-cache" default="false" type="boolean"/>
         <xs:attribute name="never-check" default="false" type="boolean"/>
         <xs:attribute name="auto-clear-cache" default="true" type="boolean"/>
+        <xs:attribute name="redefinition" type="boolean">
+            <xs:annotation>
+                <xs:documentation>
+                    Indicates if this entity redefines an existing entity.
+                    When set to "true" it will suppress "Entity is defined more than once" warnings.
+                    Defaults to "false".
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
         <xs:attribute name="title" type="xs:string"/>
         <xs:attribute name="copyright" type="xs:string"/>
         <xs:attribute name="author" type="xs:string"/>

Modified: ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/Delegator.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/Delegator.java?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/Delegator.java (original)
+++ ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/Delegator.java Tue Aug  7 06:25:59 2012
@@ -844,7 +844,7 @@ public interface Delegator {
      *
      * @throws IllegalArgumentException
      *             if the list found has more than one item
-     * @deprecated use {@link #getRelatedOne(String, GenericValue, boolean)
+     * @deprecated use {@link #getRelatedOne(String, GenericValue, boolean)}
      */
     @Deprecated
     public GenericValue getRelatedOne(String relationName, GenericValue value) throws GenericEntityException;
@@ -856,7 +856,7 @@ public interface Delegator {
      *
      * @throws IllegalArgumentException
      *             if the list found has more than one item
-     * @deprecated use {@link #getRelatedOne(String, GenericValue, boolean)
+     * @deprecated use {@link #getRelatedOne(String, GenericValue, boolean)}
      */
     @Deprecated
     public GenericValue getRelatedOneCache(String relationName, GenericValue value) throws GenericEntityException;

Modified: ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/DatasourceInfo.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/DatasourceInfo.java?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/DatasourceInfo.java (original)
+++ ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/DatasourceInfo.java Tue Aug  7 06:25:59 2012
@@ -26,13 +26,12 @@ import org.ofbiz.base.util.UtilXml;
 import org.w3c.dom.Element;
 
 /**
- * Misc. utility method for dealing with the entityengine.xml file
+ * A model for the &lt;datasource&gt; element.
  *
  */
-public class DatasourceInfo {
+public class DatasourceInfo extends NamedInfo {
     public static final String module = DatasourceInfo.class.getName();
 
-    public String name;
     public String helperClass;
     public String fieldTypeName;
     public List<? extends Element> sqlLoadPaths;
@@ -79,7 +78,7 @@ public class DatasourceInfo {
     public int maxWorkerPoolSize = 1;
 
     public DatasourceInfo(Element element) {
-        this.name = element.getAttribute("name");
+        super(element);
         this.helperClass = element.getAttribute("helper-class");
         this.fieldTypeName = element.getAttribute("field-type-name");
 

Modified: ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/DelegatorInfo.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/DelegatorInfo.java?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/DelegatorInfo.java (original)
+++ ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/DelegatorInfo.java Tue Aug  7 06:25:59 2012
@@ -21,12 +21,11 @@ package org.ofbiz.entity.config;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.base.util.UtilXml;
 import org.w3c.dom.Element;
 
 /**
- * Misc. utility method for dealing with the entityengine.xml file
+ * A model for the &lt;delegator&gt; element.
  *
  */
 public class DelegatorInfo extends NamedInfo {
@@ -57,15 +56,15 @@ public class DelegatorInfo extends Named
         // this defaults to false, ie anything but true is false
         this.useDistributedCacheClear = "true".equalsIgnoreCase(element.getAttribute("distributed-cache-clear-enabled"));
         this.distributedCacheClearClassName = element.getAttribute("distributed-cache-clear-class-name");
-        if (UtilValidate.isEmpty(this.distributedCacheClearClassName)) this.distributedCacheClearClassName = "org.ofbiz.entityext.cache.EntityCacheServices";
+        if (this.distributedCacheClearClassName.isEmpty()) this.distributedCacheClearClassName = "org.ofbiz.entityext.cache.EntityCacheServices";
 
         this.distributedCacheClearUserLoginId = element.getAttribute("distributed-cache-clear-user-login-id");
-        if (UtilValidate.isEmpty(this.distributedCacheClearUserLoginId)) this.distributedCacheClearUserLoginId = "system";
+        if (this.distributedCacheClearUserLoginId.isEmpty()) this.distributedCacheClearUserLoginId = "system";
 
         this.sequencedIdPrefix = element.getAttribute("sequenced-id-prefix");
 
         this.defaultGroupName = element.getAttribute("default-group-name");
-        if (UtilValidate.isEmpty(this.defaultGroupName)) this.defaultGroupName = "org.ofbiz";
+        if (this.defaultGroupName.isEmpty()) this.defaultGroupName = "org.ofbiz";
 
         for (Element groupMapElement: UtilXml.childElementList(element, "group-map")) {
             groupMap.put(groupMapElement.getAttribute("group-name"), groupMapElement.getAttribute("datasource-name"));

Modified: ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/EntityDataReaderInfo.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/EntityDataReaderInfo.java?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/EntityDataReaderInfo.java (original)
+++ ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/EntityDataReaderInfo.java Tue Aug  7 06:25:59 2012
@@ -21,7 +21,7 @@ package org.ofbiz.entity.config;
 import org.w3c.dom.Element;
 
 /**
- * Misc. utility method for dealing with the entityengine.xml file
+ * A model for the &lt;entity-data-reader&gt; element.
  *
  */
 public class EntityDataReaderInfo extends ResourceInfo {

Modified: ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/EntityEcaReaderInfo.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/EntityEcaReaderInfo.java?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/EntityEcaReaderInfo.java (original)
+++ ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/EntityEcaReaderInfo.java Tue Aug  7 06:25:59 2012
@@ -21,8 +21,7 @@ package org.ofbiz.entity.config;
 import org.w3c.dom.Element;
 
 /**
- * Misc. utility method for dealing with the entityengine.xml file
- *
+ * A model for the &lt;entity-eca-reader&gt; element.
  */
 public class EntityEcaReaderInfo extends ResourceInfo {
     public EntityEcaReaderInfo(Element element) {

Modified: ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/EntityGroupReaderInfo.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/EntityGroupReaderInfo.java?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/EntityGroupReaderInfo.java (original)
+++ ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/EntityGroupReaderInfo.java Tue Aug  7 06:25:59 2012
@@ -18,11 +18,10 @@
  *******************************************************************************/
 package org.ofbiz.entity.config;
 
-import org.ofbiz.base.util.UtilValidate;
 import org.w3c.dom.Element;
 
 /**
- * Misc. utility method for dealing with the entityengine.xml file
+ * A model for the &lt;entity-group-reader&gt; element.
  *
  */
 public class EntityGroupReaderInfo extends ResourceInfo {
@@ -30,8 +29,7 @@ public class EntityGroupReaderInfo exten
         super(element);
         String loader = element.getAttribute("loader");
         String location = element.getAttribute("location");
-
-        if (UtilValidate.isNotEmpty(loader) && UtilValidate.isNotEmpty(location)) {
+        if (!loader.isEmpty() && !location.isEmpty()) {
             resourceElements.add(0, element);
         }
     }

Modified: ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/EntityModelReaderInfo.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/EntityModelReaderInfo.java?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/EntityModelReaderInfo.java (original)
+++ ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/EntityModelReaderInfo.java Tue Aug  7 06:25:59 2012
@@ -21,7 +21,7 @@ package org.ofbiz.entity.config;
 import org.w3c.dom.Element;
 
 /**
- * Misc. utility method for dealing with the entityengine.xml file
+ * A model for the &lt;entity-model-reader&gt; element.
  *
  */
 public class EntityModelReaderInfo extends ResourceInfo {

Modified: ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/FieldTypeInfo.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/FieldTypeInfo.java?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/FieldTypeInfo.java (original)
+++ ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/FieldTypeInfo.java Tue Aug  7 06:25:59 2012
@@ -21,10 +21,11 @@ package org.ofbiz.entity.config;
 import org.w3c.dom.Element;
 
 /**
- * Misc. utility method for dealing with the entityengine.xml file
+ * A model for the &lt;field-type&gt; element.
  *
  */
 public class FieldTypeInfo extends NamedInfo {
+    // FIXME: Do not keep a reference to the DOM Element.
     public Element resourceElement;
 
     public FieldTypeInfo(Element element) {

Modified: ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/NamedInfo.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/NamedInfo.java?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/NamedInfo.java (original)
+++ ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/NamedInfo.java Tue Aug  7 06:25:59 2012
@@ -21,7 +21,7 @@ package org.ofbiz.entity.config;
 import org.w3c.dom.Element;
 
 /**
- * Misc. utility method for dealing with the entityengine.xml file
+ * A base class for entity engine element models.
  *
  */
 public abstract class NamedInfo {

Modified: ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/ResourceInfo.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/ResourceInfo.java?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/ResourceInfo.java (original)
+++ ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/config/ResourceInfo.java Tue Aug  7 06:25:59 2012
@@ -26,10 +26,11 @@ import org.ofbiz.base.util.UtilXml;
 import javolution.util.FastList;
 
 /**
- * Misc. utility method for dealing with the entityengine.xml file
+ * A container for &lt;resource&gt; elements.
  *
  */
 public abstract class ResourceInfo extends NamedInfo {
+    // FIXME: Do not keep a reference to DOM Elements.
     public List<Element> resourceElements = FastList.newInstance();
 
     public ResourceInfo(Element element) {

Modified: ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java (original)
+++ ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java Tue Aug  7 06:25:59 2012
@@ -96,7 +96,7 @@ public class GenericDAO {
         this.helperInfo = helperInfo;
         this.modelFieldTypeReader = ModelFieldTypeReader.getModelFieldTypeReader(helperInfo.getHelperBaseName());
         this.datasourceInfo = EntityConfigUtil.getDatasourceInfo(helperInfo.getHelperBaseName());
-        this.executor = ExecutionPool.getExecutor(GENERIC_DAO_THREAD_GROUP, "entity-datasource(" + helperInfo.getHelperFullName() + ")", datasourceInfo.maxWorkerPoolSize, false);
+        this.executor = ExecutionPool.getExecutor(GENERIC_DAO_THREAD_GROUP, "OFBiz-entity-datasource(" + helperInfo.getHelperFullName() + ")", datasourceInfo.maxWorkerPoolSize, false);
     }
 
     public <T> Future<T> submitWork(Callable<T> callable) throws GenericEntityException {

Modified: ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/datasource/MemoryHelper.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/datasource/MemoryHelper.java?rev=1370126&r1=1370125&r2=1370126&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/datasource/MemoryHelper.java (original)
+++ ofbiz/branches/jackrabbit20120501/framework/entity/src/org/ofbiz/entity/datasource/MemoryHelper.java Tue Aug  7 06:25:59 2012
@@ -281,7 +281,7 @@ public class MemoryHelper implements Gen
         this.helperName = helperName;
         modelFieldTypeReader = ModelFieldTypeReader.getModelFieldTypeReader(helperName);
         DatasourceInfo datasourceInfo = EntityConfigUtil.getDatasourceInfo(helperName);
-        this.executor = ExecutionPool.getExecutor(MEMORY_HELPER_THREAD_GROUP, "entity-datasource(" + helperName + ")", datasourceInfo.maxWorkerPoolSize, false);
+        this.executor = ExecutionPool.getExecutor(MEMORY_HELPER_THREAD_GROUP, "OFBiz-entity-datasource(" + helperName + ")", datasourceInfo.maxWorkerPoolSize, false);
     }
 
     public String getHelperName() {