You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by er...@apache.org on 2012/03/26 22:56:30 UTC

svn commit: r1305581 [27/36] - in /ofbiz/branches/20111205EmailHandling: ./ applications/accounting/config/ applications/accounting/data/ applications/accounting/entitydef/ applications/accounting/script/org/ofbiz/accounting/finaccount/ applications/ac...

Modified: ofbiz/branches/20111205EmailHandling/framework/jetty/src/org/ofbiz/jetty/container/JettyContainer.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/20111205EmailHandling/framework/jetty/src/org/ofbiz/jetty/container/JettyContainer.java?rev=1305581&r1=1305580&r2=1305581&view=diff
==============================================================================
--- ofbiz/branches/20111205EmailHandling/framework/jetty/src/org/ofbiz/jetty/container/JettyContainer.java (original)
+++ ofbiz/branches/20111205EmailHandling/framework/jetty/src/org/ofbiz/jetty/container/JettyContainer.java Mon Mar 26 20:56:02 2012
@@ -18,24 +18,10 @@
  *******************************************************************************/
 package org.ofbiz.jetty.container;
 
-import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.mortbay.jetty.AbstractConnector;
-import org.mortbay.jetty.NCSARequestLog;
-import org.mortbay.jetty.Server;
-import org.mortbay.jetty.ajp.Ajp13SocketConnector;
-import org.mortbay.jetty.bio.SocketConnector;
-import org.mortbay.jetty.handler.RequestLogHandler;
-import org.mortbay.jetty.nio.SelectChannelConnector;
-import org.mortbay.jetty.security.SslSelectChannelConnector;
-import org.mortbay.jetty.security.SslSocketConnector;
-import org.mortbay.jetty.servlet.HashSessionManager;
-import org.mortbay.jetty.servlet.SessionHandler;
-import org.mortbay.jetty.webapp.WebAppContext;
-import org.mortbay.thread.BoundedThreadPool;
 import org.ofbiz.base.component.ComponentConfig;
 import org.ofbiz.base.container.Container;
 import org.ofbiz.base.container.ContainerConfig;
@@ -44,363 +30,322 @@ import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.SSLUtil;
 import org.ofbiz.base.util.UtilValidate;
 
+import org.eclipse.jetty.ajp.Ajp13SocketConnector;
+import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.NCSARequestLog;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.bio.SocketConnector;
+import org.eclipse.jetty.server.handler.HandlerCollection;
+import org.eclipse.jetty.server.handler.RequestLogHandler;
+import org.eclipse.jetty.server.nio.SelectChannelConnector;
+import org.eclipse.jetty.server.session.HashSessionManager;
+import org.eclipse.jetty.server.session.SessionHandler;
+import org.eclipse.jetty.server.ssl.SslConnector;
+import org.eclipse.jetty.server.ssl.SslSelectChannelConnector;
+import org.eclipse.jetty.server.ssl.SslSocketConnector;
+import org.eclipse.jetty.util.ssl.SslContextFactory;
+import org.eclipse.jetty.util.thread.QueuedThreadPool;
+import org.eclipse.jetty.util.thread.ThreadPool;
+import org.eclipse.jetty.webapp.WebAppContext;
+
 
 /**
- * JettyContainer - Container implementation for Jetty 6
- *
+ * JettyContainer - Container implementation for Jetty
  */
 public class JettyContainer implements Container {
 
     public static final String module = JettyContainer.class.getName();
 
-    protected String configFile = null;
     private Map<String, Server> servers = new HashMap<String, Server>();
 
     /**
-     * @see org.ofbiz.base.container.Container#init(java.lang.String[],java.lang.String)
+     * @see org.ofbiz.base.container.Container#init(java.lang.String[], java.lang.String)
      */
-    public void init(String[] args, String configFile) {
-        this.configFile = configFile;
-    }
-
-    private void initJetty() throws ContainerException {
+    public void init(String[] args, String configFile) throws ContainerException {
 
         // configure JSSE properties
         SSLUtil.loadJsseProperties();
 
-        // get the container
-        ContainerConfig.Container jc = ContainerConfig.getContainer("jetty-container", configFile);
+        // get the jetty container config
+        ContainerConfig.Container jettyContainerConfig = ContainerConfig.getContainer("jetty-container", configFile);
 
         // create the servers
-        for (ContainerConfig.Container.Property property : jc.properties.values()) {
-            servers.put(property.name, createServer(property));
+        for (ContainerConfig.Container.Property serverConfig : jettyContainerConfig.getPropertiesWithValue("server")) {
+            servers.put(serverConfig.name, createServer(serverConfig));
         }
 
-        // load the applications
-        Collection<ComponentConfig> componentConfigs = ComponentConfig.getAllComponents();
-        if (componentConfigs != null) {
+        // create the webapp contexts
+        for (ComponentConfig componentConfig : ComponentConfig.getAllComponents()) {
 
-            for (Object componentConfig : componentConfigs) {
+            for (ComponentConfig.WebappInfo webappInfo : componentConfig.getWebappInfos()) {
 
-                ComponentConfig component = (ComponentConfig) componentConfig;
+                Server server = servers.get(webappInfo.server);
+                if (server == null) {
 
-                for (ComponentConfig.WebappInfo webappInfo : component.getWebappInfos()) {
+                    Debug.logError("Server with name [" + webappInfo.server + "] not found; not mounting [" + webappInfo.name + "]", module);
 
-                    List<String> virtualHosts = webappInfo.getVirtualHosts();
-                    Map<String, String> initParameters = webappInfo.getInitParameters();
+                } else {
 
-                    Server server = servers.get(webappInfo.server);
+                    // set the root location (make sure we set the paths correctly)
+                    String location = componentConfig.getRootLocation() + webappInfo.location;
+                    location = location.replace('\\', '/');
+                    if (location.endsWith("/")) {
+                        location = location.substring(0, location.lastIndexOf("/"));
+                    }
 
-                    if (server == null) {
-                        Debug.logWarning("Server with name [" + webappInfo.server + "] not found; not mounting [" + webappInfo.name + "]", module);
-                    } else {
-
-                        // set the root location (make sure we set the paths correctly)
-                        String location = component.getRootLocation() + webappInfo.location;
-                        location = location.replace('\\', '/');
-                        if (location.endsWith("/")) {
-                            location = location.substring(0, location.lastIndexOf("/"));
-                        }
+                    String mountPoint = webappInfo.mountPoint;
+                    if (mountPoint.endsWith("/*")) {
+                        mountPoint = mountPoint.substring(0, mountPoint.lastIndexOf("/"));
+                    }
 
-                        // load the application
-                        String mountPoint = webappInfo.mountPoint;
-                        if (mountPoint.endsWith("/*")) {
-                            mountPoint = mountPoint.substring(0, mountPoint.lastIndexOf("/"));
-                        }
+                    WebAppContext context = new WebAppContext(location, mountPoint);
+                    context.setAttribute("_serverId", webappInfo.server);
+                    context.setLogUrlOnStart(true);
+
+                    // set the session manager
+                    HashSessionManager sm = new HashSessionManager();
+                    context.setSessionHandler(new SessionHandler(sm));
 
-                        WebAppContext context = new WebAppContext(location, mountPoint);
-                        context.setAttribute("_serverId", webappInfo.server);
-                        context.setLogUrlOnStart(true);
-
-                         // set the session manager
-                        HashSessionManager sm = new HashSessionManager();
-                        context.setSessionHandler(new SessionHandler(sm));
-
-                        // set the virtual hosts
-                        if (UtilValidate.isNotEmpty(virtualHosts)) {
-                            context.setVirtualHosts(virtualHosts.toArray(new String[virtualHosts.size()]));
-                        }
+                    // set the virtual hosts
+                    List<String> virtualHosts = webappInfo.getVirtualHosts();
+                    if (UtilValidate.isNotEmpty(virtualHosts)) {
+                        context.setVirtualHosts(virtualHosts.toArray(new String[virtualHosts.size()]));
+                    }
 
-                        // set the init parameters
-                        if (UtilValidate.isNotEmpty(initParameters)) {
-                            context.setInitParams(initParameters);
+                    // set the init parameters
+                    Map<String, String> initParameters = webappInfo.getInitParameters();
+                    if (UtilValidate.isNotEmpty(initParameters)) {
+                        for (Map.Entry<String, String> e : initParameters.entrySet()) {
+                            context.setInitParameter(e.getKey(), e.getValue());
                         }
-
-                        server.addHandler(context);
                     }
+
+                    ((HandlerCollection) server.getHandler()).addHandler(context);
                 }
             }
         }
     }
 
-    private Server createServer(ContainerConfig.Container.Property serverConfig) throws ContainerException {
+    private Server createServer(ContainerConfig.Container.Property serverConfig) {
 
         Server server = new Server();
+        server.setHandler(new HandlerCollection());
 
-        // configure the connectors / loggers
-        for (ContainerConfig.Container.Property props : serverConfig.properties.values()) {
-
-            if ("send-server-version".equals(props.name)) {
-                if ("false".equalsIgnoreCase(props.value)) {
-                    server.setSendServerVersion(false);
-                }
-            } else if ("connector".equals(props.value)) {
-
-                if ("http".equals(props.getProperty("type").value)) {
-
-                    AbstractConnector connector = new SocketConnector();
-                    setConnectorOptions(connector, props);
-                    server.addConnector(connector);
-
-                } else if ("https".equals(props.getProperty("type").value)) {
-
-                    SslSocketConnector connector = new SslSocketConnector();
-                    setConnectorOptions(connector, props);
-
-                    if (props.getProperty("keystore") != null) {
-                        connector.setKeystore(props.getProperty("keystore").value);
-                    }
-                    if (props.getProperty("password") != null) {
-                        connector.setPassword(props.getProperty("password").value);
-                    }
-                    if (props.getProperty("key-password") != null) {
-                        connector.setKeyPassword(props.getProperty("key-password").value);
-                    }
-                    if (props.getProperty("client-auth") != null) {
-                        if ("need".equals(props.getProperty("client-auth").value)) {
-                            connector.setNeedClientAuth(true);
-                        } else if ("want".equals(props.getProperty("client-auth").value)) {
-                            connector.setWantClientAuth(true);
-                        }
-                    }
-
-                    server.addConnector(connector);
-
-                } else if ("nio-http".equals(props.getProperty("type").value)) {
-
-                    AbstractConnector connector = new SelectChannelConnector();
-                    setConnectorOptions(connector, props);
-                    server.addConnector(connector);
-
-                } else if ("nio-https".equals(props.getProperty("type").value)) {
-
-                    SslSelectChannelConnector connector = new SslSelectChannelConnector();
-                    setConnectorOptions(connector, props);
-
-                    if (props.getProperty("keystore") != null) {
-                        connector.setKeystore(props.getProperty("keystore").value);
-                    }
-                    if (props.getProperty("password") != null) {
-                        connector.setPassword(props.getProperty("password").value);
-                    }
-                    if (props.getProperty("key-password") != null) {
-                        connector.setKeyPassword(props.getProperty("key-password").value);
-                    }
-                    if (props.getProperty("need-client-auth") != null) {
-                        boolean needClientAuth = "true".equalsIgnoreCase(props.getProperty("need-client-auth").value);
-                        connector.setNeedClientAuth(needClientAuth);
-                    }
-
-                    server.addConnector(connector);
-
-                } else if ("ajp13".equals(props.getProperty("type").value)) {
+        // send server version?
+        if (UtilValidate.isNotEmpty(serverConfig.getProperty("send-server-version"))) {
+            String sendServerVersionPropertyValue = serverConfig.getProperty("send-server-version").value;
+            try {
+                server.setSendServerVersion(Boolean.parseBoolean(sendServerVersionPropertyValue));
+            } catch (NumberFormatException e) {
+                Debug.logError(e, "invalid value for send-server-version: " + sendServerVersionPropertyValue, module);
+            }
+        }
 
-                    AbstractConnector connector = new Ajp13SocketConnector();
-                    setConnectorOptions(connector, props);
-                    server.addConnector(connector);
-                }
+        // thread pool
+        server.setThreadPool(createThreadPool(serverConfig));
 
-            } else if ("request-log".equals(props.value)) {
+        // connectors
+        for (ContainerConfig.Container.Property connectorConfig : serverConfig.getPropertiesWithValue("connector")) {
 
-                RequestLogHandler requestLogHandler = new RequestLogHandler();
+            Connector connector = null;
 
-                NCSARequestLog requestLog = new NCSARequestLog();
+            String connectorType = connectorConfig.getProperty("type").value;
 
-                if (props.getProperty("filename") != null) {
-                    requestLog.setFilename(props.getProperty("filename").value);
-                }
+            if ("http".equals(connectorType)) {
+                connector = new SocketConnector();
+            } else if ("https".equals(connectorType)) {
+                connector = new SslSocketConnector();
+            } else if ("nio-http".equals(connectorType)) {
+                connector = new SelectChannelConnector();
+            } else if ("nio-https".equals(connectorType)) {
+                connector = new SslSelectChannelConnector();
+            } else if ("ajp13".equals(connectorType)) {
+                connector = new Ajp13SocketConnector();
+            }
 
-                if (props.getProperty("append") != null) {
-                    requestLog.setAppend("true".equalsIgnoreCase(props.getProperty("append").value));
-                }
+            if (connector != null) {
+                setConnectorOptions(connector, connectorConfig);
+                server.addConnector(connector);
+            }
+        }
 
-                if (props.getProperty("extended") != null) {
-                    requestLog.setExtended("true".equalsIgnoreCase(props.getProperty("extended").value));
-                }
+        // request logs
+        for (ContainerConfig.Container.Property props : serverConfig.getPropertiesWithValue("request-log")) {
 
-                if (props.getProperty("timezone") != null) {
-                    requestLog.setLogTimeZone(props.getProperty("timezone").value);
-                }
+            NCSARequestLog requestLog = new NCSARequestLog();
 
-                if (props.getProperty("date-format") != null) {
-                    requestLog.setLogDateFormat(props.getProperty("date-format").value);
+            if (UtilValidate.isNotEmpty(props.getProperty("filename"))) {
+                requestLog.setFilename(props.getProperty("filename").value);
+            }
+            if (UtilValidate.isNotEmpty(props.getProperty("append"))) {
+                requestLog.setAppend("true".equalsIgnoreCase(props.getProperty("append").value));
+            }
+            if (UtilValidate.isNotEmpty(props.getProperty("extended"))) {
+                requestLog.setExtended("true".equalsIgnoreCase(props.getProperty("extended").value));
+            }
+            if (UtilValidate.isNotEmpty(props.getProperty("log-dispatch"))) {
+                requestLog.setLogDispatch("true".equalsIgnoreCase(props.getProperty("log-dispatch").value));
+            }
+            if (UtilValidate.isNotEmpty(props.getProperty("log-latency"))) {
+                requestLog.setLogLatency("true".equalsIgnoreCase(props.getProperty("log-latency").value));
+            }
+            if (UtilValidate.isNotEmpty(props.getProperty("log-server"))) {
+                requestLog.setLogServer("true".equalsIgnoreCase(props.getProperty("log-server").value));
+            }
+            if (UtilValidate.isNotEmpty(props.getProperty("prefer-proxied-for-address"))) {
+                requestLog.setPreferProxiedForAddress("true".equalsIgnoreCase(props.getProperty("prefer-proxied-for-address").value));
+            }
+            if (UtilValidate.isNotEmpty(props.getProperty("timezone"))) {
+                requestLog.setLogTimeZone(props.getProperty("timezone").value);
+            }
+            if (UtilValidate.isNotEmpty(props.getProperty("date-format"))) {
+                requestLog.setLogDateFormat(props.getProperty("date-format").value);
+            }
+            if (UtilValidate.isNotEmpty(props.getProperty("retain-days"))) {
+                String retainDaysPropertyValue = props.getProperty("retain-days").value;
+                try {
+                    requestLog.setRetainDays(Integer.parseInt(retainDaysPropertyValue));
+                } catch (NumberFormatException e) {
+                    Debug.logError(e, "invalid value for retain-days: " + retainDaysPropertyValue, module);
                 }
+            }
 
-                if (props.getProperty("retain-days") != null) {
-                    int days = 90;
-                    try {
-                        days = Integer.parseInt(props.getProperty("retain-days").value);
-                    } catch (NumberFormatException e) {
-                        days = 90;
-                    }
-                    requestLog.setRetainDays(days);
-                }
+            RequestLogHandler requestLogHandler = new RequestLogHandler();
+            requestLogHandler.setRequestLog(requestLog);
 
-                requestLogHandler.setRequestLog(requestLog);
-                server.addHandler(requestLogHandler);
-            }
+            ((HandlerCollection) server.getHandler()).addHandler(requestLogHandler);
         }
 
         return server;
     }
 
-    private void setConnectorOptions(AbstractConnector connector, ContainerConfig.Container.Property props) throws ContainerException {
+    private ThreadPool createThreadPool(ContainerConfig.Container.Property serverConfig) {
 
-        String systemHost = null;
-        if ("default".equals(props.getProperty("type").value)) {
-            systemHost = System.getProperty(props.name + ".host");
-        }
-        if (props.getProperty("host") != null && systemHost == null) {
-            connector.setHost(props.getProperty("host").value);
-        } else {
-            String host = "0.0.0.0";
-            if (systemHost != null) {
-                host = systemHost;
-            }
-            connector.setHost(host);
-        }
+        QueuedThreadPool threadPool = new QueuedThreadPool();
 
-        String systemPort = null;
-        if ("default".equals(props.getProperty("type").value)) {
-            systemPort = System.getProperty(props.name + ".port");
-        }
-        if (props.getProperty("port") != null && systemPort == null) {
-            int value = 8080;
+        if (UtilValidate.isNotEmpty(serverConfig.getProperty("min-threads"))) {
+            String minThreadsPropertyValue = serverConfig.getProperty("min-threads").value;
             try {
-                value = Integer.parseInt(props.getProperty("port").value);
+                threadPool.setMinThreads(Integer.parseInt(minThreadsPropertyValue));
             } catch (NumberFormatException e) {
-                value = 8080;
-            }
-            if (value == 0) value = 8080;
-
-            connector.setPort(value);
-        } else {
-            int port = 8080;
-            if (systemPort != null) {
-                try {
-                    port = Integer.parseInt(systemPort);
-                } catch (NumberFormatException e) {
-                    port = 8080;
-                }
+                Debug.logError(e, "invalid value for min-threads: " + minThreadsPropertyValue, module);
             }
-            connector.setPort(port);
         }
-
-        if (props.getProperty("buffer-size") != null) {
-            int value = 0;
+        if (UtilValidate.isNotEmpty(serverConfig.getProperty("max-threads"))) {
+            String maxThreadsPropertyValue = serverConfig.getProperty("max-threads").value;
             try {
-                value = Integer.parseInt(props.getProperty("buffer-size").value);
+                threadPool.setMaxThreads(Integer.parseInt(maxThreadsPropertyValue));
             } catch (NumberFormatException e) {
-                value = 0;
-            }
-            if (value > 0) {
-                connector.setResponseBufferSize(value);
+                Debug.logError(e, "invalid value for max-threads: " + maxThreadsPropertyValue, module);
             }
         }
-
-        if (props.getProperty("linger-time") != null) {
-            int value = 0;
+        if (UtilValidate.isNotEmpty(serverConfig.getProperty("max-idle-time-ms"))) {
+            String maxIdleTimeMsPropertyValue = serverConfig.getProperty("max-idle-time-ms").value;
             try {
-                value = Integer.parseInt(props.getProperty("linger-time").value);
+                threadPool.setMaxIdleTimeMs(Integer.parseInt(maxIdleTimeMsPropertyValue));
             } catch (NumberFormatException e) {
-                value = 0;
-            }
-            if (value > 0) {
-                connector.setSoLingerTime(value);
+                Debug.logError(e, "invalid value for max-idle-time-ms: " + maxIdleTimeMsPropertyValue, module);
             }
         }
-
-        if (props.getProperty("low-resource-max-idle-time") != null) {
-            int value = 0;
+        if (UtilValidate.isNotEmpty(serverConfig.getProperty("max-stop-time-ms"))) {
+            String maxStopTimeMsPropertyValue = serverConfig.getProperty("max-stop-time-ms").value;
             try {
-                value = Integer.parseInt(props.getProperty("low-resource-max-idle-time").value);
+                threadPool.setMaxStopTimeMs(Integer.parseInt(maxStopTimeMsPropertyValue));
             } catch (NumberFormatException e) {
-                value = 0;
-            }
-            if (value > 0) {
-                connector.setLowResourceMaxIdleTime(value);
+                Debug.logError(e, "invalid value for max-stop-time-ms: " + maxStopTimeMsPropertyValue, module);
             }
         }
 
+        return threadPool;
+    }
 
-        BoundedThreadPool threadPool = new BoundedThreadPool();
+    private void setConnectorOptions(Connector connector, ContainerConfig.Container.Property connectorConfig) {
 
-        if (props.getProperty("min-threads") != null) {
-            int value = 0;
+        if (UtilValidate.isNotEmpty(connectorConfig.getProperty("host"))) {
+            connector.setHost(connectorConfig.getProperty("host").value);
+        }
+        if (UtilValidate.isNotEmpty(connectorConfig.getProperty("port"))) {
+            String portPropertyValue = connectorConfig.getProperty("port").value;
             try {
-                value = Integer.parseInt(props.getProperty("min-threads").value);
+                connector.setPort(Integer.parseInt(portPropertyValue));
             } catch (NumberFormatException e) {
-                value = 0;
-            }
-            if (value > 0) {
-                threadPool.setMinThreads(value);
+                Debug.logError(e, "invalid value for port: " + portPropertyValue, module);
             }
         }
-
-        if (props.getProperty("max-threads") != null) {
-            int value = 0;
+        if (UtilValidate.isNotEmpty(connectorConfig.getProperty("request-buffer-size"))) {
+            String requestBufferSizePropertyValue = connectorConfig.getProperty("request-buffer-size").value;
             try {
-                value = Integer.parseInt(props.getProperty("max-threads").value);
+                connector.setRequestBufferSize(Integer.parseInt(requestBufferSizePropertyValue));
             } catch (NumberFormatException e) {
-                value = 0;
-            }
-            if (value > 0) {
-                threadPool.setMaxThreads(value);
+                Debug.logError(e, "invalid value for request-buffer-size: " + requestBufferSizePropertyValue, module);
             }
         }
-
-        if (props.getProperty("max-idle-time") != null) {
-            int value = 0;
+        if (UtilValidate.isNotEmpty(connectorConfig.getProperty("request-header-size"))) {
+            String requestHeaderSizePropertyValue = connectorConfig.getProperty("request-header-size").value;
             try {
-                value = Integer.parseInt(props.getProperty("max-idle-time").value);
+                connector.setRequestHeaderSize(Integer.parseInt(requestHeaderSizePropertyValue));
             } catch (NumberFormatException e) {
-                value = 0;
+                Debug.logError(e, "invalid value for request-header-size: " + requestHeaderSizePropertyValue, module);
             }
-            if (value > 0) {
-                threadPool.setMaxIdleTimeMs(value);
+        }
+        if (UtilValidate.isNotEmpty(connectorConfig.getProperty("response-buffer-size"))) {
+            String responseBufferSizePropertyValue = connectorConfig.getProperty("response-buffer-size").value;
+            try {
+                connector.setResponseBufferSize(Integer.parseInt(responseBufferSizePropertyValue));
+            } catch (NumberFormatException e) {
+                Debug.logError(e, "invalid value for response-buffer-size: " + responseBufferSizePropertyValue, module);
             }
         }
-
-        if (props.getProperty("low-threads") != null) {
-            int value = 0;
+        if (UtilValidate.isNotEmpty(connectorConfig.getProperty("response-header-size"))) {
+            String responseHeaderSizePropertyValue = connectorConfig.getProperty("response-header-size").value;
             try {
-                value = Integer.parseInt(props.getProperty("low-threads").value);
+                connector.setResponseHeaderSize(Integer.parseInt(responseHeaderSizePropertyValue));
             } catch (NumberFormatException e) {
-                value = 0;
+                Debug.logError(e, "invalid value for response-header-size: " + responseHeaderSizePropertyValue, module);
             }
-            if (value > 0) {
-                threadPool.setLowThreads(value);
+        }
+        if (UtilValidate.isNotEmpty(connectorConfig.getProperty("low-resource-max-idle-time"))) {
+            String lowResourceMaxIdleTimePropertyValue = connectorConfig.getProperty("low-resource-max-idle-time").value;
+            try {
+                connector.setLowResourceMaxIdleTime(Integer.parseInt(lowResourceMaxIdleTimePropertyValue));
+            } catch (NumberFormatException e) {
+                Debug.logError(e, "invalid value for low-resource-max-idle-time: " + lowResourceMaxIdleTimePropertyValue, module);
             }
         }
 
-        connector.setThreadPool(threadPool);
+        // SSL options
+        if (connector instanceof SslConnector) {
+
+            SslContextFactory cf = ((SslConnector) connector).getSslContextFactory();
 
+            if (UtilValidate.isNotEmpty(connectorConfig.getProperty("keystore"))) {
+                cf.setKeyStorePath(connectorConfig.getProperty("keystore").value);
+            }
+            if (connectorConfig.getProperty("password") != null) {
+                cf.setKeyStorePassword(connectorConfig.getProperty("password").value);
+            }
+            if (connectorConfig.getProperty("key-password") != null) {
+                cf.setKeyManagerPassword(connectorConfig.getProperty("key-password").value);
+            }
+            if (UtilValidate.isNotEmpty(connectorConfig.getProperty("client-auth"))) {
+                if ("need".equals(connectorConfig.getProperty("client-auth").value)) {
+                    cf.setNeedClientAuth(true);
+                } else if ("want".equals(connectorConfig.getProperty("client-auth").value)) {
+                    cf.setWantClientAuth(true);
+                }
+            }
+        }
     }
 
     /**
      * @see org.ofbiz.base.container.Container#start()
      */
     public boolean start() throws ContainerException {
-        // start the server(s)
-        this.initJetty();
-        if (servers != null) {
-            for (Server server : servers.values()) {
-                try {
-                    server.start();
-                } catch (Exception e) {
-                    Debug.logError(e, "Jetty Server Exception", module);
-                    throw new ContainerException(e);
-                }
+        for (Server server : servers.values()) {
+            try {
+                server.start();
+            } catch (Exception e) {
+                throw new ContainerException(e);
             }
         }
         return true;
@@ -410,14 +355,13 @@ public class JettyContainer implements C
      * @see org.ofbiz.base.container.Container#stop()
      */
     public void stop() throws ContainerException {
-        if (servers != null) {
-            for (Server server : servers.values()) {
-                try {
-                    server.stop();
-                } catch (Exception e) {
-                    Debug.logWarning(e, module);
-                }
+        for (Server server : servers.values()) {
+            try {
+                server.stop();
+            } catch (Exception e) {
+                throw new ContainerException(e);
             }
         }
     }
+
 }

Modified: ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/SimpleMethod.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/SimpleMethod.java?rev=1305581&r1=1305580&r2=1305581&view=diff
==============================================================================
--- ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/SimpleMethod.java (original)
+++ ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/SimpleMethod.java Mon Mar 26 20:56:02 2012
@@ -83,8 +83,6 @@ import org.ofbiz.service.ModelService;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
-import org.webslinger.invoker.Wrap;
-
 /**
  * SimpleMethod Mini Language Core Object
  */
@@ -895,15 +893,6 @@ public class SimpleMethod {
                     Debug.logWarning("Operation element \"" + nodeName + "\" no recognized", module);
                 }
                 if (methodOp == null) continue;
-                if (UtilProperties.propertyValueEquals("webslinger-invoker.properties", "wrap-calls", "true")) {
-                    Wrap<MethodOperation> wrap = new Wrap<MethodOperation>().fileName(simpleMethod.getLocationAndName()).wrappedClass(methodOp.getClass());
-                    wrap.wrap(methodOperationExecMethod);
-                    Object startLine = curOperElem.getUserData("startLine");
-                    if (startLine != null) {
-                        wrap.lineNumber(((Integer) startLine).intValue());
-                    }
-                    methodOp = wrap.newInstance(new Class<?>[] {Element.class, SimpleMethod.class}, new Object[] {curOperElem, simpleMethod});
-                }
                 methodOperations.add(methodOp);
                 DeprecatedOperation depOp = methodOp.getClass().getAnnotation(DeprecatedOperation.class);
                 if (depOp != null) Debug.logInfo("The " + nodeName + " operation has been deprecated in favor of the " + depOp.value() + " operation; found use of this in [" + simpleMethod.getShortDescription() + "]: " + methodOp.rawString(), module);

Modified: ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/method/callops/CallScript.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/method/callops/CallScript.java?rev=1305581&r1=1305580&r2=1305581&view=diff
==============================================================================
--- ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/method/callops/CallScript.java (original)
+++ ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/method/callops/CallScript.java Mon Mar 26 20:56:02 2012
@@ -23,11 +23,7 @@ import java.util.Map;
 
 import javolution.util.FastList;
 
-import org.codehaus.groovy.runtime.InvokerHelper;
-import org.ofbiz.base.util.BshUtil;
-import org.ofbiz.base.util.GeneralException;
-import org.ofbiz.base.util.GroovyUtil;
-import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.base.util.*;
 import org.ofbiz.minilang.MiniLangException;
 import org.ofbiz.minilang.SimpleMethod;
 import org.ofbiz.minilang.method.ContextAccessor;
@@ -47,8 +43,7 @@ public class CallScript extends MethodOp
     }
     
     public static final String module = CallScript.class.getName();
-    protected static final Object[] EMPTY_ARGS = {};
-    
+
     private ContextAccessor<List<Object>> errorListAcsr;
     private String location;
     private String method;
@@ -73,31 +68,14 @@ public class CallScript extends MethodOp
         }
 
         Map<String, Object> context = methodContext.getEnvMap();        
-        if (location.endsWith(".bsh")) {
-            try {
-                BshUtil.runBshAtLocation(location, context);
-            } catch (GeneralException e) {
-                messages.add("Error running BSH script at location [" + location + "]: " + e.getMessage());
-            }
-        } else if (location.endsWith(".groovy")) {
-            try {
-                groovy.lang.Script script = InvokerHelper.createScript(GroovyUtil.getScriptClassFromLocation(location), GroovyUtil.getBinding(context));
-                if (UtilValidate.isEmpty(method)) {
-                    script.run();
-                } else {
-                    script.invokeMethod(method, EMPTY_ARGS);
-                }
-            } catch (GeneralException e) {                
-                messages.add("Error running Groovy script at location [" + location + "]: " + e.getMessage());
-            }
-        } else if (location.endsWith(".xml")) {                                   
+        if (location.endsWith(".xml")) {
             try {
                 SimpleMethod.runSimpleMethod(location, method, methodContext);                
             } catch (MiniLangException e) {
                 messages.add("Error running simple method at location [" + location + "]: " + e.getMessage());
             }
         } else {
-            messages.add("Unsupported script type [" + location + "]");            
+            ScriptUtil.executeScript(this.location, this.method, context);
         }
         
         // update the method environment

Modified: ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/method/callops/CallService.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/method/callops/CallService.java?rev=1305581&r1=1305580&r2=1305581&view=diff
==============================================================================
--- ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/method/callops/CallService.java (original)
+++ ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/method/callops/CallService.java Mon Mar 26 20:56:02 2012
@@ -26,6 +26,7 @@ import javolution.util.FastList;
 import javolution.util.FastMap;
 
 import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilGenerics;
 import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.base.util.UtilProperties;
 import org.ofbiz.base.util.UtilValidate;
@@ -321,11 +322,28 @@ public class CallService extends MethodO
         String messagePrefixStr = messagePrefix.getMessage(methodContext.getLoader(), methodContext);
         String messageSuffixStr = messageSuffix.getMessage(methodContext.getLoader(), methodContext);
 
-        String errorMessage = ServiceUtil.makeErrorMessage(result, messagePrefixStr, messageSuffixStr, errorPrefixStr, errorSuffixStr);
-        if (UtilValidate.isNotEmpty(errorMessage) && breakOnError) {
-            errorMessage += UtilProperties.getMessage(resource, "simpleMethod.error_show_service_name", UtilMisc.toMap("serviceName", serviceName, "methodName", simpleMethod.getMethodName()), locale);
+        String errorMessage = null;
+        List<String> errorMessageList = null;
+        // See if there is a single message
+        if (result.containsKey(ModelService.ERROR_MESSAGE)) {
+            errorMessage = ServiceUtil.makeErrorMessage(result, messagePrefixStr, messageSuffixStr, errorPrefixStr, errorSuffixStr);
+        } else if (result.containsKey(ModelService.ERROR_MESSAGE_LIST)) {
+            errorMessageList = UtilGenerics.checkList(result.get(ModelService.ERROR_MESSAGE_LIST));
+        }
+
+        if ((UtilValidate.isNotEmpty(errorMessage) || UtilValidate.isNotEmpty(errorMessageList)) && breakOnError) {
             if (methodContext.getMethodType() == MethodContext.EVENT) {
-                methodContext.putEnv(simpleMethod.getEventErrorMessageName(), errorMessage);
+                if (UtilValidate.isNotEmpty(errorMessage)){
+                    if (Debug.verboseOn()){
+                        errorMessage += UtilProperties.getMessage(resource, "simpleMethod.error_show_service_name", UtilMisc.toMap("serviceName", serviceName, "methodName", simpleMethod.getMethodName()), locale);
+                    }
+                    methodContext.putEnv(simpleMethod.getEventErrorMessageName(), errorMessage);
+                } else {
+                    if (Debug.verboseOn()){
+                        errorMessageList.add(UtilProperties.getMessage(resource, "simpleMethod.error_show_service_name", UtilMisc.toMap("serviceName", serviceName, "methodName", simpleMethod.getMethodName()), locale));
+                    }
+                    methodContext.putEnv(simpleMethod.getEventErrorMessageListName(), errorMessageList);
+                }
             } else if (methodContext.getMethodType() == MethodContext.SERVICE) {
                 ServiceUtil.addErrors(UtilMisc.<String, String>getListFromMap(methodContext.getEnvMap(), this.simpleMethod.getServiceErrorMessageListName()),
                         UtilMisc.<String, String, Object>getMapFromMap(methodContext.getEnvMap(), this.simpleMethod.getServiceErrorMessageMapName()), result);
@@ -344,7 +362,7 @@ public class CallService extends MethodO
         }
 
         String defaultMessageStr = defaultMessage.getMessage(methodContext.getLoader(), methodContext);
-        if (UtilValidate.isEmpty(errorMessage) && UtilValidate.isEmpty(successMessage) && UtilValidate.isNotEmpty(defaultMessageStr)) {
+        if (UtilValidate.isEmpty(errorMessage) && UtilValidate.isEmpty(errorMessageList) && UtilValidate.isEmpty(successMessage) && UtilValidate.isNotEmpty(defaultMessageStr)) {
             if (methodContext.getMethodType() == MethodContext.EVENT) {
                 methodContext.putEnv(simpleMethod.getEventEventMessageName(), defaultMessageStr);
             } else if (methodContext.getMethodType() == MethodContext.SERVICE) {

Modified: ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/method/callops/SetServiceFields.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/method/callops/SetServiceFields.java?rev=1305581&r1=1305580&r2=1305581&view=diff
==============================================================================
--- ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/method/callops/SetServiceFields.java (original)
+++ ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/method/callops/SetServiceFields.java Mon Mar 26 20:56:02 2012
@@ -48,7 +48,7 @@ public class SetServiceFields extends Me
         }
     }
 
-    public static final String module = CallService.class.getName();
+    public static final String module = SetServiceFields.class.getName();
 
     String serviceName;
     ContextAccessor<Map<String, ? extends Object>> mapAcsr;

Modified: ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java?rev=1305581&r1=1305580&r2=1305581&view=diff
==============================================================================
--- ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java (original)
+++ ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java Mon Mar 26 20:56:02 2012
@@ -21,12 +21,7 @@ package org.ofbiz.minilang.method.envops
 import javolution.util.FastList;
 import javolution.util.FastMap;
 
-import org.codehaus.groovy.runtime.InvokerHelper;
-import org.ofbiz.base.util.Debug;
-import org.ofbiz.base.util.GeneralException;
-import org.ofbiz.base.util.GroovyUtil;
-import org.ofbiz.base.util.ObjectType;
-import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.base.util.*;
 import org.ofbiz.base.util.string.FlexibleStringExpander;
 import org.ofbiz.minilang.SimpleMethod;
 import org.ofbiz.minilang.method.ContextAccessor;
@@ -56,14 +51,14 @@ public class SetOperation extends Method
     protected String type;
     protected boolean setIfNull; // default to false
     protected boolean setIfEmpty; // default to true
-    protected Class<?> parsedGroovyScript = null;
+    protected Class<?> parsedScript = null;
 
     public SetOperation(Element element, SimpleMethod simpleMethod) {
         super(element, simpleMethod);
         this.field = new ContextAccessor<Object>(element.getAttribute("field"));
         String fromFieldStr = element.getAttribute("from-field");
         if (fromFieldStr != null && fromFieldStr.startsWith("groovy:")) {
-            this.parsedGroovyScript = GroovyUtil.parseClass(fromFieldStr.replace("groovy:", ""));
+            this.parsedScript = ScriptUtil.parseScript("groovy", fromFieldStr.replace("groovy:", ""));
         }
         this.fromField = new ContextAccessor<Object>(fromFieldStr);
         this.valueExdr = FlexibleStringExpander.getInstance(element.getAttribute("value"));
@@ -82,8 +77,12 @@ public class SetOperation extends Method
     @Override
     public boolean exec(MethodContext methodContext) {
         Object newValue = null;
-        if (this.parsedGroovyScript != null) {
-            newValue = InvokerHelper.createScript(this.parsedGroovyScript, GroovyUtil.getBinding(methodContext.getEnvMap())).run();
+        if (this.parsedScript != null) {
+            try {
+                newValue = ScriptUtil.evaluate("groovy", null, this.parsedScript, methodContext.getEnvMap());
+            } catch (Exception exc) {
+                Debug.logWarning(exc, "Error evaluating scriptlet [" + this + "]; error was: " + exc, module);
+            }
         } else if (!this.fromField.isEmpty()) {
             newValue = this.fromField.get(methodContext);
             if (Debug.verboseOn()) Debug.logVerbose("In screen getting value for field from [" + this.fromField.toString() + "]: " + newValue, module);

Modified: ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/method/otherops/PropertyToField.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/method/otherops/PropertyToField.java?rev=1305581&r1=1305580&r2=1305581&view=diff
==============================================================================
--- ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/method/otherops/PropertyToField.java (original)
+++ ofbiz/branches/20111205EmailHandling/framework/minilang/src/org/ofbiz/minilang/method/otherops/PropertyToField.java Mon Mar 26 20:56:02 2012
@@ -24,6 +24,7 @@ import java.util.*;
 import org.w3c.dom.*;
 import javolution.util.FastMap;
 import org.ofbiz.base.util.*;
+import org.ofbiz.entity.util.EntityUtilProperties;
 import org.ofbiz.minilang.*;
 import org.ofbiz.minilang.method.*;
 
@@ -71,9 +72,9 @@ public class PropertyToField extends Met
 
         String value = null;
         if (noLocale) {
-            value = UtilProperties.getPropertyValue(resource, property);
+            value = EntityUtilProperties.getPropertyValue(resource, property, methodContext.getDelegator());
         } else {
-            value = UtilProperties.getMessage(resource, property, methodContext.getLocale());
+            value = EntityUtilProperties.getMessage(resource, property, methodContext.getLocale(), methodContext.getDelegator());
         }
         if (UtilValidate.isEmpty(value)) {
             value = defaultVal;

Modified: ofbiz/branches/20111205EmailHandling/framework/minilang/testdef/MinilangTests.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/20111205EmailHandling/framework/minilang/testdef/MinilangTests.xml?rev=1305581&r1=1305580&r2=1305581&view=diff
==============================================================================
--- ofbiz/branches/20111205EmailHandling/framework/minilang/testdef/MinilangTests.xml (original)
+++ ofbiz/branches/20111205EmailHandling/framework/minilang/testdef/MinilangTests.xml Mon Mar 26 20:56:02 2012
@@ -1,3 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  -->
+
 <test-suite suite-name="MinilangTests"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/test-suite.xsd">

Modified: ofbiz/branches/20111205EmailHandling/framework/resources/templates/Tests.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/20111205EmailHandling/framework/resources/templates/Tests.xml?rev=1305581&r1=1305580&r2=1305581&view=diff
==============================================================================
--- ofbiz/branches/20111205EmailHandling/framework/resources/templates/Tests.xml (original)
+++ ofbiz/branches/20111205EmailHandling/framework/resources/templates/Tests.xml Mon Mar 26 20:56:02 2012
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <test-suite suite-name="@component-resource-name@tests"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/test-suite.xsd">

Modified: ofbiz/branches/20111205EmailHandling/framework/resources/templates/build.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/20111205EmailHandling/framework/resources/templates/build.xml?rev=1305581&r1=1305580&r2=1305581&view=diff
==============================================================================
--- ofbiz/branches/20111205EmailHandling/framework/resources/templates/build.xml (original)
+++ ofbiz/branches/20111205EmailHandling/framework/resources/templates/build.xml Mon Mar 26 20:56:02 2012
@@ -94,10 +94,10 @@
                 </or>
             </condition>
         </fail>
-        <patch strip="0" patchfile="patches/root.patch" dir="${ofbiz.home.dir}"/>
-        <patch strip="0" patchfile="patches/framework.patch" dir="${ofbiz.home.dir}"/>
-        <patch strip="0" patchfile="patches/applications.patch" dir="${ofbiz.home.dir}"/>
-        <patch strip="0" patchfile="patches/specialpurpose.patch" dir="${ofbiz.home.dir}"/>
+        <patch strip="0" patchfile="patches/root.patch" dir="${ofbiz.home.dir}" failonerror="true"/>
+        <patch strip="0" patchfile="patches/framework.patch" dir="${ofbiz.home.dir}" failonerror="true"/>
+        <patch strip="0" patchfile="patches/applications.patch" dir="${ofbiz.home.dir}" failonerror="true"/>
+        <patch strip="0" patchfile="patches/specialpurpose.patch" dir="${ofbiz.home.dir}" failonerror="true"/>
         <delete>          
             <fileset dir="${ofbiz.home.dir}" includes="**/*.rej"/>
         </delete>

Modified: ofbiz/branches/20111205EmailHandling/framework/resources/templates/web.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/20111205EmailHandling/framework/resources/templates/web.xml?rev=1305581&r1=1305580&r2=1305581&view=diff
==============================================================================
--- ofbiz/branches/20111205EmailHandling/framework/resources/templates/web.xml (original)
+++ ofbiz/branches/20111205EmailHandling/framework/resources/templates/web.xml Mon Mar 26 20:56:02 2012
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
 <web-app>
     <display-name>Open For Business - @component-resource-name@ Component</display-name>
     <description>@component-resource-name@ Component of the Open For Business Project</description>

Propchange: ofbiz/branches/20111205EmailHandling/framework/security/data/PasswordSecurityData.xml
------------------------------------------------------------------------------
  Merged /ofbiz/trunk/framework/security/data/PasswordSecurityData.xml:r1210494-1305499

Modified: ofbiz/branches/20111205EmailHandling/framework/security/src/org/ofbiz/security/OFBizSecurity.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/20111205EmailHandling/framework/security/src/org/ofbiz/security/OFBizSecurity.java?rev=1305581&r1=1305580&r2=1305581&view=diff
==============================================================================
--- ofbiz/branches/20111205EmailHandling/framework/security/src/org/ofbiz/security/OFBizSecurity.java (original)
+++ ofbiz/branches/20111205EmailHandling/framework/security/src/org/ofbiz/security/OFBizSecurity.java Mon Mar 26 20:56:02 2012
@@ -50,9 +50,9 @@ public class OFBizSecurity implements Se
     protected Delegator delegator = null;
 
     protected static final Map<String, Map<String, String>> simpleRoleEntity = UtilMisc.toMap(
-        "ORDERMGR", UtilMisc.toMap("name", "OrderRole", "pkey", "orderId"),
-        "FACILITY", UtilMisc.toMap("name", "FacilityParty", "pkey", "facilityId"),
-        "MARKETING", UtilMisc.toMap("name", "MarketingCampaignRole", "pkey", "marketingCampaignId"));
+        "ORDERMGR", UtilMisc.<String, String>toMap("name", "OrderRole", "pkey", "orderId"),
+        "FACILITY", UtilMisc.<String, String>toMap("name", "FacilityParty", "pkey", "facilityId"),
+        "MARKETING", UtilMisc.<String, String>toMap("name", "MarketingCampaignRole", "pkey", "marketingCampaignId"));
 
     protected OFBizSecurity() {}
 

Modified: ofbiz/branches/20111205EmailHandling/framework/service/config/service.properties
URL: http://svn.apache.org/viewvc/ofbiz/branches/20111205EmailHandling/framework/service/config/service.properties?rev=1305581&r1=1305580&r2=1305581&view=diff
==============================================================================
--- ofbiz/branches/20111205EmailHandling/framework/service/config/service.properties (original)
+++ ofbiz/branches/20111205EmailHandling/framework/service/config/service.properties Mon Mar 26 20:56:02 2012
@@ -17,8 +17,6 @@
 # under the License.
 ###############################################################################
 
-# If set to true then service definitions are wrapped with their filename and line number, for easier debugging; if enabled, JVM PermGen memory settings may need to be increased
-servicedispatcher.servicedebugmode=true
 # flag to automatically export all services: same of setting export="true" for all service definitions
 remotedispatcher.exportall=false
 # complete answer from SOAP WSDL or only brief message "Problem processing the service" for security reason

Modified: ofbiz/branches/20111205EmailHandling/framework/service/config/serviceengine.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/20111205EmailHandling/framework/service/config/serviceengine.xml?rev=1305581&r1=1305580&r2=1305581&view=diff
==============================================================================
--- ofbiz/branches/20111205EmailHandling/framework/service/config/serviceengine.xml (original)
+++ ofbiz/branches/20111205EmailHandling/framework/service/config/serviceengine.xml Mon Mar 26 20:56:02 2012
@@ -40,29 +40,34 @@ under the License.
         </thread-pool>
 
         <!-- Service Engine Configuration -->
-        <engine name="bsh" class="org.ofbiz.service.engine.BeanShellEngine"/>
         <engine name="entity-auto" class="org.ofbiz.service.engine.EntityAutoEngine"/>
-        <engine name="groovy" class="org.ofbiz.service.engine.GroovyEngine"/>
         <engine name="group" class="org.ofbiz.service.group.ServiceGroupEngine"/>
-        <engine name="http" class="org.ofbiz.service.engine.HttpEngine"/>
         <engine name="interface" class="org.ofbiz.service.engine.InterfaceEngine"/>
-        <engine name="jacl" class="org.ofbiz.service.engine.BSFEngine"/>
         <engine name="java" class="org.ofbiz.service.engine.StandardJavaEngine"/>
-        <engine name="javascript" class="org.ofbiz.service.engine.BSFEngine"/>
-        <engine name="jms" class="org.ofbiz.service.jms.JmsServiceEngine"/>
+        <engine name="simple" class="org.ofbiz.minilang.SimpleServiceEngine"/>
+        <engine name="script" class="org.ofbiz.service.engine.ScriptEngine"/>
+        <!-- Engines that can be replaced by the generic script engine -->
+        <engine name="bsh" class="org.ofbiz.service.engine.BeanShellEngine"/>
+        <engine name="groovy" class="org.ofbiz.service.engine.GroovyEngine">
+            <parameter name="scriptBaseClass" value="org.ofbiz.service.engine.GroovyBaseScript"/>
+        </engine>
+        <engine name="jacl" class="org.ofbiz.service.engine.BSFEngine"/>
+        <engine name="javascript" class="org.ofbiz.service.engine.ScriptEngine"/>
         <engine name="jpython" class="org.ofbiz.service.engine.BSFEngine"/>
+        <!--  -->
         <engine name="route" class="org.ofbiz.service.engine.RouteEngine"/>
+        <engine name="http" class="org.ofbiz.service.engine.HttpEngine"/>
+        <engine name="jms" class="org.ofbiz.service.jms.JmsServiceEngine"/>
         <engine name="rmi" class="org.ofbiz.service.rmi.RmiServiceEngine"/>
-        <engine name="simple" class="org.ofbiz.minilang.SimpleServiceEngine"/>
         <engine name="soap" class="org.ofbiz.service.engine.SOAPClientEngine"/>
         <engine name="ofbiz-workflow" class="org.ofbiz.workflow.WorkflowEngine"/>
         <engine name="workflow" class="org.ofbiz.shark.service.SharkServiceEngine"/>
-        <engine name="webslinger-server" class="org.ofbiz.webslinger.WebslingerServerEngine"/>
         <engine name="xml-rpc-local" class="org.ofbiz.service.engine.XMLRPCClientEngine">
             <parameter name="url" value="http://localhost:8080/webtools/control/xmlrpc"/>
             <parameter name="login" value="admin"/>
             <parameter name="password" value="ofbiz"/>
         </engine>
+
         <service-location name="main-rmi" location="rmi://localhost:1099/RMIDispatcher"/>
         <service-location name="main-http" location="http://localhost:8080/webtools/control/httpService"/>
 

Modified: ofbiz/branches/20111205EmailHandling/framework/service/data/ServiceDemoData.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/20111205EmailHandling/framework/service/data/ServiceDemoData.xml?rev=1305581&r1=1305580&r2=1305581&view=diff
==============================================================================
--- ofbiz/branches/20111205EmailHandling/framework/service/data/ServiceDemoData.xml (original)
+++ ofbiz/branches/20111205EmailHandling/framework/service/data/ServiceDemoData.xml Mon Mar 26 20:56:02 2012
@@ -21,155 +21,6 @@ under the License.
 <entity-engine-xml>
     <!-- Temporal Expression demo data -->
 
-    <!-- Pre-define all 60 minutes -->
-    <TemporalExpression tempExprId="MINUTE_00" tempExprTypeId="MINUTE_RANGE" description="Minute 0" integer1="0" integer2="0"/>
-    <TemporalExpression tempExprId="MINUTE_01" tempExprTypeId="MINUTE_RANGE" description="Minute 1" integer1="1" integer2="1"/>
-    <TemporalExpression tempExprId="MINUTE_02" tempExprTypeId="MINUTE_RANGE" description="Minute 2" integer1="2" integer2="2"/>
-    <TemporalExpression tempExprId="MINUTE_03" tempExprTypeId="MINUTE_RANGE" description="Minute 3" integer1="3" integer2="3"/>
-    <TemporalExpression tempExprId="MINUTE_04" tempExprTypeId="MINUTE_RANGE" description="Minute 4" integer1="4" integer2="4"/>
-    <TemporalExpression tempExprId="MINUTE_05" tempExprTypeId="MINUTE_RANGE" description="Minute 5" integer1="5" integer2="5"/>
-    <TemporalExpression tempExprId="MINUTE_06" tempExprTypeId="MINUTE_RANGE" description="Minute 6" integer1="6" integer2="6"/>
-    <TemporalExpression tempExprId="MINUTE_07" tempExprTypeId="MINUTE_RANGE" description="Minute 7" integer1="7" integer2="7"/>
-    <TemporalExpression tempExprId="MINUTE_08" tempExprTypeId="MINUTE_RANGE" description="Minute 8" integer1="8" integer2="8"/>
-    <TemporalExpression tempExprId="MINUTE_09" tempExprTypeId="MINUTE_RANGE" description="Minute 9" integer1="9" integer2="9"/>
-    <TemporalExpression tempExprId="MINUTE_10" tempExprTypeId="MINUTE_RANGE" description="Minute 10" integer1="10" integer2="10"/>
-    <TemporalExpression tempExprId="MINUTE_11" tempExprTypeId="MINUTE_RANGE" description="Minute 11" integer1="11" integer2="11"/>
-    <TemporalExpression tempExprId="MINUTE_12" tempExprTypeId="MINUTE_RANGE" description="Minute 12" integer1="12" integer2="12"/>
-    <TemporalExpression tempExprId="MINUTE_13" tempExprTypeId="MINUTE_RANGE" description="Minute 13" integer1="13" integer2="13"/>
-    <TemporalExpression tempExprId="MINUTE_14" tempExprTypeId="MINUTE_RANGE" description="Minute 14" integer1="14" integer2="14"/>
-    <TemporalExpression tempExprId="MINUTE_15" tempExprTypeId="MINUTE_RANGE" description="Minute 15" integer1="15" integer2="15"/>
-    <TemporalExpression tempExprId="MINUTE_16" tempExprTypeId="MINUTE_RANGE" description="Minute 16" integer1="16" integer2="16"/>
-    <TemporalExpression tempExprId="MINUTE_17" tempExprTypeId="MINUTE_RANGE" description="Minute 17" integer1="17" integer2="17"/>
-    <TemporalExpression tempExprId="MINUTE_18" tempExprTypeId="MINUTE_RANGE" description="Minute 18" integer1="18" integer2="18"/>
-    <TemporalExpression tempExprId="MINUTE_19" tempExprTypeId="MINUTE_RANGE" description="Minute 19" integer1="19" integer2="19"/>
-    <TemporalExpression tempExprId="MINUTE_20" tempExprTypeId="MINUTE_RANGE" description="Minute 20" integer1="20" integer2="20"/>
-    <TemporalExpression tempExprId="MINUTE_21" tempExprTypeId="MINUTE_RANGE" description="Minute 21" integer1="21" integer2="21"/>
-    <TemporalExpression tempExprId="MINUTE_22" tempExprTypeId="MINUTE_RANGE" description="Minute 22" integer1="22" integer2="22"/>
-    <TemporalExpression tempExprId="MINUTE_23" tempExprTypeId="MINUTE_RANGE" description="Minute 23" integer1="23" integer2="23"/>
-    <TemporalExpression tempExprId="MINUTE_24" tempExprTypeId="MINUTE_RANGE" description="Minute 24" integer1="24" integer2="24"/>
-    <TemporalExpression tempExprId="MINUTE_25" tempExprTypeId="MINUTE_RANGE" description="Minute 25" integer1="25" integer2="25"/>
-    <TemporalExpression tempExprId="MINUTE_26" tempExprTypeId="MINUTE_RANGE" description="Minute 26" integer1="26" integer2="26"/>
-    <TemporalExpression tempExprId="MINUTE_27" tempExprTypeId="MINUTE_RANGE" description="Minute 27" integer1="27" integer2="27"/>
-    <TemporalExpression tempExprId="MINUTE_28" tempExprTypeId="MINUTE_RANGE" description="Minute 28" integer1="28" integer2="28"/>
-    <TemporalExpression tempExprId="MINUTE_29" tempExprTypeId="MINUTE_RANGE" description="Minute 29" integer1="29" integer2="29"/>
-    <TemporalExpression tempExprId="MINUTE_30" tempExprTypeId="MINUTE_RANGE" description="Minute 30" integer1="30" integer2="30"/>
-    <TemporalExpression tempExprId="MINUTE_31" tempExprTypeId="MINUTE_RANGE" description="Minute 31" integer1="31" integer2="31"/>
-    <TemporalExpression tempExprId="MINUTE_32" tempExprTypeId="MINUTE_RANGE" description="Minute 32" integer1="32" integer2="32"/>
-    <TemporalExpression tempExprId="MINUTE_33" tempExprTypeId="MINUTE_RANGE" description="Minute 33" integer1="33" integer2="33"/>
-    <TemporalExpression tempExprId="MINUTE_34" tempExprTypeId="MINUTE_RANGE" description="Minute 34" integer1="34" integer2="34"/>
-    <TemporalExpression tempExprId="MINUTE_35" tempExprTypeId="MINUTE_RANGE" description="Minute 35" integer1="35" integer2="35"/>
-    <TemporalExpression tempExprId="MINUTE_36" tempExprTypeId="MINUTE_RANGE" description="Minute 36" integer1="36" integer2="36"/>
-    <TemporalExpression tempExprId="MINUTE_37" tempExprTypeId="MINUTE_RANGE" description="Minute 37" integer1="37" integer2="37"/>
-    <TemporalExpression tempExprId="MINUTE_38" tempExprTypeId="MINUTE_RANGE" description="Minute 38" integer1="38" integer2="38"/>
-    <TemporalExpression tempExprId="MINUTE_39" tempExprTypeId="MINUTE_RANGE" description="Minute 39" integer1="39" integer2="39"/>
-    <TemporalExpression tempExprId="MINUTE_40" tempExprTypeId="MINUTE_RANGE" description="Minute 40" integer1="40" integer2="40"/>
-    <TemporalExpression tempExprId="MINUTE_41" tempExprTypeId="MINUTE_RANGE" description="Minute 41" integer1="41" integer2="41"/>
-    <TemporalExpression tempExprId="MINUTE_42" tempExprTypeId="MINUTE_RANGE" description="Minute 42" integer1="42" integer2="42"/>
-    <TemporalExpression tempExprId="MINUTE_43" tempExprTypeId="MINUTE_RANGE" description="Minute 43" integer1="43" integer2="43"/>
-    <TemporalExpression tempExprId="MINUTE_44" tempExprTypeId="MINUTE_RANGE" description="Minute 44" integer1="44" integer2="44"/>
-    <TemporalExpression tempExprId="MINUTE_45" tempExprTypeId="MINUTE_RANGE" description="Minute 45" integer1="45" integer2="45"/>
-    <TemporalExpression tempExprId="MINUTE_46" tempExprTypeId="MINUTE_RANGE" description="Minute 46" integer1="46" integer2="46"/>
-    <TemporalExpression tempExprId="MINUTE_47" tempExprTypeId="MINUTE_RANGE" description="Minute 47" integer1="47" integer2="47"/>
-    <TemporalExpression tempExprId="MINUTE_48" tempExprTypeId="MINUTE_RANGE" description="Minute 48" integer1="48" integer2="48"/>
-    <TemporalExpression tempExprId="MINUTE_49" tempExprTypeId="MINUTE_RANGE" description="Minute 49" integer1="49" integer2="49"/>
-    <TemporalExpression tempExprId="MINUTE_50" tempExprTypeId="MINUTE_RANGE" description="Minute 50" integer1="50" integer2="50"/>
-    <TemporalExpression tempExprId="MINUTE_51" tempExprTypeId="MINUTE_RANGE" description="Minute 51" integer1="51" integer2="51"/>
-    <TemporalExpression tempExprId="MINUTE_52" tempExprTypeId="MINUTE_RANGE" description="Minute 52" integer1="52" integer2="52"/>
-    <TemporalExpression tempExprId="MINUTE_53" tempExprTypeId="MINUTE_RANGE" description="Minute 53" integer1="53" integer2="53"/>
-    <TemporalExpression tempExprId="MINUTE_54" tempExprTypeId="MINUTE_RANGE" description="Minute 54" integer1="54" integer2="54"/>
-    <TemporalExpression tempExprId="MINUTE_55" tempExprTypeId="MINUTE_RANGE" description="Minute 55" integer1="55" integer2="55"/>
-    <TemporalExpression tempExprId="MINUTE_56" tempExprTypeId="MINUTE_RANGE" description="Minute 56" integer1="56" integer2="56"/>
-    <TemporalExpression tempExprId="MINUTE_57" tempExprTypeId="MINUTE_RANGE" description="Minute 57" integer1="57" integer2="57"/>
-    <TemporalExpression tempExprId="MINUTE_58" tempExprTypeId="MINUTE_RANGE" description="Minute 58" integer1="58" integer2="58"/>
-    <TemporalExpression tempExprId="MINUTE_59" tempExprTypeId="MINUTE_RANGE" description="Minute 59" integer1="59" integer2="59"/>
-
-    <!-- Pre-define all 24 hours of the day -->
-    <TemporalExpression tempExprId="HOUR_00" tempExprTypeId="HOUR_RANGE" description="Hour 0" integer1="0" integer2="0"/>
-    <TemporalExpression tempExprId="HOUR_01" tempExprTypeId="HOUR_RANGE" description="Hour 1" integer1="1" integer2="1"/>
-    <TemporalExpression tempExprId="HOUR_02" tempExprTypeId="HOUR_RANGE" description="Hour 2" integer1="2" integer2="2"/>
-    <TemporalExpression tempExprId="HOUR_03" tempExprTypeId="HOUR_RANGE" description="Hour 3" integer1="3" integer2="3"/>
-    <TemporalExpression tempExprId="HOUR_04" tempExprTypeId="HOUR_RANGE" description="Hour 4" integer1="4" integer2="4"/>
-    <TemporalExpression tempExprId="HOUR_05" tempExprTypeId="HOUR_RANGE" description="Hour 5" integer1="5" integer2="5"/>
-    <TemporalExpression tempExprId="HOUR_06" tempExprTypeId="HOUR_RANGE" description="Hour 6" integer1="6" integer2="6"/>
-    <TemporalExpression tempExprId="HOUR_07" tempExprTypeId="HOUR_RANGE" description="Hour 7" integer1="7" integer2="7"/>
-    <TemporalExpression tempExprId="HOUR_08" tempExprTypeId="HOUR_RANGE" description="Hour 8" integer1="8" integer2="8"/>
-    <TemporalExpression tempExprId="HOUR_09" tempExprTypeId="HOUR_RANGE" description="Hour 9" integer1="9" integer2="9"/>
-    <TemporalExpression tempExprId="HOUR_10" tempExprTypeId="HOUR_RANGE" description="Hour 10" integer1="10" integer2="10"/>
-    <TemporalExpression tempExprId="HOUR_11" tempExprTypeId="HOUR_RANGE" description="Hour 11" integer1="11" integer2="11"/>
-    <TemporalExpression tempExprId="HOUR_12" tempExprTypeId="HOUR_RANGE" description="Hour 12" integer1="12" integer2="12"/>
-    <TemporalExpression tempExprId="HOUR_13" tempExprTypeId="HOUR_RANGE" description="Hour 13" integer1="13" integer2="13"/>
-    <TemporalExpression tempExprId="HOUR_14" tempExprTypeId="HOUR_RANGE" description="Hour 14" integer1="14" integer2="14"/>
-    <TemporalExpression tempExprId="HOUR_15" tempExprTypeId="HOUR_RANGE" description="Hour 15" integer1="15" integer2="15"/>
-    <TemporalExpression tempExprId="HOUR_16" tempExprTypeId="HOUR_RANGE" description="Hour 16" integer1="16" integer2="16"/>
-    <TemporalExpression tempExprId="HOUR_17" tempExprTypeId="HOUR_RANGE" description="Hour 17" integer1="17" integer2="17"/>
-    <TemporalExpression tempExprId="HOUR_18" tempExprTypeId="HOUR_RANGE" description="Hour 18" integer1="18" integer2="18"/>
-    <TemporalExpression tempExprId="HOUR_19" tempExprTypeId="HOUR_RANGE" description="Hour 19" integer1="19" integer2="19"/>
-    <TemporalExpression tempExprId="HOUR_20" tempExprTypeId="HOUR_RANGE" description="Hour 20" integer1="20" integer2="20"/>
-    <TemporalExpression tempExprId="HOUR_21" tempExprTypeId="HOUR_RANGE" description="Hour 21" integer1="21" integer2="21"/>
-    <TemporalExpression tempExprId="HOUR_22" tempExprTypeId="HOUR_RANGE" description="Hour 22" integer1="22" integer2="22"/>
-    <TemporalExpression tempExprId="HOUR_23" tempExprTypeId="HOUR_RANGE" description="Hour 23" integer1="23" integer2="23"/>
-
-    <!-- Pre-define all days of the week (Sunday -> Saturday) -->
-    <TemporalExpression tempExprId="DAYOFWEEK_01" tempExprTypeId="DAY_OF_WEEK_RANGE" description="Sunday" integer1="1" integer2="1"/>
-    <TemporalExpression tempExprId="DAYOFWEEK_02" tempExprTypeId="DAY_OF_WEEK_RANGE" description="Monday" integer1="2" integer2="2"/>
-    <TemporalExpression tempExprId="DAYOFWEEK_03" tempExprTypeId="DAY_OF_WEEK_RANGE" description="Tuesday" integer1="3" integer2="3"/>
-    <TemporalExpression tempExprId="DAYOFWEEK_04" tempExprTypeId="DAY_OF_WEEK_RANGE" description="Wednesday" integer1="4" integer2="4"/>
-    <TemporalExpression tempExprId="DAYOFWEEK_05" tempExprTypeId="DAY_OF_WEEK_RANGE" description="Thursday" integer1="5" integer2="5"/>
-    <TemporalExpression tempExprId="DAYOFWEEK_06" tempExprTypeId="DAY_OF_WEEK_RANGE" description="Friday" integer1="6" integer2="6"/>
-    <TemporalExpression tempExprId="DAYOFWEEK_07" tempExprTypeId="DAY_OF_WEEK_RANGE" description="Saturday" integer1="7" integer2="7"/>
-
-    <!-- Pre-define some day of the week ranges -->
-    <TemporalExpression tempExprId="MON_TO_FRI" tempExprTypeId="DAY_OF_WEEK_RANGE" description="Monday to Friday" integer1="2" integer2="6"/>
-    <TemporalExpression tempExprId="SAT_TO_SUN" tempExprTypeId="DAY_OF_WEEK_RANGE" description="Saturday to Sunday" integer1="7" integer2="1"/>
-
-    <!-- Pre-define all 13 months (January -> Undecimber) -->
-    <TemporalExpression tempExprId="MONTH_RANGE_01" tempExprTypeId="MONTH_RANGE" description="January" integer1="0" integer2="0"/>
-    <TemporalExpression tempExprId="MONTH_RANGE_02" tempExprTypeId="MONTH_RANGE" description="February" integer1="1" integer2="1"/>
-    <TemporalExpression tempExprId="MONTH_RANGE_03" tempExprTypeId="MONTH_RANGE" description="March" integer1="2" integer2="2"/>
-    <TemporalExpression tempExprId="MONTH_RANGE_04" tempExprTypeId="MONTH_RANGE" description="April" integer1="3" integer2="3"/>
-    <TemporalExpression tempExprId="MONTH_RANGE_05" tempExprTypeId="MONTH_RANGE" description="May" integer1="4" integer2="4"/>
-    <TemporalExpression tempExprId="MONTH_RANGE_06" tempExprTypeId="MONTH_RANGE" description="June" integer1="5" integer2="5"/>
-    <TemporalExpression tempExprId="MONTH_RANGE_07" tempExprTypeId="MONTH_RANGE" description="July" integer1="6" integer2="6"/>
-    <TemporalExpression tempExprId="MONTH_RANGE_08" tempExprTypeId="MONTH_RANGE" description="August" integer1="7" integer2="7"/>
-    <TemporalExpression tempExprId="MONTH_RANGE_09" tempExprTypeId="MONTH_RANGE" description="September" integer1="8" integer2="8"/>
-    <TemporalExpression tempExprId="MONTH_RANGE_10" tempExprTypeId="MONTH_RANGE" description="October" integer1="9" integer2="9"/>
-    <TemporalExpression tempExprId="MONTH_RANGE_11" tempExprTypeId="MONTH_RANGE" description="November" integer1="10" integer2="10"/>
-    <TemporalExpression tempExprId="MONTH_RANGE_12" tempExprTypeId="MONTH_RANGE" description="December" integer1="11" integer2="11"/>
-    <TemporalExpression tempExprId="MONTH_RANGE_13" tempExprTypeId="MONTH_RANGE" description="Undecimber" integer1="12" integer2="12"/>
-
-    <!-- Pre-define all 31 days of the month -->
-    <TemporalExpression tempExprId="DAYOFMONTH_01" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 1 of Month" integer1="1" integer2="1"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_02" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 2 of Month" integer1="2" integer2="2"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_03" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 3 of Month" integer1="3" integer2="3"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_04" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 4 of Month" integer1="4" integer2="4"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_05" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 5 of Month" integer1="5" integer2="5"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_06" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 6 of Month" integer1="6" integer2="6"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_07" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 7 of Month" integer1="7" integer2="7"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_08" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 8 of Month" integer1="8" integer2="8"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_09" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 9 of Month" integer1="9" integer2="9"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_10" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 10 of Month" integer1="10" integer2="10"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_11" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 11 of Month" integer1="11" integer2="11"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_12" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 12 of Month" integer1="12" integer2="12"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_13" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 13 of Month" integer1="13" integer2="13"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_14" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 14 of Month" integer1="14" integer2="14"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_15" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 15 of Month" integer1="15" integer2="15"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_16" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 16 of Month" integer1="16" integer2="16"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_17" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 17 of Month" integer1="17" integer2="17"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_18" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 18 of Month" integer1="18" integer2="18"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_19" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 19 of Month" integer1="19" integer2="19"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_20" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 20 of Month" integer1="20" integer2="20"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_21" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 21 of Month" integer1="21" integer2="21"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_22" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 22 of Month" integer1="22" integer2="22"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_23" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 23 of Month" integer1="23" integer2="23"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_24" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 24 of Month" integer1="24" integer2="24"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_25" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 25 of Month" integer1="25" integer2="25"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_26" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 26 of Month" integer1="26" integer2="26"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_27" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 27 of Month" integer1="27" integer2="27"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_28" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 28 of Month" integer1="28" integer2="28"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_29" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 29 of Month" integer1="29" integer2="29"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_30" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 30 of Month" integer1="30" integer2="30"/>
-    <TemporalExpression tempExprId="DAYOFMONTH_31" tempExprTypeId="DAY_OF_MONTH_RANGE" description="Day 31 of Month" integer1="31" integer2="31"/>
-
     <!-- Pre-define nth Monday of the month - many US observances occur on a Monday -->
     <TemporalExpression tempExprId="1ST_MONDAY_IN_MONTH" tempExprTypeId="DAY_IN_MONTH" description="First Monday in Month" integer1="2" integer2="1"/>
     <TemporalExpression tempExprId="2ND_MONDAY_IN_MONTH" tempExprTypeId="DAY_IN_MONTH" description="Second Monday in Month" integer1="2" integer2="2"/>

Modified: ofbiz/branches/20111205EmailHandling/framework/service/ofbiz-component.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/20111205EmailHandling/framework/service/ofbiz-component.xml?rev=1305581&r1=1305580&r2=1305581&view=diff
==============================================================================
--- ofbiz/branches/20111205EmailHandling/framework/service/ofbiz-component.xml (original)
+++ ofbiz/branches/20111205EmailHandling/framework/service/ofbiz-component.xml Mon Mar 26 20:56:02 2012
@@ -30,6 +30,7 @@ under the License.
     <entity-resource type="model" reader-name="main" loader="main" location="entitydef/entitymodel.xml"/>
     <entity-resource type="data" reader-name="seed" loader="main" location="data/ScheduledServiceData.xml"/>
     <entity-resource type="data" reader-name="seed-initial" loader="main" location="data/ScheduledServices.xml"/>
+    <entity-resource type="data" reader-name="seed" loader="main" location="data/ServiceSeedData.xml"/>
     <entity-resource type="data" reader-name="seed" loader="main" location="data/ServiceSecurityData.xml"/>
     <entity-resource type="data" reader-name="demo" loader="main" location="data/ServiceDemoData.xml"/>
 

Modified: ofbiz/branches/20111205EmailHandling/framework/service/src/org/ofbiz/service/ModelService.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/20111205EmailHandling/framework/service/src/org/ofbiz/service/ModelService.java?rev=1305581&r1=1305580&r2=1305581&view=diff
==============================================================================
--- ofbiz/branches/20111205EmailHandling/framework/service/src/org/ofbiz/service/ModelService.java (original)
+++ ofbiz/branches/20111205EmailHandling/framework/service/src/org/ofbiz/service/ModelService.java Mon Mar 26 20:56:02 2012
@@ -202,8 +202,6 @@ public class ModelService extends Abstra
     /** Flag to say if we have pulled in our addition parameters from our implemented service(s) */
     protected boolean inheritedParameters = false;
 
-    public GenericInvoker invoker;
-
     public ModelService() {}
 
     public ModelService(ModelService model) {
@@ -229,9 +227,6 @@ public class ModelService extends Abstra
         this.overrideParameters = model.overrideParameters;
         this.inheritedParameters = model.inheritedParameters();
         this.internalGroup = model.internalGroup;
-        if (model.invoker != null) {
-            this.invoker = model.invoker.copy(this);
-        }
 
         List<ModelParam> modelParamList = model.getModelParamList();
         for (ModelParam param: modelParamList) {
@@ -1365,6 +1360,18 @@ public class ModelService extends Abstra
         /*--------- Standard Objects --------*/
         /*-----------------------------------*/
 
+        /* null Element */
+        Element stdNullElement = document.createElement("xsd:element");
+        stdNullElement.setAttribute("name", "null");
+        Element stdNullElement0 = document.createElement("xsd:complexType");
+        stdNullElement.appendChild(stdNullElement0);
+        Element stdNullElement1 = document.createElement("xsd:attribute");
+        stdNullElement0.appendChild(stdNullElement1);
+        stdNullElement1.setAttribute("name", "value");
+        stdNullElement1.setAttribute("type", "xsd:string");
+        stdNullElement1.setAttribute("use", "required");
+        stdNullElement1.setAttribute("nillable", "true");
+        schema.appendChild(stdNullElement);
         /* std-String Element */
         Element stdStringElement = document.createElement("xsd:element");
         stdStringElement.setAttribute("name", "std-String");
@@ -1442,6 +1449,17 @@ public class ModelService extends Abstra
         stdLocaleElement1.setAttribute("type", "xsd:string");
         stdLocaleElement1.setAttribute("use", "required");
         schema.appendChild(stdLocaleElement);
+        /* std-BigDecimal Element */
+        Element stdBigDecimalElement = document.createElement("xsd:element");
+        stdBigDecimalElement.setAttribute("name", "std-BigDecimal");
+        Element stdBigDecimalElement0 = document.createElement("xsd:complexType");
+        stdBigDecimalElement.appendChild(stdBigDecimalElement0);
+        Element stdBigDecimalElement1 = document.createElement("xsd:attribute");
+        stdBigDecimalElement0.appendChild(stdBigDecimalElement1);
+        stdBigDecimalElement1.setAttribute("name", "value");
+        stdBigDecimalElement1.setAttribute("type", "xsd:decimal");
+        stdBigDecimalElement1.setAttribute("use", "required");
+        schema.appendChild(stdBigDecimalElement);
 
         /*-----------------------------------*/
         /*----------- SQL Objects -----------*/
@@ -1652,6 +1670,12 @@ public class ModelService extends Abstra
         mapValueComplexType.setAttribute("name", "map-Value");
         Element mapValueComplexType0 = document.createElement("xsd:choice");
         mapValueComplexType.appendChild(mapValueComplexType0);
+        Element mapValueComplexTypeNull = document.createElement("xsd:element");
+        mapValueComplexTypeNull.setAttribute("ref", "tns:null");
+        mapValueComplexTypeNull.setAttribute("minOccurs", "1");
+        mapValueComplexTypeNull.setAttribute("maxOccurs", "1");
+        mapValueComplexTypeNull.setAttribute("nillable", "true");
+        mapValueComplexType0.appendChild(mapValueComplexTypeNull);
         Element mapValueComplexType1 = document.createElement("xsd:element");
         mapValueComplexType1.setAttribute("ref", "tns:std-String");
         mapValueComplexType1.setAttribute("minOccurs", "1");
@@ -1778,12 +1802,24 @@ public class ModelService extends Abstra
         mapValueComplexType25.setAttribute("maxOccurs", "1");
         mapValueComplexType0.appendChild(mapValueComplexType25);
         schema.appendChild(mapValueComplexType);
+        Element mapValueComplexType26 = document.createElement("xsd:element");
+        mapValueComplexType26.setAttribute("ref", "tns:std-BigDecimal");
+        mapValueComplexType26.setAttribute("minOccurs", "1");
+        mapValueComplexType26.setAttribute("maxOccurs", "1");
+        mapValueComplexType0.appendChild(mapValueComplexType26);
+        schema.appendChild(mapValueComplexType);
 
         /* col-Collection Complex Type */
         Element colCollectionComplexType = document.createElement("xsd:complexType");
         colCollectionComplexType.setAttribute("name", "col-Collection");
         Element colCollectionComplexType0 = document.createElement("xsd:choice");
         colCollectionComplexType.appendChild(colCollectionComplexType0);
+        Element colCollectionComplexTypeNull = document.createElement("xsd:element");
+        colCollectionComplexTypeNull.setAttribute("ref", "tns:null");
+        colCollectionComplexTypeNull.setAttribute("minOccurs", "0");
+        colCollectionComplexTypeNull.setAttribute("maxOccurs", "unbounded");
+        colCollectionComplexTypeNull.setAttribute("nillable", "true");
+        colCollectionComplexType0.appendChild(colCollectionComplexTypeNull);
         Element colCollectionComplexType1 = document.createElement("xsd:element");
         colCollectionComplexType1.setAttribute("ref", "tns:std-String");
         colCollectionComplexType1.setAttribute("minOccurs", "0");
@@ -1910,6 +1946,12 @@ public class ModelService extends Abstra
         colCollectionComplexType25.setAttribute("maxOccurs", "unbounded");
         colCollectionComplexType0.appendChild(colCollectionComplexType25);
         schema.appendChild(colCollectionComplexType);
+        Element colCollectionComplexType26 = document.createElement("xsd:element");
+        colCollectionComplexType26.setAttribute("ref", "tns:std-BigDecimal");
+        colCollectionComplexType26.setAttribute("minOccurs", "0");
+        colCollectionComplexType26.setAttribute("maxOccurs", "unbounded");
+        colCollectionComplexType0.appendChild(colCollectionComplexType26);
+        schema.appendChild(colCollectionComplexType);
 
         types.setDocumentationElement(schema);
         return types;