From: "Jacopo Cappellato" <jacopo.cappell...@hotwaxmedia.com>
Hi all,

this is part of my review of framework code to make it cleaner. I see a series 
of questionable changes in this commit, do you
agree?
Jacques, before I start my review please let me know if you want to do a first 
pass on it.

I can certainly have a fresh look, depends on timing though...
What did you saw at 1st glance which makes you want to improve, is it related 
to GeronimoMultiOfbizInstances?

Jacques

Thanks,

Jacopo

On Apr 9, 2008, at 3:51 PM, jler...@apache.org wrote:

Author: jleroux
Date: Wed Apr  9 06:51:39 2008
New Revision: 646349

URL: http://svn.apache.org/viewvc?rev=646349&view=rev
Log:
New version which automatically deploys in application server see 
http://docs.ofbiz.org/x/Ah for more informations
One base, one webapp, and the webtools web.xml files are slightly modified, 
nothing harmful anyway

Modified:
   ofbiz/trunk/framework/appserver/ofbiz-component.xml
   
ofbiz/trunk/framework/appserver/src/org/ofbiz/appservers/GenerateContainer.java
   
ofbiz/trunk/framework/appserver/src/org/ofbiz/appservers/GenerateGeronimoDeployment.java
   ofbiz/trunk/framework/appserver/templates/wasce2/README
   ofbiz/trunk/framework/appserver/templates/wasce2/application.xml
   ofbiz/trunk/framework/appserver/templates/wasce2/geronimo-application.xml
   
ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/string/FlexibleStringExpander.java
   ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java
   ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/web.xml

Modified: ofbiz/trunk/framework/appserver/ofbiz-component.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/appserver/ofbiz-component.xml?rev=646349&r1=646348&r2=646349&view=diff
==============================================================================
--- ofbiz/trunk/framework/appserver/ofbiz-component.xml (original)
+++ ofbiz/trunk/framework/appserver/ofbiz-component.xml Wed Apr  9 06:51:39 2008
@@ -23,4 +23,5 @@
        
xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-component.xsd";>
    <resource-loader name="main" type="component"/>
    <classpath type="jar" location="build/lib/*"/>
+    <classpath type="dir" location="config"/>
</ofbiz-component>

Modified: 
ofbiz/trunk/framework/appserver/src/org/ofbiz/appservers/GenerateContainer.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/appserver/src/org/ofbiz/appservers/GenerateContainer.java?rev=646349&r1=646348&r2=646349&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/appserver/src/org/ofbiz/appservers/GenerateContainer.java 
(original)
+++ 
ofbiz/trunk/framework/appserver/src/org/ofbiz/appservers/GenerateContainer.java 
Wed Apr  9 06:51:39 2008
@@ -19,23 +19,50 @@

package org.ofbiz.appservers;

-import java.util.Map;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.StringWriter;
+import java.io.Writer;
import java.util.List;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.io.*;
+import java.util.Map;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.TransformerFactoryConfigurationError;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;

import javolution.util.FastList;
import javolution.util.FastMap;

+import org.ofbiz.base.component.ComponentConfig;
+import org.ofbiz.base.component.ComponentConfig.WebappInfo;
import org.ofbiz.base.container.Container;
import org.ofbiz.base.container.ContainerException;
+import org.ofbiz.base.start.Classpath;
import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.UtilURL;
+import org.ofbiz.base.util.UtilProperties;
+import org.ofbiz.base.util.UtilValidate;
import org.ofbiz.base.util.template.FreeMarkerWorker;
-import org.ofbiz.base.start.Classpath;
-import org.ofbiz.base.component.ComponentConfig;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.xml.sax.SAXException;

/**
 * GenerateContainer - Generates Configuration Files For Application Servers
@@ -47,14 +74,15 @@

    public static final String module = GenerateContainer.class.getName();
    public static final String source = "/framework/appserver/templates/";
-    public static final String target = "/setup/";
-    private boolean isGeronimo = false;
-
+    public static String target = "/setup/";

    protected String configFile = null;
    protected String ofbizHome = null;
    protected String args[] = null;

+    private boolean isGeronimo = false;
+    private String geronimoHome = null;
+
    /**
     * @see org.ofbiz.base.container.Container#init(java.lang.String[], 
java.lang.String)
     */
@@ -63,6 +91,10 @@
        this.configFile = configFile;
        this.args = args;
        this.isGeronimo = args[0].toLowerCase().contains("geronimo") || 
args[0].toLowerCase().contains("wasce");
+        if (this.isGeronimo) {
+            this.target="/META-INF/";
+            this.geronimoHome = UtilProperties.getPropertyValue("appserver", 
"geronimoHome", null);
+        }
    }

    /**
@@ -86,30 +118,216 @@
    private void generateFiles() throws ContainerException {
        File files[] = getTemplates();
        Map<String, Object> dataMap = buildDataMap();
+
+        String user = UtilProperties.getPropertyValue("appserver", "user", 
"system");
+        String password = UtilProperties.getPropertyValue("appserver", "password", 
"manager");
+        boolean offline = UtilProperties.propertyValueEqualsIgnoreCase("appserver", 
"offline", "true");
+        boolean pauseInGeronimoScript = 
UtilProperties.propertyValueEqualsIgnoreCase("appserver", 
"pauseInGeronimoScript",
"true");
+        int instancesNumber = (int) UtilProperties.getPropertyNumber("appserver", 
"instancesNumber");
+        String instanceNumber = "";
+
        if (isGeronimo) {
-            String serverType = args[0];
-            String geronimoHome = null;
-            if (args.length > 2) {
-                geronimoHome = args[2];
-            }
-            GenerateGeronimoDeployment geronimoDeployment = new 
GenerateGeronimoDeployment();
-            List classpathJars = geronimoDeployment.generate(serverType, 
geronimoHome);
-            if (classpathJars == null) {
-                throw new ContainerException("Error in Geronimo deployment, please 
check the log");
+            if (geronimoHome == null) {
+                geronimoHome = System.getenv("GERONIMO_HOME");
+                if (geronimoHome == null) {
+                    Debug.logFatal("'GERONIMO_HOME' was not found in your 
environment. Please set the location of Geronimo into
a GERONIMO_HOME env var or pass it as geronimoHome property in setup.properties 
file.", module);
+                    throw new ContainerException("Error in Geronimo deployment, 
please check the log");
+                }
+                File geronimoHomeDir = new File (geronimoHome);
+                if (! (geronimoHomeDir.isDirectory())) {
+                    Debug.logFatal(geronimoHome + " does not exist or is not a 
directoy. Please set the location of Geronimo
into a GERONIMO_HOME env var or pass it as geronimoHome property in setup.properties 
file.", module);
+                    throw new ContainerException("Error in Geronimo deployment, 
please check the log");
+                }
            }
-            dataMap.put("classpathJars", classpathJars);
-        }

-        //Debug.log("Using Data : " + dataMap, module);
-        String applicationPrefix = "";
-        if (args.length > 3 && args[3].length() > 0) {
-            applicationPrefix = args[3] + "-";
-        }
-        dataMap.put("applicationPrefix", applicationPrefix);
-        dataMap.put("pathSeparatorChar", File.pathSeparatorChar);
-        for (File file: files) {
-            if (isGeronimo && !(file.isDirectory() || file.isHidden() || 
file.getName().equalsIgnoreCase("geronimo-web.xml"))) {
-                parseTemplate(file, dataMap);
+            for(int inst = 0; inst <= instancesNumber; inst++) {
+                instanceNumber = (inst == 0 ? "" : inst).toString();
+                GenerateGeronimoDeployment geronimoDeployment = new 
GenerateGeronimoDeployment();
+                List classpathJars = geronimoDeployment.generate(args[0], 
geronimoHome, instanceNumber);
+                if (classpathJars == null) {
+                    throw new ContainerException("Error in Geronimo deployment, 
please check the log");
+                }
+                dataMap.put("classpathJars", classpathJars);
+                dataMap.put("pathSeparatorChar", File.pathSeparatorChar);
+                dataMap.put("instanceNumber", instanceNumber);
+                //                if (UtilValidate.isNotEmpty(instanceNumber)) 
{
+                //                    List webApps = (List) 
dataMap.get("webApps");
+                //                    for (Object webAppObject: webApps) {
+                //                        WebappInfo webAppInfo = 
(ComponentConfig.WebappInfo) webAppObject;
+                //                        String webAppLocation = 
webAppInfo.getLocation();
+                //                        String webXmlLocation = webAppLocation + 
"/WEB-INF/web.xml";
+                //                        if 
(isFileExistsAndCanWrite(webXmlLocation)) {
+                //                            DocumentBuilderFactory 
docFactory = DocumentBuilderFactory.newInstance();
+                //                            DocumentBuilder docBuilder = 
null;
+                //                            try {
+                //                                docBuilder = 
docFactory.newDocumentBuilder();
+                //                            } catch 
(ParserConfigurationException e) {
+                //                                throw new 
ContainerException(e);
+                //                            }
+                //                            Document doc = null;
+                //                            try {
+                //                                doc = 
docBuilder.parse(webXmlLocation);
+                //                            } catch (SAXException e) {
+                //                                throw new 
ContainerException(e);
+                //                            } catch (IOException e) {
+                //                                throw new 
ContainerException(e);
+                //                            }
+                //                            Node webApp = 
doc.getFirstChild();
+                //                            Node contextParam = 
doc.createElement("context-param");
+                //                            NamedNodeMap 
contextParamAttributes = contextParam.getAttributes();
+                //
+                //                            Attr paramName = 
doc.createAttribute("param-name");
+                //                            
paramName.setValue("instanceNumber");
+                //                            
contextParamAttributes.setNamedItem(paramName);
+                //
+                //                            Attr paramValue = 
doc.createAttribute("param-value");
+                //                            
paramValue.setValue(instanceNumber);
+                //                            
contextParamAttributes.setNamedItem(paramValue);
+                //        //                    Node nodeToAppend = 
doc.importNode(contextParam, true); this should not be
needed
+                //        //                    
webApp.appendChild(nodeToAppend);
+                //
+                //        //                    
webApp.appendChild(contextParam); this is the line needed but commented for now
+                //
+                //                            Transformer transformer;
+                //                            try {
+                //                                transformer = 
TransformerFactory.newInstance().newTransformer();
+                //                            } catch 
(TransformerConfigurationException e) {
+                //                                throw new 
ContainerException(e);
+                //                            } catch 
(TransformerFactoryConfigurationError e) {
+                //                                throw new 
ContainerException(e);
+                //                            }
+                //                            
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+                //
+                //                            StreamResult result = new 
StreamResult(new StringWriter());
+                //                            DOMSource source = new 
DOMSource(doc);
+                //                            try {
+                //                                
transformer.transform(source, result);
+                //                            } catch (TransformerException e) 
{
+                //                                throw new 
ContainerException(e);
+                //                            }
+                //                            String xmlString = 
result.getWriter().toString();
+                //                            System.out.println(xmlString); 
//TODO write to file using writeToXmlFile
+                //                            break; // Only the 1st web.xml 
file need to be modified
+                //                        } else {
+                //                            Debug.logInfo("Unable to change the 
deployment descriptor : " + webXmlLocation +
". Maybe it does not exist, or is in read only mode ?", module);
+                //                        }
+                //                    }
+                //                }
+
+                //Debug.log("Using Data : " + dataMap, module);
+                for (int i = 0; i < files.length; i++) {
+                    if (!(files[i].isDirectory() || files[i].isHidden() ||
files[i].getName().equalsIgnoreCase("geronimo-web.xml"))) {
+                        parseTemplate(files[i], dataMap);
+                    }
+                }
+
+                String ofbizName = "ofbiz" + instanceNumber;
+                String separator = File.separator;
+                String geronimoBin = geronimoHome + separator + "bin";
+                File workingDir = new File(geronimoBin);
+                ProcessBuilder pb = null;
+                String command = null;
+
+                if ("\\".equals(separator)) { //Windows
+                    if (offline) {
+                        command = "deploy --user " + user +  " --password " +  password 
+ " --offline undeploy " + ofbizName;
+                    } else {
+                        command = "deploy --user " +  user +  " --password " +  password 
+ " undeploy " + ofbizName;
+                    }
+                    pb = new ProcessBuilder("cmd.exe", "/c", command);
+                } else {                        // Linux
+                    if (offline) {
+                        command = workingDir + "/deploy.sh --user " + user +  " 
--password " +  password + " --offline undeploy
" + ofbizName;
+                    } else {
+                        command = workingDir + "/deploy.sh --user " +  user +  " --password 
" +  password + " undeploy " +
ofbizName;
+                    }
+                    pb = new ProcessBuilder("sh", "-c", command);
+                }
+
+                if (pauseInGeronimoScript) {
+                    Map<String, String> env = pb.environment();
+                    env.put("GERONIMO_BATCH_PAUSE", "on");
+                }
+                pb.directory(workingDir);
+
+                try {
+                    System.out.println("Currently undeploying " + ofbizName + ", using : <<" + 
command + ">>, please wait ...");
+                    pb.redirectErrorStream(true);
+                    Process p = pb.start();
+                    java.io.InputStream is = p.getInputStream();
+                    byte[] buf = new byte[2024];
+                    int readLen = 0;
+                    while((readLen = is.read(buf,0,buf.length)) != -1) {
+                        if ("\\".equals(separator)) {   //Windows
+                            System.out.print(new String(buf,0,readLen));
+                        } else {
+                            System.out.println(new String(buf,0,readLen));
+                        }
+                    }
+                    is.close();
+                    p.waitFor();
+                    //                    System.out.println(p.waitFor());
+                    //                    System.out.println("exit value" + 
p.exitValue());
+                    Debug.logInfo(ofbizName + " undeployment ended" , module);
+                } catch (IOException e) {
+                    throw new ContainerException(e);
+                } catch (InterruptedException e) {
+                    throw new ContainerException(e);
+                }
+
+                if ("\\".equals(separator)) { //Windows
+                    if (offline) {
+                        command = "deploy --user " + user +  " --password " +  password 
+ " --offline deploy --inPlace " +
ofbizHome;
+                    } else {
+                        command = "deploy --user " + user +  " --password " +  password 
+ " deploy --inPlace " + ofbizHome;
+                    }
+                    pb = new ProcessBuilder("cmd.exe", "/c", command);
+                } else {                      // Linux
+                    if (offline) {
+                        command = workingDir + "/deploy.sh --user " + user +  " 
--password " +  password + " --offline
deploy --inPlace " + ofbizHome;
+                    } else {
+                        command = workingDir + "/deploy.sh --user " +  user +  " --password 
" +  password + " deploy --inPlace "
+ ofbizHome;
+                    }
+                    pb = new ProcessBuilder("sh", "-c", command);
+                }
+
+                if (pauseInGeronimoScript) {
+                    Map<String, String> env = pb.environment();
+                    env.put("GERONIMO_BATCH_PAUSE", "on");
+                }
+                pb.directory(workingDir);
+
+                try {
+                    System.out.println("Currently deploying " + ofbizName + ", using : <<" + 
command + ">>, please wait ...");
+                    pb.redirectErrorStream(true);
+                    Process p = pb.start();
+                    java.io.InputStream is = p.getInputStream();
+                    byte[] buf = new byte[2024];
+                    int readLen = 0;
+                    while((readLen = is.read(buf,0,buf.length)) != -1) {
+                        if ("\\".equals(separator)) {   //Windows
+                            System.out.print(new String(buf,0,readLen));
+                        } else {
+                            System.out.println(new String(buf,0,readLen));
+                        }
+                    }
+                    is.close();
+                    p.waitFor();
+                    //                    System.out.println(p.waitFor());
+                    //                    System.out.println("exit value" + 
p.exitValue());
+                    Debug.logInfo(ofbizName + " deployment ended" , module);
+                } catch (IOException e) {
+                    throw new ContainerException(e);
+                } catch (InterruptedException e) {
+                    throw new ContainerException(e);
+                }
+            }
+        } else {
+            //Debug.log("Using Data : " + dataMap, module);
+            for (int i = 0; i < files.length; i++) {
+                if (!files[i].isDirectory() && !files[i].isHidden()) {
+                    parseTemplate(files[i], dataMap);
+                }
            }
        }
    }
@@ -158,6 +376,7 @@
                }
            }
        }
+
        List[] lists = { jar, dir };
        return lists;
    }
@@ -213,5 +432,28 @@
        } catch (IOException e) {
            throw new ContainerException(e);
        }
+    }
+
+    // This method writes a DOM document to a file
+    public static void writeToXmlFile(Document doc, String filename) {
+        try {
+            // Prepare the DOM document for writing
+            Source source = new DOMSource(doc);
+
+            // Prepare the output file
+            File file = new File(filename);
+            Result result = new StreamResult(file);
+
+            // Write the DOM document to the file
+            Transformer xformer = 
TransformerFactory.newInstance().newTransformer();
+            xformer.transform(source, result);
+        } catch (TransformerConfigurationException e) {
+        } catch (TransformerException e) {
+        }
+    }
+
+    public boolean isFileExistsAndCanWrite(String fileName) {
+        File f = new File(fileName);
+        return f.exists() && f.canWrite();
    }
}

Modified: 
ofbiz/trunk/framework/appserver/src/org/ofbiz/appservers/GenerateGeronimoDeployment.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/appserver/src/org/ofbiz/appservers/GenerateGeronimoDeployment.java?rev=646349&r1=646348&r2=646349&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/appserver/src/org/ofbiz/appservers/GenerateGeronimoDeployment.java
 (original)
+++ 
ofbiz/trunk/framework/appserver/src/org/ofbiz/appservers/GenerateGeronimoDeployment.java
 Wed Apr  9 06:51:39 2008
@@ -52,18 +52,8 @@
    public static final String source = "/framework/appserver/templates/";

    protected  String geronimoRepository = null;
-    protected String geronimoHome = null;

-    @SuppressWarnings("unchecked")
-    public List<String> generate(String geronimoVersion, String geronimoHome) {
-        // Check environment for Geronimo Home
-        if (geronimoHome == null) {
-            geronimoHome = System.getenv("GERONIMO_HOME");
-            if (geronimoHome == null) {
-                Debug.logFatal("'GERONIMO_HOME' was not found in your 
environment. Please set the location of Geronimo into
GERONIMO_HOME.", module);
-                return null;
-            }
-        }
+    public List<String> generate(String geronimoVersion, String geronimoHome, 
String instanceNumber) {
        geronimoRepository = geronimoHome + "/repository";
        Debug.logInfo("The WASCE or Geronimo Repository is " + 
geronimoRepository, module);
        Classpath classPath = new 
Classpath(System.getProperty("java.class.path"));

Modified: ofbiz/trunk/framework/appserver/templates/wasce2/README
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/appserver/templates/wasce2/README?rev=646349&r1=646348&r2=646349&view=diff
==============================================================================
--- ofbiz/trunk/framework/appserver/templates/wasce2/README (original)
+++ ofbiz/trunk/framework/appserver/templates/wasce2/README Wed Apr  9 06:51:39 
2008
@@ -17,9 +17,10 @@
    under the License.
-->

-Websphere Application Server Community Edition 2 Setup - 2008-03-31 - Jacques 
Le Roux
+Websphere Application Server Community Edition (WASCE) 2
+or Geronimo 2.0.3 Setup - 2008-04-08 - Jacques Le Roux

-To use WASCE 2 with OFBiz 4.0 follow the following steps (all steps assume 
Orion is already installed and working)
+To use OFBiz with WASCE 2 or Geronimo 2.0.3 follow the following steps (all 
steps assume WASCE 2 or Geronimo 2.0.3  is already
installed and working)

=======================================================================================================================================================
    If you use WASCE, copy the 2 lines below in the setJavaOpts section 
(Windows) or somewhere in the setEnv script you will find
in GERONIMO_HOME/bin
@@ -33,13 +34,44 @@
    <#assign classpath = classpath + dir + pathSeparatorChar/>
</#list>
<#assign classpath = classpath?substring(0, classpath?length - 1)/>
+
+Windows
+-------
set JAVA_OPTS=-Dofbiz.home="${ofbizHome}" -Xms256M -Xmx512M 
-XX:MaxPermSize=128M -Duser.language=en
set CLASSPATH=${classpath}

+Linux
+-----
+Add this 2 lines after the
+    elif [ "$1" = "run" ]; then
+line
+  JAVA_OPTS="-Dofbiz.home="${ofbizHome}" -Xms256M -Xmx512M -XX:MaxPermSize=128M 
-Duser.language=en"
+  CLASSPATH="${classpath}"
+Don't forget to escape the inside quotes in ${ofbizHome}.
+
=======================================================================================================================================================
-    Change also this line of the geronimo script in the doneSetArgs section 
(Windows) or somewhere in the Geronimo script.
+    Change also this line of the geronimo script in the doneSetArgs section 
(Windows) or somewhere in the geronimo script
=======================================================================================================================================================
-
+Windows
+-------
%_EXECJAVA% %JAVA_OPTS% %GERONIMO_OPTS%
%JAVA_AGENT_OPTS% -Djava.ext.dirs="%GERONIMO_BASE%\lib\ext;%JRE_HOME%\lib\ext" 
-Djava.endorsed.dirs="%GERONIMO_BASE%\lib\endorsed;%JRE_HOME%\lib\endorsed"
 -Dorg.apache.geronimo.base.dir="%GERONIMO_BASE%" 
-Djava.io.tmpdir="%GERONIMO_TMPDIR%" -jar %_JARFILE% %_LONG_OPT%
%CMD_LINE_ARGS%
    to
%_EXECJAVA% %JAVA_OPTS% %GERONIMO_OPTS%
%JAVA_AGENT_OPTS% -Djava.ext.dirs="%GERONIMO_BASE%\lib\ext;%JRE_HOME%\lib\ext" 
-Djava.endorsed.dirs="%GERONIMO_BASE%\lib\endorsed;%JRE_HOME%\lib\endorsed"
 -Dorg.apache.geronimo.base.dir="%GERONIMO_BASE%" 
-Djava.io.tmpdir="%GERONIMO_TMPDIR%" -cp .;%_JARFILE%;%CLASSPATH% %_LONG_OPT%
%CMD_LINE_ARGS% %MAINCLASS%
+
+Linux
+-----
+In the <<elif [ "$1" = "run" ]>> block
+Replace the line
+    -jar "$GERONIMO_HOME"/bin/server.jar $LONG_OPT "$@"
+by
+    -classpath ".":"$GERONIMO_HOME"/bin/server.jar:"$CLASSPATH" 
org.apache.geronimo.cli.daemon.DaemonCLI $LONG_OPT "$@"
+
+=======================================================================================================================================================
+    Windows only
+    ------------
+    If you want to use OFBiz multi-instances in Geronimo or WASCE using you might put 
"exit" as last line in the deploy script.
+    Else, of course you may also type exit by hand....
+
+    Alternatively you may not put exit at the end of the deploy script,
+    choose to not have pause in script and type "exit" yourself in the command 
windows (actually I found later that it's an
easier way)
+=======================================================================================================================================================

Modified: ofbiz/trunk/framework/appserver/templates/wasce2/application.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/appserver/templates/wasce2/application.xml?rev=646349&r1=646348&r2=646349&view=diff
==============================================================================
--- ofbiz/trunk/framework/appserver/templates/wasce2/application.xml (original)
+++ ofbiz/trunk/framework/appserver/templates/wasce2/application.xml Wed Apr  9 
06:51:39 2008
@@ -29,36 +29,31 @@
  id="Application_ID"
  version="5">

-  <description>The Apache OFBiz Project</description>
-  <display-name>OFBiz</display-name>
+  <description>The Apache OFBiz Project  this is instance 
${instanceNumber}</description>
+  <display-name>OFBiz instance ${instanceNumber}</display-name>

  <#list webApps as webapp>
    <#assign location = webapp.getLocation()?if_exists/>
-    <#if location.contains("framework") && (location.contains("webtools") || 
location.contains("images"))
-      || location.contains("applications")
-      || location.contains("specialpurpose")
-      || location.contains("hot-deploy")>
-      <#if location.contains("framework") && (location.contains("webtools") || 
location.contains("images"))>
+    <#assign origin = webapp.getLocation()?if_exists/>
+      <#if location.contains("/framework/") && (location.contains("/webtools/") || 
location.contains("/images/"))>
        <#assign location = 
location.substring(location.lastIndexOf("framework"))/>
      </#if>
-      <#if location.contains("applications")>
+    <#if location.contains("/applications/")>
        <#assign location = 
location.substring(location.lastIndexOf("applications"))/>
      </#if>
-      <#if location.contains("specialpurpose")>
+    <#if location.contains("/specialpurpose/")>
        <#assign location = 
location.substring(location.lastIndexOf("specialpurpose"))/>
      </#if>
-      <#if location.contains("hot-deploy") && !location.contains("images")>
+      <#if location.contains("/hot-deploy/")>
        <#assign location = 
location.substring(location.lastIndexOf("hot-deploy"))/>
      </#if>
-      <#if !(location.contains("neogia") && location.contains("shipment"))
-        && !(location.contains("hot-deploy") && location.contains("images"))>
-  <module id="${applicationPrefix}${webapp.getName()}">
+    <#if location != origin>
+  <module id="${webapp.getName()}${instanceNumber}">
    <web>
      <web-uri>${location}/</web-uri>
-      <context-root>${webapp.getContextRoot()}</context-root>
+      <context-root>${webapp.getContextRoot()}${instanceNumber}</context-root>
    </web>
  </module>
-      </#if>
    </#if>
  </#list>
</application>

Modified: 
ofbiz/trunk/framework/appserver/templates/wasce2/geronimo-application.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/appserver/templates/wasce2/geronimo-application.xml?rev=646349&r1=646348&r2=646349&view=diff
==============================================================================
--- ofbiz/trunk/framework/appserver/templates/wasce2/geronimo-application.xml 
(original)
+++ ofbiz/trunk/framework/appserver/templates/wasce2/geronimo-application.xml 
Wed Apr  9 06:51:39 2008
@@ -28,7 +28,7 @@
    <dep:environment>
        <dep:moduleId>
            <dep:groupId>org.ofbiz</dep:groupId>
-            <dep:artifactId>${applicationPrefix}ofbiz</dep:artifactId>
+            <dep:artifactId>ofbiz${instanceNumber}</dep:artifactId>
            <dep:version>1.0</dep:version>
            <dep:type>ear</dep:type>
        </dep:moduleId>
@@ -51,31 +51,26 @@

    <#list webApps as webapp>
        <#assign location = webapp.getLocation()?if_exists/>
-        <#if location.contains("framework") && (location.contains("webtools") || 
location.contains("images"))
-            || location.contains("applications")
-            || location.contains("specialpurpose")
-            || location.contains("hot-deploy")>
-            <#if location.contains("framework") && (location.contains("webtools") || 
location.contains("images"))>
+        <#assign origin = webapp.getLocation()?if_exists/>
+        <#if location.contains("/framework/") && (location.contains("/webtools/") || 
location.contains("/images/"))>
                <#assign location = 
location.substring(location.lastIndexOf("framework"))/>
-            </#if>
-            <#if location.contains("applications")>
-                <#assign location = 
location.substring(location.lastIndexOf("applications"))/>
-            </#if>
-            <#if location.contains("specialpurpose")>
-                <#assign location = 
location.substring(location.lastIndexOf("specialpurpose"))/>
-            </#if>
-            <#if location.contains("hot-deploy") && 
!location.contains("images")>
-                <#assign location = 
location.substring(location.lastIndexOf("hot-deploy"))/>
-            </#if>
-            <#if !(location.contains("neogia") && 
location.contains("shipment"))
-                && !(location.contains("hot-deploy") && 
location.contains("images"))>
+        </#if>
+        <#if location.contains("/applications/")>
+            <#assign location = 
location.substring(location.lastIndexOf("applications"))/>
+        </#if>
+        <#if location.contains("/specialpurpose/")>
+            <#assign location = 
location.substring(location.lastIndexOf("specialpurpose"))/>
+        </#if>
+        <#if location.contains("/hot-deploy/")>
+            <#assign location = 
location.substring(location.lastIndexOf("hot-deploy"))/>
+        </#if>
+        <#if location != origin>
    <module>
        <web>${location}/</web>
        <web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.2";>
-            <context-root>${webapp.getContextRoot()}</context-root>
+            
<context-root>${webapp.getContextRoot()}${instanceNumber}</context-root>
        </web-app>
    </module>
-            </#if>
        </#if>
    </#list>


Modified: 
ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/string/FlexibleStringExpander.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/string/FlexibleStringExpander.java?rev=646349&r1=646348&r2=646349&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/string/FlexibleStringExpander.java
 (original)
+++ 
ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/string/FlexibleStringExpander.java
 Wed Apr  9 06:51:39 2008
@@ -30,6 +30,7 @@
import org.ofbiz.base.util.BshUtil;
import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.UtilDateTime;
+import org.ofbiz.base.util.UtilValidate;
import org.ofbiz.base.util.collections.FlexibleMapAccessor;
import org.ofbiz.base.util.UtilFormatOut;
import org.ofbiz.base.util.UtilMisc;
@@ -395,6 +396,11 @@
                    targetBuffer.append(UtilFormatOut.formatCurrency(new 
Double(envVal.toString()), currencyCode, locale));
                } else {
                    targetBuffer.append(envVal.toString());
+                }
+            } else if (envName.equals("ofbiz.home")) { // This is only used in 
case of Geronimo or WASCE using OFBiz
multi-instances. It allows to retrieve ofbiz.home value set in JVM env
+                String ofbizHome = System.getProperty("ofbiz.home");
+                if (UtilValidate.isNotEmpty(ofbizHome)) {
+                    targetBuffer.append(ofbizHome);
                }
            } else {
                Debug.logWarning("Could not find value in environment for the name [" + 
envName + "], inserting nothing.",
module);

Modified: 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java?rev=646349&r1=646348&r2=646349&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java 
(original)
+++ 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java 
Wed Apr  9 06:51:39 2008
@@ -346,6 +346,15 @@
            if (Debug.infoOn()) Debug.logInfo("Adding web.xml context-param to 
application attribute with name [" + initParamName
+ "] and value [" + initParamValue + "]", module);
            config.getServletContext().setAttribute(initParamName, 
initParamValue);
        }
+        String GeronimoMultiOfbizInstances = (String) 
config.getServletContext().getAttribute("GeronimoMultiOfbizInstances");
+        if (UtilValidate.isNotEmpty(GeronimoMultiOfbizInstances)) {
+            String ofbizHome = System.getProperty("ofbiz.home");
+            if (GeronimoMultiOfbizInstances.equalsIgnoreCase("true") && 
UtilValidate.isEmpty(ofbizHome)) {
+                ofbizHome = System.getProperty("ofbiz.home"); // This is only 
used in case of Geronimo or WASCE using OFBiz
multi-instances. It allows to retrieve ofbiz.home value set in JVM env
+                System.out.println("Set OFBIZ_HOME to - " + ofbizHome);
+                System.setProperty("ofbiz.home", ofbizHome);
+            }
+        }
    }

    protected String getServerId() {

Modified: ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/web.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/web.xml?rev=646349&r1=646348&r2=646349&view=diff
==============================================================================
--- ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/web.xml (original)
+++ ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/web.xml Wed Apr  9 
06:51:39 2008
@@ -149,4 +149,11 @@
    </user-data-constraint>
  </security-constraint>
-->
+
+  <context-param>
+    <param-name>GeronimoMultiOfbizInstances</param-name>
+    <param-value>true</param-value>
+    <description>This is only used in case of Geronimo or WASCE using OFBiz 
multi-instances. It allows to retrieve ofbiz.home
value set in JVM env</description>
+  </context-param>
+
</web-app>




Reply via email to