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

svn commit: r1153560 [9/15] - in /ofbiz/branches/jackrabbit20100709: ./ applications/accounting/config/ applications/accounting/data/ applications/accounting/entitydef/ applications/accounting/script/org/ofbiz/accounting/invoice/ applications/accountin...

Modified: ofbiz/branches/jackrabbit20100709/build.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/build.xml?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/build.xml (original)
+++ ofbiz/branches/jackrabbit20100709/build.xml Wed Aug  3 16:12:58 2011
@@ -75,6 +75,7 @@ under the License.
         <antcall target="clean-catalina"/>
         <antcall target="clean-cache"/>
         <antcall target="clean-tempfiles"/>
+        <antcall target="clean-downloads"/>
         <antcall target="clean"/>
     </target>
 
@@ -679,8 +680,8 @@ under the License.
             <jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8091"/>
         </java>
     </target>
-    <target name="run-tests" depends="download-cobertura, build"
-          description="Run OFBiz default tests, execute ant run-install before and see results in runtime/logs/test-results/html/all-tests.html. You will need a valid Internet connection to download cobertura">
+    <target name="run-tests" depends="build"
+          description="Run OFBiz default tests, execute ant run-install before and see results in runtime/logs/test-results/html/all-tests.html.">
         <java jar="ofbiz.jar" fork="true" resultproperty="test.result">
             <jvmarg value="${memory.initial.param}"/>
             <jvmarg value="${memory.max.param}"/>
@@ -704,6 +705,9 @@ under the License.
         </fail>
     </target>
 
+   <target name="run-tests-with-cobertura" depends="download-cobertura, run-tests"
+        description="Same as run-tests but downloads cobertura and performs code coverage. You will need a valid Internet connection to download cobertura"/>
+
     <target name="_check-separated-tests-already-setup">
         <available file="runtime/test-list-build.xml" property="_separated-tests-already-setup"/>
     </target>
@@ -718,7 +722,7 @@ under the License.
             <env key="LC_ALL" value="C"/>
         </java>
     </target>
-    <target name="run-single-test" depends="download-cobertura, build"
+    <target name="run-single-test" depends="build"
           description="Run a single test, syntax eg: ant run-single-test -Dtest.component=service -Dtest.case=service-soap-tests">
         <java jar="ofbiz.jar" fork="true" resultproperty="test.result">
             <jvmarg value="${memory.initial.param}"/>
@@ -742,7 +746,7 @@ under the License.
             </condition>
         </fail>
     </target>
-    <target name="run-single-test-suite" depends="download-cobertura, build"
+    <target name="run-single-test-suite" depends="build"
             description="Run a single test suite, syntax eg: ant run-single-test-suite -Dtest.component=mycomponent -Dtest.suiteName=mytests">
         <java jar="ofbiz.jar" fork="true" resultproperty="test.result">
             <jvmarg value="${memory.initial.param}"/>
@@ -974,6 +978,8 @@ under the License.
         <mkdir dir="${basedir}/hot-deploy/${component-name}/entitydef"/>
         <mkdir dir="${basedir}/hot-deploy/${component-name}/lib"/>
         <mkdir dir="${basedir}/hot-deploy/${component-name}/patches"/>
+        <mkdir dir="${basedir}/hot-deploy/${component-name}/patches/staging"/>
+        <mkdir dir="${basedir}/hot-deploy/${component-name}/patches/production"/>
         <mkdir dir="${basedir}/hot-deploy/${component-name}/script"/>
         <mkdir dir="${basedir}/hot-deploy/${component-name}/servicedef"/>
         <mkdir dir="${basedir}/hot-deploy/${component-name}/src"/>

Modified: ofbiz/branches/jackrabbit20100709/framework/base/config/log4j.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/base/config/log4j.xml?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/base/config/log4j.xml (original)
+++ ofbiz/branches/jackrabbit20100709/framework/base/config/log4j.xml Wed Aug  3 16:12:58 2011
@@ -153,6 +153,18 @@
         <priority value="warn"/>
     </category>
 
+    <category name="org.apache.coyote">
+        <priority value="warn"/>
+    </category>
+
+    <category name="org.apache.jasper">
+        <priority value="warn"/>
+    </category>
+
+    <category name="org.apache.jk">
+        <priority value="warn"/>
+    </category>
+
     <!-- log4j category -->
     <category name="org.apache.log4j">
         <priority value="warn"/>

Modified: ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/concurrent/ExecutionPool.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/concurrent/ExecutionPool.java?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/concurrent/ExecutionPool.java (original)
+++ ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/concurrent/ExecutionPool.java Wed Aug  3 16:12:58 2011
@@ -19,28 +19,40 @@
 package org.ofbiz.base.concurrent;
 
 import java.lang.management.ManagementFactory;
+import java.util.Collection;
 import java.util.Iterator;
+import java.util.List;
 import java.util.concurrent.Delayed;
 import java.util.concurrent.DelayQueue;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledThreadPoolExecutor;
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.TimeUnit;
 
+import javolution.util.FastList;
+
 import org.ofbiz.base.lang.SourceMonitored;
+import org.ofbiz.base.util.Debug;
 
 @SourceMonitored
 public final class ExecutionPool {
+    public static final String module = ExecutionPool.class.getName();
+    public static final ScheduledExecutorService GLOBAL_EXECUTOR = getExecutor(null, "ofbiz-config", -1, true);
+
     protected static class ExecutionPoolThreadFactory implements ThreadFactory {
+        private final ThreadGroup group;
         private final String namePrefix;
         private int count = 0;
 
-        protected ExecutionPoolThreadFactory(String namePrefix) {
+        protected ExecutionPoolThreadFactory(ThreadGroup group, String namePrefix) {
+            this.group = group;
             this.namePrefix = namePrefix;
         }
 
         public Thread newThread(Runnable r) {
-            Thread t = new Thread(r);
+            Thread t = new Thread(group, r);
             t.setDaemon(true);
             t.setPriority(Thread.NORM_PRIORITY);
             t.setName(namePrefix + "-" + count++);
@@ -48,23 +60,57 @@ public final class ExecutionPool {
         }
     }
 
+    @Deprecated
     public static ThreadFactory createThreadFactory(String namePrefix) {
-        return new ExecutionPoolThreadFactory(namePrefix);
+        return createThreadFactory(null, namePrefix);
+    }
+
+    public static ThreadFactory createThreadFactory(ThreadGroup group, String namePrefix) {
+        return new ExecutionPoolThreadFactory(group, namePrefix);
     }
 
+    @Deprecated
     public static ScheduledExecutorService getExecutor(String namePrefix, int threadCount) {
-        ExecutionPoolThreadFactory threadFactory = new ExecutionPoolThreadFactory(namePrefix);
+        return getExecutor(null, namePrefix, threadCount, true);
+    }
+
+    public static ScheduledExecutorService getExecutor(ThreadGroup group, String namePrefix, int threadCount, boolean preStart) {
+        if (threadCount == 0) {
+            threadCount = 1;
+        } else if (threadCount < 0) {
+            int numCpus = ManagementFactory.getOperatingSystemMXBean().getAvailableProcessors();
+            threadCount = Math.abs(threadCount) * numCpus;
+        }
+        ThreadFactory threadFactory = createThreadFactory(group, namePrefix);
         ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(threadCount, threadFactory);
-        executor.prestartAllCoreThreads();
+        if (preStart) {
+            executor.prestartAllCoreThreads();
+        }
         return executor;
     }
 
+    @Deprecated
     public static ScheduledExecutorService getNewExactExecutor(String namePrefix) {
-        return getExecutor(namePrefix, ManagementFactory.getOperatingSystemMXBean().getAvailableProcessors());
+        return getExecutor(null, namePrefix, -1, true);
     }
 
+    @Deprecated
     public static ScheduledExecutorService getNewOptimalExecutor(String namePrefix) {
-        return getExecutor(namePrefix, ManagementFactory.getOperatingSystemMXBean().getAvailableProcessors() * 2);
+        return getExecutor(null, namePrefix, -2, true);
+    }
+
+    public static <F> List<F> getAllFutures(Collection<Future<F>> futureList) {
+        List<F> result = FastList.newInstance();
+        for (Future<F> future: futureList) {
+            try {
+                result.add(future.get());
+            } catch (ExecutionException e) {
+                Debug.logError(e, module);
+            } catch (InterruptedException e) {
+                Debug.logError(e, module);
+            }
+        }
+        return result;
     }
 
     public static void addPulse(Pulse pulse) {

Modified: ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/concurrent/TTLObject.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/concurrent/TTLObject.java?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/concurrent/TTLObject.java (original)
+++ ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/concurrent/TTLObject.java Wed Aug  3 16:12:58 2011
@@ -33,7 +33,7 @@ import org.ofbiz.base.util.UtilGenerics;
 
 @SourceMonitored
 public abstract class TTLObject<T> implements ObjectWrapper<T> {
-    private static final ScheduledExecutorService updateExecutor = ExecutionPool.getNewOptimalExecutor("TTLObject(async-update)");
+    private static final ScheduledExecutorService updateExecutor = ExecutionPool.getExecutor(new ThreadGroup("TTLObject"), "TTLObject(async-update)", -2, true);
 
     private static final <T> T getConfigForClass(ConcurrentHashMap<String, T> config, Class<?> c) {
         Class<?> ptr = c;
@@ -82,6 +82,8 @@ public abstract class TTLObject<T> imple
     }
 
     public enum State { INVALID, REGEN, REGENERATING, GENERATE, GENERATING, GENERATING_INITIAL, VALID, ERROR, ERROR_INITIAL, SET }
+    // DO NOT REMOVE THIS VARIABLE: to dumb smart editors it looks unused; it's actually only referenced thru the field updater.
+    private volatile ValueAndState<T>  object = new StandardValueAndState<T>(this, null, null, State.INVALID, 0, null, null);
     @SuppressWarnings("unchecked")
     private static final AtomicReferenceFieldUpdater<TTLObject<?>, ValueAndState> objectAccessor = UtilGenerics.cast(AtomicReferenceFieldUpdater.newUpdater(TTLObject.class, ValueAndState.class, "object"));
     private static final AtomicIntegerFieldUpdater<TTLObject<?>> serialAccessor = UtilGenerics.cast(AtomicIntegerFieldUpdater.newUpdater(TTLObject.class, "serial"));

Modified: ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/concurrent/test/DependencyPoolTests.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/concurrent/test/DependencyPoolTests.java?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/concurrent/test/DependencyPoolTests.java (original)
+++ ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/concurrent/test/DependencyPoolTests.java Wed Aug  3 16:12:58 2011
@@ -36,7 +36,7 @@ public class DependencyPoolTests extends
 
     public void testDependencyPool() throws Exception {
         // always use more threads than cpus, so that the single-cpu case can be tested
-        ScheduledExecutorService executor = ExecutionPool.getNewOptimalExecutor(getName());
+        ScheduledExecutorService executor = ExecutionPool.getExecutor(new ThreadGroup("DependencyPoolTests"), getName(), -2, true);
         DependencyPool<Integer, TestItem, String> pool = new DependencyPool<Integer, TestItem, String>(executor);
         int itemSize = 100, depMax = 5, subMax = 3;
         List<TestItem> items = new ArrayList<TestItem>(itemSize);

Modified: ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/concurrent/test/TTLObjectTest.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/concurrent/test/TTLObjectTest.java?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/concurrent/test/TTLObjectTest.java (original)
+++ ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/concurrent/test/TTLObjectTest.java Wed Aug  3 16:12:58 2011
@@ -53,7 +53,7 @@ public abstract class TTLObjectTest exte
 
     @Override
     protected void setUp() throws InterruptedException {
-        executor = ExecutionPool.getNewExactExecutor(getName());
+        executor = ExecutionPool.getExecutor(new ThreadGroup("TTLObjectTest"), getName(), -1, true);
     }
 
     @Override

Modified: ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/util/Debug.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/util/Debug.java?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/util/Debug.java (original)
+++ ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/util/Debug.java Wed Aug  3 16:12:58 2011
@@ -23,6 +23,7 @@ import java.io.PrintStream;
 import java.io.PrintWriter;
 import java.text.DateFormat;
 import java.util.Enumeration;
+import java.util.Formatter;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -42,6 +43,7 @@ public final class Debug {
 
     public static final boolean useLog4J = true;
     public static final String noModuleModule = "NoModule";  // set to null for previous behavior
+    public static final Object[] emptyParams = new Object[0];
 
     static DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM);
 
@@ -146,11 +148,25 @@ public final class Debug {
     }
 
     public static void log(int level, Throwable t, String msg, String module) {
-        log(level, t, msg, module, "org.ofbiz.base.util.Debug");
+        log(level, t, msg, module, "org.ofbiz.base.util.Debug", emptyParams);
+    }
+
+    public static void log(int level, Throwable t, String msg, String module, Object... params) {
+        log(level, t, msg, module, "org.ofbiz.base.util.Debug", params);
     }
 
     public static void log(int level, Throwable t, String msg, String module, String callingClass) {
+        log(level, t, msg, module, callingClass, new Object[0]);
+    }
+
+    public static void log(int level, Throwable t, String msg, String module, String callingClass, Object... params) {
         if (isOn(level)) {
+            if (msg != null && params.length > 0) {
+                StringBuilder sb = new StringBuilder();
+                Formatter formatter = new Formatter(sb);
+                formatter.format(msg, params);
+                msg = sb.toString();
+            }
             // pack the exception
             if (packException && t != null) {
                 msg = System.getProperty("line.separator") + ExceptionHelper.packException(msg, t, true);
@@ -199,23 +215,35 @@ public final class Debug {
 
     // leaving these here
     public static void log(String msg) {
-        log(Debug.ALWAYS, null, msg, noModuleModule);
+        log(Debug.ALWAYS, null, msg, noModuleModule, emptyParams);
     }
+
+    public static void log(String msg, Object... params) {
+        log(Debug.ALWAYS, null, msg, noModuleModule, params);
+    }
+
     public static void log(Throwable t) {
-        log(Debug.ALWAYS, t, null, noModuleModule);
+        log(Debug.ALWAYS, t, null, noModuleModule, emptyParams);
     }
 
     public static void log(String msg, String module) {
-        log(Debug.ALWAYS, null, msg, module);
+        log(Debug.ALWAYS, null, msg, module, emptyParams);
     }
 
+    public static void log(String msg, String module, Object... params) {
+        log(Debug.ALWAYS, null, msg, module, params);
+    }
 
     public static void log(Throwable t, String module) {
-        log(Debug.ALWAYS, t, null, module);
+        log(Debug.ALWAYS, t, null, module, emptyParams);
     }
 
     public static void log(Throwable t, String msg, String module) {
-        log(Debug.ALWAYS, t, msg, module);
+        log(Debug.ALWAYS, t, msg, module, emptyParams);
+    }
+
+    public static void log(Throwable t, String msg, String module, Object... params) {
+        log(Debug.ALWAYS, t, msg, module, params);
     }
 
     public static boolean verboseOn() {
@@ -223,15 +251,23 @@ public final class Debug {
     }
 
     public static void logVerbose(String msg, String module) {
-        log(Debug.VERBOSE, null, msg, module);
+        log(Debug.VERBOSE, null, msg, module, emptyParams);
+    }
+
+    public static void logVerbose(String msg, String module, Object... params) {
+        log(Debug.VERBOSE, null, msg, module, params);
     }
 
     public static void logVerbose(Throwable t, String module) {
-        log(Debug.VERBOSE, t, null, module);
+        log(Debug.VERBOSE, t, null, module, emptyParams);
     }
 
     public static void logVerbose(Throwable t, String msg, String module) {
-        log(Debug.VERBOSE, t, msg, module);
+        log(Debug.VERBOSE, t, msg, module, emptyParams);
+    }
+
+    public static void logVerbose(Throwable t, String msg, String module, Object... params) {
+        log(Debug.VERBOSE, t, msg, module, params);
     }
 
     public static boolean timingOn() {
@@ -239,15 +275,23 @@ public final class Debug {
     }
 
     public static void logTiming(String msg, String module) {
-        log(Debug.TIMING, null, msg, module);
+        log(Debug.TIMING, null, msg, module, emptyParams);
+    }
+
+    public static void logTiming(String msg, String module, Object... params) {
+        log(Debug.TIMING, null, msg, module, params);
     }
 
     public static void logTiming(Throwable t, String module) {
-        log(Debug.TIMING, t, null, module);
+        log(Debug.TIMING, t, null, module, emptyParams);
     }
 
     public static void logTiming(Throwable t, String msg, String module) {
-        log(Debug.TIMING, t, msg, module);
+        log(Debug.TIMING, t, msg, module, emptyParams);
+    }
+
+    public static void logTiming(Throwable t, String msg, String module, Object... params) {
+        log(Debug.TIMING, t, msg, module, params);
     }
 
     public static boolean infoOn() {
@@ -255,15 +299,23 @@ public final class Debug {
     }
 
     public static void logInfo(String msg, String module) {
-        log(Debug.INFO, null, msg, module);
+        log(Debug.INFO, null, msg, module, emptyParams);
+    }
+
+    public static void logInfo(String msg, String module, Object... params) {
+        log(Debug.INFO, null, msg, module, params);
     }
 
     public static void logInfo(Throwable t, String module) {
-        log(Debug.INFO, t, null, module);
+        log(Debug.INFO, t, null, module, emptyParams);
     }
 
     public static void logInfo(Throwable t, String msg, String module) {
-        log(Debug.INFO, t, msg, module);
+        log(Debug.INFO, t, msg, module, emptyParams);
+    }
+
+    public static void logInfo(Throwable t, String msg, String module, Object... params) {
+        log(Debug.INFO, t, msg, module, params);
     }
 
     public static boolean importantOn() {
@@ -271,15 +323,23 @@ public final class Debug {
     }
 
     public static void logImportant(String msg, String module) {
-        log(Debug.IMPORTANT, null, msg, module);
+        log(Debug.IMPORTANT, null, msg, module, emptyParams);
+    }
+
+    public static void logImportant(String msg, String module, Object... params) {
+        log(Debug.IMPORTANT, null, msg, module, params);
     }
 
     public static void logImportant(Throwable t, String module) {
-        log(Debug.IMPORTANT, t, null, module);
+        log(Debug.IMPORTANT, t, null, module, emptyParams);
     }
 
     public static void logImportant(Throwable t, String msg, String module) {
-        log(Debug.IMPORTANT, t, msg, module);
+        log(Debug.IMPORTANT, t, msg, module, emptyParams);
+    }
+
+    public static void logImportant(Throwable t, String msg, String module, Object... params) {
+        log(Debug.IMPORTANT, t, msg, module, params);
     }
 
     public static boolean warningOn() {
@@ -287,15 +347,23 @@ public final class Debug {
     }
 
     public static void logWarning(String msg, String module) {
-        log(Debug.WARNING, null, msg, module);
+        log(Debug.WARNING, null, msg, module, emptyParams);
+    }
+
+    public static void logWarning(String msg, String module, Object... params) {
+        log(Debug.WARNING, null, msg, module, params);
     }
 
     public static void logWarning(Throwable t, String module) {
-        log(Debug.WARNING, t, null, module);
+        log(Debug.WARNING, t, null, module, emptyParams);
     }
 
     public static void logWarning(Throwable t, String msg, String module) {
-        log(Debug.WARNING, t, msg, module);
+        log(Debug.WARNING, t, msg, module, emptyParams);
+    }
+
+    public static void logWarning(Throwable t, String msg, String module, Object... params) {
+        log(Debug.WARNING, t, msg, module, params);
     }
 
     public static boolean errorOn() {
@@ -303,15 +371,23 @@ public final class Debug {
     }
 
     public static void logError(String msg, String module) {
-        log(Debug.ERROR, null, msg, module);
+        log(Debug.ERROR, null, msg, module, emptyParams);
+    }
+
+    public static void logError(String msg, String module, Object... params) {
+        log(Debug.ERROR, null, msg, module, params);
     }
 
     public static void logError(Throwable t, String module) {
-        log(Debug.ERROR, t, null, module);
+        log(Debug.ERROR, t, null, module, emptyParams);
     }
 
     public static void logError(Throwable t, String msg, String module) {
-        log(Debug.ERROR, t, msg, module);
+        log(Debug.ERROR, t, msg, module, emptyParams);
+    }
+
+    public static void logError(Throwable t, String msg, String module, Object... params) {
+        log(Debug.ERROR, t, msg, module, params);
     }
 
     public static boolean fatalOn() {
@@ -319,27 +395,43 @@ public final class Debug {
     }
 
     public static void logFatal(String msg, String module) {
-        log(Debug.FATAL, null, msg, module);
+        log(Debug.FATAL, null, msg, module, emptyParams);
+    }
+
+    public static void logFatal(String msg, String module, Object... params) {
+        log(Debug.FATAL, null, msg, module, params);
     }
 
     public static void logFatal(Throwable t, String module) {
-        log(Debug.FATAL, t, null, module);
+        log(Debug.FATAL, t, null, module, emptyParams);
     }
 
     public static void logFatal(Throwable t, String msg, String module) {
-        log(Debug.FATAL, t, msg, module);
+        log(Debug.FATAL, t, msg, module, emptyParams);
+    }
+
+    public static void logFatal(Throwable t, String msg, String module, Object... params) {
+        log(Debug.FATAL, t, msg, module, params);
     }
 
     public static void logNotify(String msg, String module) {
-        log(Debug.NOTIFY, null, msg, module);
+        log(Debug.NOTIFY, null, msg, module, emptyParams);
+    }
+
+    public static void logNotify(String msg, String module, Object... params) {
+        log(Debug.NOTIFY, null, msg, module, params);
     }
 
     public static void logNotify(Throwable t, String module) {
-        log(Debug.NOTIFY, t, null, module);
+        log(Debug.NOTIFY, t, null, module, emptyParams);
     }
 
     public static void logNotify(Throwable t, String msg, String module) {
-        log(Debug.NOTIFY, t, msg, module);
+        log(Debug.NOTIFY, t, msg, module, emptyParams);
+    }
+
+    public static void logNotify(Throwable t, String msg, String module, Object... params) {
+        log(Debug.NOTIFY, t, msg, module, params);
     }
 
     public static void set(int level, boolean on) {

Modified: ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/util/HttpClient.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/util/HttpClient.java?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/util/HttpClient.java (original)
+++ ofbiz/branches/jackrabbit20100709/framework/base/src/org/ofbiz/base/util/HttpClient.java Wed Aug  3 16:12:58 2011
@@ -19,10 +19,10 @@
 package org.ofbiz.base.util;
 
 import java.io.BufferedReader;
-import java.io.DataOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.net.URLConnection;
@@ -48,6 +48,7 @@ public class HttpClient {
     private boolean keepAlive = false;
 
     private String contentType = null;
+    private String streamCharset = null;
     private String url = null;
     private String rawStream = null;
     private String clientCertAlias = null;
@@ -182,6 +183,16 @@ public class HttpClient {
     public String getContentType() {
         return this.contentType;
     }
+    
+    /** Sets the scream charset */
+    public void setStreamCharset(String streamCharset) {
+        this.streamCharset = streamCharset;
+    }
+    
+    /** Returns the stream charset */
+    public String getStreamCharset() {
+        return this.streamCharset;
+    }
 
     /** Toggle keep-alive setting */
     public void setKeepAlive(boolean keepAlive) {
@@ -464,11 +475,11 @@ public class HttpClient {
             }
 
             if (method.equalsIgnoreCase("post")) {
-                DataOutputStream out = new DataOutputStream(con.getOutputStream());
+                OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream(), this.streamCharset != null ? this.streamCharset : "UTF-8");
                 if (Debug.verboseOn() || debug) Debug.log("Opened output stream", module);
 
                 if (arguments != null) {
-                    out.writeBytes(arguments);
+                    out.write(arguments);
                     if (Debug.verboseOn() || debug) Debug.log("Wrote arguements (parameters) : " + arguments, module);
                 }
 

Modified: ofbiz/branches/jackrabbit20100709/framework/build.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/build.xml?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/build.xml (original)
+++ ofbiz/branches/jackrabbit20100709/framework/build.xml Wed Aug  3 16:12:58 2011
@@ -33,7 +33,7 @@ under the License.
                testtools/build.xml,
                appserver/build.xml,webtools/build.xml,example/build.xml"/>
 
-    <filelist id="test-builds" dir="." files="base/build.xml,entity/build.xml"/>
+    <filelist id="test-builds" dir="." files="base/build.xml,sql/build.xml,entity/build.xml"/>
 
     <property name="memory.max.param" value="-Xmx384M"/>
 

Modified: ofbiz/branches/jackrabbit20100709/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java (original)
+++ ofbiz/branches/jackrabbit20100709/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java Wed Aug  3 16:12:58 2011
@@ -25,6 +25,9 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.Callable;
+import java.util.concurrent.Future;
+import java.util.concurrent.ScheduledExecutorService;
 
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
@@ -60,6 +63,7 @@ import org.apache.catalina.valves.Reques
 import org.apache.coyote.ProtocolHandler;
 import org.apache.coyote.http11.Http11Protocol;
 import org.ofbiz.base.component.ComponentConfig;
+import org.ofbiz.base.concurrent.ExecutionPool;
 import org.ofbiz.base.container.ClassLoaderContainer;
 import org.ofbiz.base.container.Container;
 import org.ofbiz.base.container.ContainerConfig;
@@ -136,6 +140,7 @@ public class CatalinaContainer implement
     public static final String J2EE_APP = "OFBiz";
     public static final String module = CatalinaContainer.class.getName();
     protected static Map<String, String> mimeTypes = new HashMap<String, String>();
+    private static final ThreadGroup CATALINA_THREAD_GROUP = new ThreadGroup("CatalinaContainer");
 
     // load the JSSE propertes (set the trust store)
     static {
@@ -202,9 +207,6 @@ public class CatalinaContainer implement
             createEngine(engineProp);
         }
 
-        // load the web applications
-        loadComponents();
-
         // create the connectors
         List<ContainerConfig.Container.Property> connectorProps = cc.getPropertiesWithValue("connector");
         if (UtilValidate.isEmpty(connectorProps)) {
@@ -229,6 +231,9 @@ public class CatalinaContainer implement
             throw new ContainerException(e);
         }
 
+        // load the web applications
+        loadComponents();
+
         for (Connector con: embedded.findConnectors()) {
             ProtocolHandler ph = con.getProtocolHandler();
             if (ph instanceof Http11Protocol) {
@@ -361,13 +366,15 @@ public class CatalinaContainer implement
     }
 
     protected Host createHost(Engine engine, String hostName) throws ContainerException {
+        Debug.logInfo("createHost(" + engine + ", " + hostName + ")", module);
         if (embedded == null) {
             throw new ContainerException("Cannot create Host without Embedded instance!");
         }
 
         Host host = embedded.createHost(hostName, CATALINA_HOSTS_HOME);
-        host.setDeployOnStartup(true);
-        host.setAutoDeploy(true);
+        host.setDeployOnStartup(false);
+        host.setBackgroundProcessorDelay(5);
+        host.setAutoDeploy(false);
         host.setRealm(engine.getRealm());
         engine.addChild(host);
         hosts.put(engine.getName() + hostName, host);
@@ -499,15 +506,51 @@ public class CatalinaContainer implement
         return connector;
     }
 
-    protected Context createContext(ComponentConfig.WebappInfo appInfo) throws ContainerException {
-        // webapp settings
-        Map<String, String> initParameters = appInfo.getInitParameters();
-        List<String> virtualHosts = appInfo.getVirtualHosts();
-        Engine engine = engines.get(appInfo.server);
+    protected Callable<Context> createContext(final ComponentConfig.WebappInfo appInfo) throws ContainerException {
+        Debug.logInfo("createContext(" + appInfo.name + ")", module);
+        final Engine engine = engines.get(appInfo.server);
         if (engine == null) {
             Debug.logWarning("Server with name [" + appInfo.server + "] not found; not mounting [" + appInfo.name + "]", module);
             return null;
         }
+        List<String> virtualHosts = appInfo.getVirtualHosts();
+        final Host host;
+        if (UtilValidate.isEmpty(virtualHosts)) {
+            host = hosts.get(engine.getName() + "._DEFAULT");
+        } else {
+            // assume that the first virtual-host will be the default; additional virtual-hosts will be aliases
+            Iterator<String> vhi = virtualHosts.iterator();
+            String hostName = vhi.next();
+
+            boolean newHost = false;
+            if (hosts.containsKey(engine.getName() + "." + hostName)) {
+                host = hosts.get(engine.getName() + "." + hostName);
+            } else {
+                host = createHost(engine, hostName);
+                newHost = true;
+            }
+            while (vhi.hasNext()) {
+                host.addAlias(vhi.next());
+            }
+
+            if (newHost) {
+                hosts.put(engine.getName() + "." + hostName, host);
+            }
+        }
+
+        return new Callable<Context>() {
+            public Context call() throws ContainerException, LifecycleException {
+                StandardContext context = configureContext(engine, host, appInfo);
+                context.setParent(host);
+                context.start();
+                return context;
+            }
+        };
+    }
+
+    private StandardContext configureContext(Engine engine, Host host, ComponentConfig.WebappInfo appInfo) throws ContainerException {
+        // webapp settings
+        Map<String, String> initParameters = appInfo.getInitParameters();
 
         // set the root location (make sure we set the paths correctly)
         String location = appInfo.componentConfig.getRootLocation() + appInfo.location;
@@ -539,6 +582,9 @@ public class CatalinaContainer implement
 
         // create the web application context
         StandardContext context = (StandardContext) embedded.createContext(mount, location);
+        Debug.logInfo("host[" + host + "].addChild(" + context + ")", module);
+        //context.setDeployOnStartup(false);
+        //context.setBackgroundProcessorDelay(5);
         context.setJ2EEApplication(J2EE_APP);
         context.setJ2EEServer(J2EE_SERVER);
         context.setLoader(embedded.createLoader(ClassLoaderContainer.getClassLoader()));
@@ -589,33 +635,9 @@ public class CatalinaContainer implement
             context.addParameter(entry.getKey(), entry.getValue());
         }
 
-        if (UtilValidate.isEmpty(virtualHosts)) {
-            Host host = hosts.get(engine.getName() + "._DEFAULT");
-            context.setRealm(host.getRealm());
-            host.addChild(context);
-            context.getMapper().setDefaultHostName(host.getName());
-        } else {
-            // assume that the first virtual-host will be the default; additional virtual-hosts will be aliases
-            Iterator<String> vhi = virtualHosts.iterator();
-            String hostName = vhi.next();
-
-            boolean newHost = false;
-            Host host = hosts.get(engine.getName() + "." + hostName);
-            if (host == null) {
-                host = createHost(engine, hostName);
-                newHost = true;
-            }
-            while (vhi.hasNext()) {
-                host.addAlias(vhi.next());
-            }
-            context.setRealm(host.getRealm());
-            host.addChild(context);
-            context.getMapper().setDefaultHostName(host.getName());
-
-            if (newHost) {
-                hosts.put(engine.getName() + "." + hostName, host);
-            }
-        }
+        context.setRealm(host.getRealm());
+        host.addChild(context);
+        context.getMapper().setDefaultHostName(host.getName());
 
         return context;
     }
@@ -628,19 +650,43 @@ public class CatalinaContainer implement
         // load the applications
         List<ComponentConfig.WebappInfo> webResourceInfos = ComponentConfig.getAllWebappResourceInfos();
         List<String> loadedMounts = FastList.newInstance();
-        if (webResourceInfos != null) {
+        if (webResourceInfos == null) {
+            return;
+        }
+
+        ScheduledExecutorService executor = ExecutionPool.getExecutor(CATALINA_THREAD_GROUP, "catalina-startup", -1, true);
+        try {
+            List<Future<Context>> futures = FastList.newInstance();
+
             for (int i = webResourceInfos.size(); i > 0; i--) {
                 ComponentConfig.WebappInfo appInfo = webResourceInfos.get(i - 1);
-                String mount = appInfo.getContextRoot();
+                String engineName = appInfo.server;
                 List<String> virtualHosts = appInfo.getVirtualHosts();
-                if (!loadedMounts.contains(mount) || UtilValidate.isNotEmpty(virtualHosts)) {
-                    createContext(appInfo);
-                    loadedMounts.add(mount);
+                String mount = appInfo.getContextRoot();
+                List<String> keys = FastList.newInstance();
+                if (UtilValidate.isEmpty(virtualHosts)) {
+                    keys.add(engineName + ":DEFAULT:" + mount);
+                } else {
+                    for (String virtualHost: virtualHosts) {
+                        keys.add(engineName + ":" + virtualHost + ":" + mount);
+                    }
+                }
+                if (!keys.removeAll(loadedMounts)) {
+                    // nothing was removed from the new list of keys; this
+                    // means there are no existing loaded entries that overlap
+                    // with the new set
+                    if (appInfo.location != null) {
+                        futures.add(executor.submit(createContext(appInfo)));
+                    }
+                    loadedMounts.addAll(keys);
                 } else {
                     appInfo.appBarDisplay = false; // disable app bar display on overrided apps
                     Debug.logInfo("Duplicate webapp mount; not loading : " + appInfo.getName() + " / " + appInfo.getLocation(), module);
                 }
             }
+            ExecutionPool.getAllFutures(futures);
+        } finally {
+            executor.shutdown();
         }
     }
 

Modified: ofbiz/branches/jackrabbit20100709/framework/common/config/CommonUiLabels.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/common/config/CommonUiLabels.xml?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/common/config/CommonUiLabels.xml (original)
+++ ofbiz/branches/jackrabbit20100709/framework/common/config/CommonUiLabels.xml Wed Aug  3 16:12:58 2011
@@ -3211,7 +3211,7 @@
         <value xml:lang="ar">النمط: ي ي-ش ش-ع ع ع ع</value>
         <value xml:lang="en">Format: yyyy-MM-dd</value>
         <value xml:lang="es">Formato: aaaa-MM-dd (año-mes-día)</value>
-        <value xml:lang="fr">Format: AAAA-MM-JJ</value>
+        <value xml:lang="fr">Format: JJ/MM/AAAA</value>
         <value xml:lang="hi_IN">प्रारूप: yyyy-MM-dd</value>
         <value xml:lang="it">Formato: AAAA-MM-gg</value>
         <value xml:lang="pt">Format: yyyy-MM-dd</value>
@@ -3226,7 +3226,7 @@
         <value xml:lang="de">Der Inhalt eines Datumfeldes ist fehlerhaft. Das Eingabeformat lautet tt-MM-JJJJ HH:mm:ss</value>
         <value xml:lang="en">One of the date fields is incorrect, format must be yyyy-MM-dd HH:mm:ss.SSS</value>
         <value xml:lang="es">Uno de los campos de fecha es incorrecto; el formato debe ser AAA-mm-dd HH:mm:ss</value>
-        <value xml:lang="fr">La saisie d'un champ de date est incorrecte, le format doit-être AAAA-mm-jj HH:mm:ss</value>
+        <value xml:lang="fr">La saisie d'un champ de date est incorrecte, le format doit-être JJ/MM/AAAA hh:mm:ss</value>
         <value xml:lang="hi_IN">एक दिनांक क्षेत्र गलत है, प्रारूप yyyy-MM-dd HH: mm: ss.SSS होना चाहिए</value>
         <value xml:lang="it">Uno dei campi data non è corretto, il formato deve essere AAAA-mm-gg HH:mm:ss</value>
         <value xml:lang="nl">Een van de datumvelden in niet juist, het formaat moet JJJJ-mm-dd HH:mm:ss zijn</value>
@@ -3244,7 +3244,7 @@
         <value xml:lang="de">tt-MM-JJJJ HH:mm:ss</value>
         <value xml:lang="en">Format: yyyy-MM-dd HH:mm:ss.SSS</value>
         <value xml:lang="es">AAAA-MM-DD hh:mm:ss</value>
-        <value xml:lang="fr">Format: AAAA-MM-JJ hh:mm:ss.sss</value>
+        <value xml:lang="fr">Format: JJ/MM/AAAA hh:mm:ss.sss</value>
         <value xml:lang="hi_IN">प्रारूप:yyyy-MM-dd HH: mm: ss.SSS</value>
         <value xml:lang="it">Formato: YYYY-MM-DD hh:mm:ss</value>
         <value xml:lang="nl">JJJJ-MM-DD hh:mm:ss</value>
@@ -6361,7 +6361,7 @@
     </property>
     <property key="CommonPortalPagesForApplication">
         <value xml:lang="en">Portal pages for application</value>
-        <value xml:lang="fr">Pages portail pour application</value>
+        <value xml:lang="fr">Pages portail pour l'application</value>
         <value xml:lang="hi_IN">आवेदन के लिए पोर्टल पृष्ठ</value>
         <value xml:lang="it">Pagine portale per applicazione</value>
         <value xml:lang="pt_BR">As páginas do portal para o aplicativo</value>

Modified: ofbiz/branches/jackrabbit20100709/framework/common/config/general.properties
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/common/config/general.properties?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/common/config/general.properties (original)
+++ ofbiz/branches/jackrabbit20100709/framework/common/config/general.properties Wed Aug  3 16:12:58 2011
@@ -26,7 +26,7 @@ currency.uom.id.default=USD
 # These values override the _NA_ DEFAULT values in user preferences for the GLOBAL_PREFERENCES userPrefGroupTypeId
 # -- the default organizationPartyId for used in dropdowns and reports
 ORGANIZATION_PARTY=Company
-# ID of the VisualTheme to use if there VISUAL_THEME UserPreference record for the current user supported values: FLAT_GREY and BIZZNESS_TIME and BLUELIGHT 
+# ID of the VisualTheme to use if there is no VISUAL_THEME UserPreference record for the current user (ie default value)
 VISUAL_THEME=TOMAHAWK
 
 # -- the default decimal format for currency (used in UtilFormatOut.java)
@@ -130,3 +130,7 @@ http.localhost=ABQIAAAAtt0d8djaYFkk8N5LJ
 
 # -- Y if you want to display the multi-tenant textbox in the login page
 multitenant=N
+
+# -- Y if you use a cluster. Most of the time this should not be needed. Setting distributed-cache-clear-enabled="true" is enough 
+# -- to guarantee no sequenceIds duplicates. See OFBIZ-2353 for details
+cluster=N

Modified: ofbiz/branches/jackrabbit20100709/framework/common/data/GeoData.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/common/data/GeoData.xml?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/common/data/GeoData.xml (original)
+++ ofbiz/branches/jackrabbit20100709/framework/common/data/GeoData.xml Wed Aug  3 16:12:58 2011
@@ -272,7 +272,7 @@ under the License.
     <Geo abbreviation="YUG" geoCode="YU" geoId="YUG" geoName="Yugoslavia" geoSecCode="891" geoTypeId="COUNTRY"/>
     <Geo abbreviation="ZMB" geoCode="ZM" geoId="ZMB" geoName="Zambia" geoSecCode="894" geoTypeId="COUNTRY"/>
     <Geo abbreviation="ZWE" geoCode="ZW" geoId="ZWE" geoName="Zimbabwe" geoSecCode="716" geoTypeId="COUNTRY"/>
-    
+
     <Geo abbreviation="EU" geoCode="EU" geoTypeId="GROUP" geoId="EU" geoName="European Union"/>
     <GeoAssoc geoAssocTypeId="GROUP_MEMBER" geoIdTo="EU" geoId="DEU"/>
     <GeoAssoc geoAssocTypeId="GROUP_MEMBER" geoIdTo="EU" geoId="AUT"/>
@@ -307,4 +307,24 @@ under the License.
     <GeoAssoc geoAssocTypeId="GROUP_MEMBER" geoIdTo="GBR" geoId="ENGL"/>
     <GeoAssoc geoAssocTypeId="GROUP_MEMBER" geoIdTo="GBR" geoId="NIRL"/>
     <GeoAssoc geoAssocTypeId="GROUP_MEMBER" geoIdTo="GBR" geoId="WALS"/>
+
+    <CountryAddressFormat geoId="DEU" stateProvinceGeoAssocTypeId="REGIONS" requireStateProvinceId="" requirePostalCode="" postalCodeRegex="" hasPostalCodeExt="" requirePostalCodeExt="" addressFormat=""/>
+    <CountryAddressFormat geoId="GBR" stateProvinceGeoAssocTypeId="GROUP_MEMBER" requireStateProvinceId="" requirePostalCode="" postalCodeRegex="" hasPostalCodeExt="" requirePostalCodeExt="" addressFormat=""/>
+    <CountryAddressFormat geoId="ENGL" stateProvinceGeoAssocTypeId="REGIONS" requireStateProvinceId="" requirePostalCode="" postalCodeRegex="" hasPostalCodeExt="" requirePostalCodeExt="" addressFormat=""/>
+    <CountryAddressFormat geoId="NIRL" stateProvinceGeoAssocTypeId="REGIONS" requireStateProvinceId="" requirePostalCode="" postalCodeRegex="" hasPostalCodeExt="" requirePostalCodeExt="" addressFormat=""/>
+    <CountryAddressFormat geoId="WALS" stateProvinceGeoAssocTypeId="REGIONS" requireStateProvinceId="" requirePostalCode="" postalCodeRegex="" hasPostalCodeExt="" requirePostalCodeExt="" addressFormat=""/>
+    <CountryAddressFormat geoId="SCOT" stateProvinceGeoAssocTypeId="REGIONS" requireStateProvinceId="" requirePostalCode="" postalCodeRegex="" hasPostalCodeExt="" requirePostalCodeExt="" addressFormat=""/>
+    <CountryAddressFormat geoId="USA" stateProvinceGeoAssocTypeId="REGIONS" requireStateProvinceId="" requirePostalCode="" postalCodeRegex="" hasPostalCodeExt="" requirePostalCodeExt="" addressFormat=""/>
+    <CountryAddressFormat geoId="CAN" stateProvinceGeoAssocTypeId="REGIONS" requireStateProvinceId="" requirePostalCode="" postalCodeRegex="" hasPostalCodeExt="" requirePostalCodeExt="" addressFormat=""/>
+    <CountryAddressFormat geoId="AUS" stateProvinceGeoAssocTypeId="REGIONS" requireStateProvinceId="" requirePostalCode="" postalCodeRegex="" hasPostalCodeExt="" requirePostalCodeExt="" addressFormat=""/>
+    <CountryAddressFormat geoId="BGR" stateProvinceGeoAssocTypeId="REGIONS" requireStateProvinceId="" requirePostalCode="" postalCodeRegex="" hasPostalCodeExt="" requirePostalCodeExt="" addressFormat=""/>
+    <CountryAddressFormat geoId="BRA" stateProvinceGeoAssocTypeId="REGIONS" requireStateProvinceId="" requirePostalCode="" postalCodeRegex="" hasPostalCodeExt="" requirePostalCodeExt="" addressFormat=""/>
+    <CountryAddressFormat geoId="CHN" stateProvinceGeoAssocTypeId="REGIONS" requireStateProvinceId="" requirePostalCode="" postalCodeRegex="" hasPostalCodeExt="" requirePostalCodeExt="" addressFormat=""/>
+    <CountryAddressFormat geoId="COL" stateProvinceGeoAssocTypeId="REGIONS" requireStateProvinceId="" requirePostalCode="" postalCodeRegex="" hasPostalCodeExt="" requirePostalCodeExt="" addressFormat=""/>
+    <CountryAddressFormat geoId="MEX" stateProvinceGeoAssocTypeId="REGIONS" requireStateProvinceId="" requirePostalCode="" postalCodeRegex="" hasPostalCodeExt="" requirePostalCodeExt="" addressFormat=""/>
+    <CountryAddressFormat geoId="NLD" stateProvinceGeoAssocTypeId="REGIONS" requireStateProvinceId="" requirePostalCode="" postalCodeRegex="" hasPostalCodeExt="" requirePostalCodeExt="" addressFormat=""/>
+    <CountryAddressFormat geoId="POL" stateProvinceGeoAssocTypeId="REGIONS" requireStateProvinceId="" requirePostalCode="" postalCodeRegex="" hasPostalCodeExt="" requirePostalCodeExt="" addressFormat=""/>
+    <CountryAddressFormat geoId="IND" stateProvinceGeoAssocTypeId="REGIONS" requireStateProvinceId="" requirePostalCode="" postalCodeRegex="" hasPostalCodeExt="" requirePostalCodeExt="" addressFormat=""/>
+    <CountryAddressFormat geoId="ITA" stateProvinceGeoAssocTypeId="REGIONS" requireStateProvinceId="" requirePostalCode="" postalCodeRegex="" hasPostalCodeExt="" requirePostalCodeExt="" addressFormat=""/>
+    <CountryAddressFormat geoId="FRA" stateProvinceGeoAssocTypeId="null" requireStateProvinceId="" requirePostalCode="" postalCodeRegex="" hasPostalCodeExt="" requirePostalCodeExt="" addressFormat=""/>
 </entity-engine-xml>

Modified: ofbiz/branches/jackrabbit20100709/framework/common/entitydef/entitymodel.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/common/entitydef/entitymodel.xml?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/common/entitydef/entitymodel.xml (original)
+++ ofbiz/branches/jackrabbit20100709/framework/common/entitydef/entitymodel.xml Wed Aug  3 16:12:58 2011
@@ -164,6 +164,24 @@ under the License.
             <key-map field-name="countryCode"/>
         </view-link>
     </view-entity>
+    <entity entity-name="CountryAddressFormat" package-name="org.ofbiz.common.geo" default-resource-name="CommonEntityLabels"
+        title="">
+        <field name="geoId" type="id-ne"></field>
+        <field name="stateProvinceGeoAssocTypeId" type="id"></field>
+        <field name="requireStateProvinceId" type="id"></field>
+        <field name="requirePostalCode" type="indicator"></field>
+        <field name="postalCodeRegex" type="long-varchar"></field>
+        <field name="hasPostalCodeExt" type="indicator"></field>
+        <field name="requirePostalCodeExt" type="indicator"></field>
+        <field name="addressFormat" type="long-varchar"></field>
+        <prim-key field="geoId"/>
+        <relation rel-entity-name="Geo" type="one">
+            <key-map field-name="geoId"/>
+        </relation>
+        <relation type="one" fk-name="CNY_ADR_GEO_TYPE" rel-entity-name="GeoAssocType" >
+            <key-map field-name="geoAssocTypeId" rel-field-name="stateProvinceGeoAssocTypeId"/>
+        </relation>
+    </entity>
     <entity entity-name="Geo" package-name="org.ofbiz.common.geo" default-resource-name="CommonEntityLabels"
         title="Geographic Boundary Entity">
       <field name="geoId" type="id-ne"></field>
@@ -215,6 +233,21 @@ under the License.
             <key-map field-name="geoIdTo" rel-field-name="geoId"/>
         </view-link>
     </view-entity>
+    <view-entity entity-name="GeoAssocAndGeoToWithState" package-name="org.ofbiz.common.geo">
+        <member-entity entity-alias="GA" entity-name="GeoAssoc"/>
+        <member-entity entity-alias="GTO" entity-name="Geo"/>
+        <member-entity entity-alias="GWS" entity-name="CountryAddressFormat"/>
+        <alias-all entity-alias="GTO"/>
+        <alias entity-alias="GA" name="geoIdFrom" field="geoId"/>
+        <alias entity-alias="GA" name="geoAssocTypeId"/>
+        <view-link entity-alias="GA"  rel-entity-alias="GTO">
+            <key-map field-name="geoIdTo"  rel-field-name="geoId"/>
+        </view-link>
+        <view-link entity-alias="GA"  rel-entity-alias="GWS">
+            <key-map field-name="geoId"  rel-field-name="geoId"/>
+            <key-map field-name="geoAssocTypeId" rel-field-name="stateProvinceGeoAssocTypeId"/>
+        </view-link>
+    </view-entity>
     <entity entity-name="GeoAssocType" package-name="org.ofbiz.common.geo"
         title="Geographic Boundary Association Entity">
       <field name="geoAssocTypeId" type="id-ne"></field>

Modified: ofbiz/branches/jackrabbit20100709/framework/common/src/org/ofbiz/common/CommonWorkers.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/common/src/org/ofbiz/common/CommonWorkers.java?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/common/src/org/ofbiz/common/CommonWorkers.java (original)
+++ ofbiz/branches/jackrabbit20100709/framework/common/src/org/ofbiz/common/CommonWorkers.java Wed Aug  3 16:12:58 2011
@@ -89,9 +89,8 @@ public class CommonWorkers {
 
     public static List<GenericValue> getStateList(Delegator delegator) {
         List<GenericValue> geoList = FastList.newInstance();
-        EntityCondition condition = EntityCondition.makeCondition(EntityOperator.OR,
-                EntityCondition.makeCondition("geoTypeId", "STATE"), EntityCondition.makeCondition("geoTypeId", "PROVINCE"),
-                EntityCondition.makeCondition("geoTypeId", "TERRITORY"), EntityCondition.makeCondition("geoTypeId", "MUNICIPALITY"));
+        EntityCondition condition = EntityCondition.makeCondition(EntityOperator.OR, EntityCondition.makeCondition("geoTypeId", "STATE"), EntityCondition.makeCondition("geoTypeId", "PROVINCE"), EntityCondition.makeCondition("geoTypeId", "TERRITORY"),
+                EntityCondition.makeCondition("geoTypeId", "MUNICIPALITY"));
         List<String> sortList = UtilMisc.toList("geoName");
         try {
             geoList = delegator.findList("Geo", condition, null, sortList, null, true);
@@ -113,14 +112,6 @@ public class CommonWorkers {
             // Load the system default country
             country = UtilProperties.getPropertyValue("general.properties", "country.geo.id.default");
         }
-        EntityCondition stateProvinceFindCond = EntityCondition.makeCondition(
-                EntityCondition.makeCondition("geoIdFrom", country),
-                EntityCondition.makeCondition("geoAssocTypeId", "REGIONS"),
-                EntityCondition.makeCondition(EntityOperator.OR,
-                        EntityCondition.makeCondition("geoTypeId", "STATE"),
-                        EntityCondition.makeCondition("geoTypeId", "PROVINCE"),
-                        EntityCondition.makeCondition("geoTypeId", "MUNICIPALITY"),
-                        EntityCondition.makeCondition("geoTypeId", "COUNTY")));
 
         if (UtilValidate.isEmpty(listOrderBy)) {
             listOrderBy = "geoId";
@@ -129,7 +120,26 @@ public class CommonWorkers {
 
         List<GenericValue> geoList = FastList.newInstance();
         try {
-            geoList = delegator.findList("GeoAssocAndGeoTo", stateProvinceFindCond, null, sortList, null, true);
+            // Check if the country is a country group and get recursively the
+            // states
+            EntityCondition stateRegionFindCond = EntityCondition.makeCondition(EntityCondition.makeCondition("geoIdFrom", country), EntityCondition.makeCondition("geoAssocTypeId", "GROUP_MEMBER"), EntityCondition.makeCondition("geoTypeId", "GROUP"));
+            List<GenericValue> regionList = delegator.findList("GeoAssocAndGeoToWithState", stateRegionFindCond, null, sortList, null, true);
+            if (regionList.size() == 1) {
+                for (GenericValue region : regionList) {
+                    List<GenericValue> tmpState = delegator.findList("GeoAssocAndGeoTo", EntityCondition.makeCondition("geoId", region.getString("geoIdFrom")), null, sortList, null, true);
+                    for (GenericValue state : tmpState) {
+                        geoList.addAll(getAssociatedStateList(delegator, state.getString("geoIdFrom"), listOrderBy));
+                    }
+                }
+            }
+
+            // get all related states
+            EntityCondition stateProvinceFindCond = EntityCondition.makeCondition(
+                    EntityCondition.makeCondition("geoIdFrom", country),
+                    EntityCondition.makeCondition("geoAssocTypeId", "REGIONS"),
+                    EntityCondition.makeCondition(EntityOperator.OR, EntityCondition.makeCondition("geoTypeId", "STATE"), EntityCondition.makeCondition("geoTypeId", "PROVINCE"), EntityCondition.makeCondition("geoTypeId", "MUNICIPALITY"),
+                            EntityCondition.makeCondition("geoTypeId", "COUNTY")));
+            geoList.addAll(delegator.findList("GeoAssocAndGeoToWithState", stateProvinceFindCond, null, sortList, null, true));
         } catch (GenericEntityException e) {
             Debug.logError(e, "Cannot lookup Geo", module);
         }

Modified: ofbiz/branches/jackrabbit20100709/framework/common/src/org/ofbiz/common/login/LoginServices.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/common/src/org/ofbiz/common/login/LoginServices.java?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/common/src/org/ofbiz/common/login/LoginServices.java (original)
+++ ofbiz/branches/jackrabbit20100709/framework/common/src/org/ofbiz/common/login/LoginServices.java Wed Aug  3 16:12:58 2011
@@ -888,11 +888,6 @@ public class LoginServices {
             userLoginToUpdate.set("disabledDateTime", null);
         }
 
-        // if was enabled and we are disabling it, and no disabledDateTime was passed, set it to now
-        if (wasEnabled && "N".equals(context.get("enabled")) && context.get("disabledDateTime") == null) {
-            userLoginToUpdate.set("disabledDateTime", UtilDateTime.nowTimestamp());
-        }
-
         try {
             userLoginToUpdate.store();
         } catch (GenericEntityException e) {

Modified: ofbiz/branches/jackrabbit20100709/framework/common/webcommon/WEB-INF/actions/includes/FindAutocompleteOptions.groovy
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/common/webcommon/WEB-INF/actions/includes/FindAutocompleteOptions.groovy?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/common/webcommon/WEB-INF/actions/includes/FindAutocompleteOptions.groovy (original)
+++ ofbiz/branches/jackrabbit20100709/framework/common/webcommon/WEB-INF/actions/includes/FindAutocompleteOptions.groovy Wed Aug  3 16:12:58 2011
@@ -19,6 +19,7 @@
 
 import org.ofbiz.base.util.StringUtil;
 import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilProperties;
 import org.ofbiz.entity.util.EntityFindOptions;
 import org.ofbiz.entity.condition.EntityCondition;
 import org.ofbiz.entity.condition.EntityConditionList;
@@ -104,7 +105,11 @@ if (orExprs && entityName && displayFiel
     
     def entityConditionList = EntityCondition.makeCondition(mainAndConds, EntityOperator.AND);    
     
-    Integer autocompleterViewSize = Integer.valueOf(context.autocompleterViewSize ?: 10);
+    String viewSizeStr = context.autocompleterViewSize;
+    if (viewSizeStr == null) {
+        viewSizeStr = UtilProperties.getPropertyValue("widget", "widget.autocompleter.defaultViewSize");
+    }
+    Integer autocompleterViewSize = Integer.valueOf(viewSizeStr ?: 10);
     EntityFindOptions findOptions = new EntityFindOptions();
     findOptions.setMaxRows(autocompleterViewSize);
     findOptions.setDistinct(searchDistinct);

Modified: ofbiz/branches/jackrabbit20100709/framework/common/webcommon/includes/ajaxAutocompleteOptions.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/common/webcommon/includes/ajaxAutocompleteOptions.ftl?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/common/webcommon/includes/ajaxAutocompleteOptions.ftl (original)
+++ ofbiz/branches/jackrabbit20100709/framework/common/webcommon/includes/ajaxAutocompleteOptions.ftl Wed Aug  3 16:12:58 2011
@@ -35,7 +35,9 @@ under the License.
 <script type="text/javascript">
     <#if autocompleteOptions?exists>
   var autocomp = [
-        <#assign displayReturnField = Static["org.ofbiz.base.util.UtilProperties"].getPropertyValue("widget.properties", "widget.autocompleter.displayReturnField")>
+        <#if !displayReturnField?exists>
+            <#assign displayReturnField = Static["org.ofbiz.base.util.UtilProperties"].getPropertyValue("widget.properties", "widget.autocompleter.displayReturnField")>
+        </#if>
         <#list autocompleteOptions as autocompleteOption>
             {
             <#assign displayString = ""/>

Modified: ofbiz/branches/jackrabbit20100709/framework/common/webcommon/includes/countries.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/common/webcommon/includes/countries.ftl?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/common/webcommon/includes/countries.ftl (original)
+++ ofbiz/branches/jackrabbit20100709/framework/common/webcommon/includes/countries.ftl Wed Aug  3 16:12:58 2011
@@ -18,6 +18,9 @@ under the License.
 -->
 <#assign countries = Static["org.ofbiz.common.CommonWorkers"].getCountryList(delegator)>
 <#list countries as country>
-    <option value='${country.geoId}'>${country.get("geoName",locale)?default(country.geoId)}</option>
+    <#if defaultCountryGeoId?exists>
+        <option value='${country.geoId}' ${(country.geoId==defaultCountryGeoId)?string("selected=\"selected\"","")}>${country.get("geoName",locale)?default(country.geoId)}</option>
+    <#else>
+        <option value='${country.geoId}'>${country.get("geoName",locale)?default(country.geoId)}</option>
+    </#if>
 </#list>
-

Modified: ofbiz/branches/jackrabbit20100709/framework/common/webcommon/includes/htmlTemplate.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/common/webcommon/includes/htmlTemplate.ftl?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/common/webcommon/includes/htmlTemplate.ftl (original)
+++ ofbiz/branches/jackrabbit20100709/framework/common/webcommon/includes/htmlTemplate.ftl Wed Aug  3 16:12:58 2011
@@ -46,7 +46,7 @@ under the License.
         <#else>
             <#local readonly = false />
         </#if>    
-    <@renderLookupField className alert name value size maxlength id event action readonly autocomplete descriptionFieldName formName fieldFormName targetParameterIter imgSrc ajaxUrl ajaxEnabled presentation width height position fadeBackground clearText showDescription initiallyCollapsed/>
+    <@renderLookupField name formName fieldFormName className alert value size maxlength id event action readonly autocomplete descriptionFieldName targetParameterIter imgSrc ajaxUrl ajaxEnabled presentation width height position fadeBackground clearText showDescription initiallyCollapsed/>
 </#macro>
 
 <#macro nextPrev commonUrl="" ajaxEnabled=false javaScriptEnabled=false paginateStyle="nav-pager" paginateFirstStyle="nav-first" viewIndex=0 highIndex=0 listSize=0 viewSize=1 ajaxFirstUrl="" firstUrl="" paginateFirstLabel="" paginatePreviousStyle="nav-previous" ajaxPreviousUrl="" previousUrl="" paginatePreviousLabel="" pageLabel="" ajaxSelectUrl="" selectUrl="" ajaxSelectSizeUrl="" selectSizeUrl="" commonDisplaying="" paginateNextStyle="nav-next" ajaxNextUrl="" nextUrl="" paginateNextLabel="" paginateLastStyle="nav-last" ajaxLastUrl="" lastUrl="" paginateLastLabel="" paginateViewSizeLabel="" >

Modified: ofbiz/branches/jackrabbit20100709/framework/common/widget/CommonScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/common/widget/CommonScreens.xml?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/common/widget/CommonScreens.xml (original)
+++ ofbiz/branches/jackrabbit20100709/framework/common/widget/CommonScreens.xml Wed Aug  3 16:12:58 2011
@@ -31,6 +31,9 @@ under the License.
     </screen>
     <screen name="countries">
         <section>
+            <actions>
+                <property-to-field field="defaultCountryGeoId" resource="general" property="country.geo.id.default" default="USA"/>
+            </actions>
             <widgets>
                 <platform-specific><html><html-template location="component://common/webcommon/includes/countries.ftl"/></html></platform-specific>
             </widgets>
@@ -149,53 +152,70 @@ under the License.
                 <set field="messagesTemplateLocation" from-field="layoutSettings.VT_MSG_TMPLT_LOC[0]"/>
             </actions>
             <widgets>
-                <!-- render header -->
-                <platform-specific><html><html-template location="${headerTemplateLocation}"/></html></platform-specific>
-                <!-- render appbar or its opening part -->
-                <section name="Render-Main-Nav">
+                <section>
                     <condition>
-                        <not><if-empty field="appbarOpenTemplateLocation"/></not>
+                        <if-empty field="parameters.ajaxUpdateEvent"/>
                     </condition>
                     <widgets>
-                        <platform-specific><html><html-template location="${appbarOpenTemplateLocation}"/></html></platform-specific>
+                        <!-- render header -->
+                        <platform-specific><html><html-template location="${headerTemplateLocation}"/></html></platform-specific>
+                        <!-- render appbar or its opening part -->
+                        <section name="Render-Main-Nav">
+                            <condition>
+                                <not><if-empty field="appbarOpenTemplateLocation"/></not>
+                            </condition>
+                            <widgets>
+                                <platform-specific><html><html-template location="${appbarOpenTemplateLocation}"/></html></platform-specific>
+                            </widgets>
+                            <fail-widgets>
+                                <platform-specific><html><html-template location="${appbarTemplateLocation}"/></html></platform-specific>
+                            </fail-widgets>
+                        </section>
                     </widgets>
-                    <fail-widgets>
-                        <platform-specific><html><html-template location="${appbarTemplateLocation}"/></html></platform-specific>
-                    </fail-widgets>
                 </section>
-
-                <!-- render appheader: both menu widget style and ftl template style menus are supported-->
-                <section name="Render-App-Nav">
+                
+                <section>
                     <condition>
-                        <not><if-empty field="userLogin"/></not>
+                        <if-empty field="parameters.ajaxUpdateEvent"/>
                     </condition>
                     <widgets>
-                        <section>
-                            <condition><not><if-empty field="appheaderTemplate"/></not></condition>
+                        <!-- render appheader: both menu widget style and ftl template style menus are supported-->
+                        <section name="Render-App-Nav">
+                            <condition>
+                                <not><if-empty field="userLogin"/></not>
+                            </condition>
                             <widgets>
-                                <platform-specific><html><html-template location="${appheaderTemplate}"/></html></platform-specific>
-                            </widgets>
-                            <fail-widgets>
-                                <section>
-                                    <condition><not><if-empty field="parameters.applicationTitle"/></not></condition>
-                                    <widgets><label style="apptitle">${parameters.applicationTitle}</label></widgets>
-                                </section>
                                 <section>
-                                    <condition><not><if-empty field="applicationMenuLocation"/></not></condition>
-                                    <widgets><include-menu name="${applicationMenuName}" location="${applicationMenuLocation}"/></widgets>
+                                    <condition><not><if-empty field="appheaderTemplate"/></not></condition>
+                                    <widgets>
+                                        <platform-specific><html><html-template location="${appheaderTemplate}"/></html></platform-specific>
+                                    </widgets>
+                                    <fail-widgets>
+                                        <section>
+                                            <condition><not><if-empty field="parameters.applicationTitle"/></not></condition>
+                                            <widgets><label style="apptitle">${parameters.applicationTitle}</label></widgets>
+                                        </section>
+                                        <section>
+                                            <condition><not><if-empty field="applicationMenuLocation"/></not></condition>
+                                            <widgets><include-menu name="${applicationMenuName}" location="${applicationMenuLocation}"/></widgets>
+                                        </section>
+                                    </fail-widgets>
                                 </section>
+                            </widgets>
+                            <fail-widgets>
+                                <!-- better to just not include this, the CommonAppBarMenu doesn't show anything by default if the user isn't logged in, causing a funny empty menu: <include-menu name="CommonAppBarMenu" location="component://common/widget/CommonMenus.xml"/> -->
                             </fail-widgets>
                         </section>
                     </widgets>
-                    <fail-widgets>
-                        <!-- better to just not include this, the CommonAppBarMenu doesn't show anything by default if the user isn't logged in, causing a funny empty menu: <include-menu name="CommonAppBarMenu" location="component://common/widget/CommonMenus.xml"/> -->
-                    </fail-widgets>
                 </section>
-
+                
                 <!-- render the appbar closing part -->
                 <section>
                     <condition>
-                        <not><if-empty field="appbarCloseTemplateLocation"/></not>
+                        <and>
+                            <if-empty field="parameters.ajaxUpdateEvent"/>
+                            <not><if-empty field="appbarCloseTemplateLocation"/></not>
+                        </and>
                     </condition>
                     <widgets>
                         <platform-specific><html><html-template location="${appbarCloseTemplateLocation}"/></html></platform-specific>
@@ -223,7 +243,7 @@ under the License.
                                     <decorator-section-include name="left-column"/>
                                 </container>
                                 <container id="content-main-section" style="leftonly">
-                                    <container style="no-clear">
+                                    <container style="no-clear" id="centerdiv">
                                         <decorator-section-include name="body"/>
                                     </container>
                                 </container>
@@ -233,17 +253,24 @@ under the License.
                     </container>
                 </container>
 
-                <!-- render footer -->
-                <section name="Render-Footer">
+                <section>
                     <condition>
-                        <if-empty field="applicationFooterTemplate"/>
+                         <if-empty field="parameters.ajaxUpdateEvent"/>
                     </condition>
                     <widgets>
-                        <platform-specific><html><html-template location="${footerTemplateLocation}"/></html></platform-specific>
+                        <!-- render footer -->
+                        <section name="Render-Footer">
+                            <condition>
+                                <if-empty field="applicationFooterTemplate"/>
+                            </condition>
+                            <widgets>
+                                <platform-specific><html><html-template location="${footerTemplateLocation}"/></html></platform-specific>
+                            </widgets>
+                            <fail-widgets>
+                                 <platform-specific><html><html-template location="${applicationFooterTemplate}"/></html></platform-specific>
+                            </fail-widgets>
+                        </section>
                     </widgets>
-                    <fail-widgets>
-                         <platform-specific><html><html-template location="${applicationFooterTemplate}"/></html></platform-specific>
-                    </fail-widgets>
                 </section>
             </widgets>
         </section>
@@ -253,7 +280,7 @@ under the License.
     <screen name="LookupDecorator">
         <section>
             <condition>
-                <if-empty field="parameters.ajaxLookup"/>
+                <not><if-compare operator="equals" value="Y" field="parameters.ajaxLookup"/></not>
             </condition>
             <widgets>
                 <section>
@@ -321,7 +348,6 @@ under the License.
                 <section>
                     <actions>
                         <set field="searchType" from-field="parameters.searchType" default-value="${searchType}"/>
-                        <property-to-field resource="widget" property="widget.autocompleter.defaultViewSize" field="autocompleterViewSize"/>
                         <script location="component://common/webcommon/WEB-INF/actions/includes/FindAutocompleteOptions.groovy"/>
                     </actions>
                     <widgets>

Propchange: ofbiz/branches/jackrabbit20100709/framework/common/widget/HelpScreens.xml
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Aug  3 16:12:58 2011
@@ -2,4 +2,4 @@
 /ofbiz/branches/dojo1.4/framework/common/widget/HelpScreens.xml:951708-952957
 /ofbiz/branches/jquery/framework/common/widget/HelpScreens.xml:952958-1044489
 /ofbiz/branches/multitenant20100310/framework/common/widget/HelpScreens.xml:921280-927264
-/ofbiz/trunk/framework/common/widget/HelpScreens.xml:962442-1128853
+/ofbiz/trunk/framework/common/widget/HelpScreens.xml:962442-1153542

Modified: ofbiz/branches/jackrabbit20100709/framework/entity/dtd/entity-config.xsd
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/entity/dtd/entity-config.xsd?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/entity/dtd/entity-config.xsd (original)
+++ ofbiz/branches/jackrabbit20100709/framework/entity/dtd/entity-config.xsd Wed Aug  3 16:12:58 2011
@@ -392,6 +392,7 @@ under the License.
         <xs:attribute type="xs:string" name="table-type"/>
         <xs:attribute type="xs:string" name="character-set"/>
         <xs:attribute type="xs:string" name="collate"/>
+        <xs:attribute type="xs:integer" name="max-worker-pool-size" default="0"/>
     </xs:attributeGroup>
     <xs:element name="sql-load-path">
         <xs:complexType>

Modified: ofbiz/branches/jackrabbit20100709/framework/entity/dtd/entitymodel.xsd
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/entity/dtd/entitymodel.xsd?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/entity/dtd/entitymodel.xsd (original)
+++ ofbiz/branches/jackrabbit20100709/framework/entity/dtd/entitymodel.xsd Wed Aug  3 16:12:58 2011
@@ -139,6 +139,13 @@ under the License.
                 </xs:documentation>
             </xs:annotation>
         </xs:attribute>
+        <xs:attribute name="field-set" default="" type="xs:string">
+            <xs:annotation>
+                <xs:documentation>
+                    Any fields that have the same field-set will be selected together in generated queries.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="validate">
         <xs:complexType>
@@ -267,6 +274,13 @@ under the License.
         <xs:attribute name="prefix" type="xs:string"/>
         <xs:attribute name="group-by" default="false" type="boolean"/>
         <xs:attribute name="function" type="aggregate-function"/>
+        <xs:attribute name="field-set" default="" type="xs:string">
+            <xs:annotation>
+                <xs:documentation>
+                    Any fields that have the same field-set will be selected together in generated queries.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="exclude">
         <xs:complexType>
@@ -293,6 +307,13 @@ under the License.
         <xs:attribute name="prim-key" type="xs:string"/>
         <xs:attribute name="group-by" default="false" type="boolean"/>
         <xs:attribute name="function" type="aggregate-function"/>
+        <xs:attribute name="field-set" default="" type="xs:string">
+            <xs:annotation>
+                <xs:documentation>
+                    Any fields that have the same field-set will be selected together in generated queries.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="complex-alias">
         <xs:annotation>

Modified: ofbiz/branches/jackrabbit20100709/framework/entity/src/org/ofbiz/entity/Delegator.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/entity/src/org/ofbiz/entity/Delegator.java?rev=1153560&r1=1153559&r2=1153560&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/entity/src/org/ofbiz/entity/Delegator.java (original)
+++ ofbiz/branches/jackrabbit20100709/framework/entity/src/org/ofbiz/entity/Delegator.java Wed Aug  3 16:12:58 2011
@@ -1209,4 +1209,23 @@ public interface Delegator {
      */
     public int storeByCondition(String entityName, Map<String, ? extends Object> fieldsToSet, EntityCondition condition, boolean doCacheClear) throws GenericEntityException;
 
+    /**
+     * Enables/Disables the JMS listeners globally
+     * (this will not effect any dispatchers already running)
+     * @param enable
+     */
+    public void enableJMS(boolean enable);
+
+    /**
+     * Get Enabled/Disabled JMS listeners status
+     * @return boolean true is JMS listeners are enabled
+     */
+    public boolean getEnabledJMS();
+    
+    /**
+     * Get use of Distributed Cache Clear mechanism status
+     * @return boolean true if this delegator uses a Distributed Cache Clear mechanism 
+     */
+    public boolean useDistributedCacheClear();
+    
 }