You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2014/08/18 09:42:37 UTC

svn commit: r1618554 [25/38] - in /ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23: ./ applications/accounting/config/ applications/accounting/script/org/ofbiz/accounting/invoice/ applications/accounting/src/org/ofbiz/accounting/invoice/ appli...

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entity/src/org/ofbiz/entity/GenericDelegator.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entity/src/org/ofbiz/entity/GenericDelegator.java?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entity/src/org/ofbiz/entity/GenericDelegator.java (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entity/src/org/ofbiz/entity/GenericDelegator.java Mon Aug 18 07:42:27 2014
@@ -30,13 +30,16 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
+import java.util.concurrent.FutureTask;
 import java.util.concurrent.LinkedBlockingDeque;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
 
 import javax.xml.parsers.ParserConfigurationException;
 
+import org.ofbiz.base.concurrent.ConstantFuture;
 import org.ofbiz.base.concurrent.ExecutionPool;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.GeneralRuntimeException;
@@ -103,9 +106,9 @@ public class GenericDelegator implements
 
     protected Cache cache = null;
 
-    protected DistributedCacheClear distributedCacheClear = null;
+    protected final AtomicReference<Future<DistributedCacheClear>> distributedCacheClear = new AtomicReference<Future<DistributedCacheClear>>();
     protected boolean warnNoEcaHandler = false;
-    protected EntityEcaHandler<?> entityEcaHandler = null;
+    protected final AtomicReference<Future<EntityEcaHandler<?>>> entityEcaHandler = new AtomicReference<Future<EntityEcaHandler<?>>>();
     protected final AtomicReference<SequenceUtil> AtomicRefSequencer = new AtomicReference<SequenceUtil>(null);
     protected EntityCrypto crypto = null;
 
@@ -249,7 +252,7 @@ public class GenericDelegator implements
         Set<String> groupNames = getModelGroupReader().getGroupNames(delegatorBaseName);
         List<Future<Void>> futures = new LinkedList<Future<Void>>();
         for (String groupName: groupNames) {
-            futures.add(ExecutionPool.GLOBAL_EXECUTOR.submit(createHelperCallable(groupName)));
+            futures.add(ExecutionPool.GLOBAL_BATCH.submit(createHelperCallable(groupName)));
         }
         ExecutionPool.getAllFutures(futures);
 
@@ -320,9 +323,23 @@ public class GenericDelegator implements
     @Override
     public synchronized void initEntityEcaHandler() {
         // Nothing to do if already assigned: the class loader has already been called, the class instantiated and casted to EntityEcaHandler
-        if (this.entityEcaHandler != null || this.warnNoEcaHandler) {
+        if (this.entityEcaHandler.get() != null || this.warnNoEcaHandler) {
             return;
         }
+
+        Callable<EntityEcaHandler<?>> creator = new Callable<EntityEcaHandler<?>>() {
+            public EntityEcaHandler<?> call() {
+                return createEntityEcaHandler();
+            }
+        };
+        FutureTask<EntityEcaHandler<?>> futureTask = new FutureTask<EntityEcaHandler<?>>(creator);
+        if (this.entityEcaHandler.compareAndSet(null, futureTask)) {
+            // This needs to use BATCH, as the service engine might add it's own items into a thread pool.
+            ExecutionPool.GLOBAL_BATCH.submit(futureTask);
+        }
+    }
+
+    protected EntityEcaHandler<?> createEntityEcaHandler() {
         // If useEntityEca is false do nothing: the entityEcaHandler member field with a null value would cause its code to do nothing
         if (this.delegatorInfo.getEntityEcaEnabled()) {
             //time to do some tricks with manual class loading that resolves circular dependencies, like calling services
@@ -332,8 +349,9 @@ public class GenericDelegator implements
 
             try {
                 Class<?> eecahClass = loader.loadClass(entityEcaHandlerClassName);
-                this.entityEcaHandler = UtilGenerics.cast(eecahClass.newInstance());
-                this.entityEcaHandler.setDelegator(this);
+                EntityEcaHandler<?> entityEcaHandler = UtilGenerics.cast(eecahClass.newInstance());
+                entityEcaHandler.setDelegator(this);
+                return entityEcaHandler;
             } catch (ClassNotFoundException e) {
                 Debug.logWarning(e, "EntityEcaHandler class with name " + entityEcaHandlerClassName + " was not found, Entity ECA Rules will be disabled", module);
             } catch (InstantiationException e) {
@@ -347,6 +365,7 @@ public class GenericDelegator implements
             Debug.logInfo("Entity ECA Handler disabled for delegator [" + delegatorFullName + "]", module);
             this.warnNoEcaHandler = true;
         }
+        return null;
     }
 
     /* (non-Javadoc)
@@ -2055,8 +2074,12 @@ public class GenericDelegator implements
     public void clearAllCaches(boolean distribute) {
         cache.clear();
 
-        if (distribute && this.distributedCacheClear != null) {
-            this.distributedCacheClear.clearAllCaches();
+        if (!distribute) {
+            return;
+        }
+        DistributedCacheClear dcc = getDistributedCacheClear();
+        if (dcc != null) {
+            dcc.clearAllCaches();
         }
     }
 
@@ -2119,8 +2142,13 @@ public class GenericDelegator implements
 
             cache.remove(dummyPK);
 
-            if (distribute && this.distributedCacheClear != null) {
-                this.distributedCacheClear.distributedClearCacheLineFlexible(dummyPK);
+            if (!distribute) {
+                return;
+            }
+
+            DistributedCacheClear dcc = getDistributedCacheClear();
+            if (dcc != null) {
+                dcc.distributedClearCacheLineFlexible(dummyPK);
             }
         }
     }
@@ -2146,8 +2174,13 @@ public class GenericDelegator implements
 
             cache.remove(entityName, condition);
 
-            if (distribute && this.distributedCacheClear != null) {
-                this.distributedCacheClear.distributedClearCacheLineByCondition(entityName, condition);
+            if (!distribute) {
+                return;
+            }
+
+            DistributedCacheClear dcc = getDistributedCacheClear();
+            if (dcc != null) {
+                dcc.distributedClearCacheLineByCondition(entityName, condition);
             }
         }
     }
@@ -2176,8 +2209,13 @@ public class GenericDelegator implements
 
         cache.remove(primaryKey);
 
-        if (distribute && this.distributedCacheClear != null) {
-            this.distributedCacheClear.distributedClearCacheLine(primaryKey);
+        if (!distribute) {
+            return;
+        }
+
+        DistributedCacheClear dcc = getDistributedCacheClear();
+        if (dcc != null) {
+            dcc.distributedClearCacheLine(primaryKey);
         }
     }
 
@@ -2206,8 +2244,13 @@ public class GenericDelegator implements
 
         cache.remove(value);
 
-        if (distribute && this.distributedCacheClear != null) {
-            this.distributedCacheClear.distributedClearCacheLine(value);
+        if (!distribute) {
+            return;
+        }
+
+        DistributedCacheClear dcc = getDistributedCacheClear();
+        if (dcc != null) {
+            dcc.distributedClearCacheLine(value);
         }
     }
 
@@ -2291,7 +2334,7 @@ public class GenericDelegator implements
      */
     @Override
     public void setDistributedCacheClear(DistributedCacheClear distributedCacheClear) {
-        this.distributedCacheClear = distributedCacheClear;
+        this.distributedCacheClear.set(new ConstantFuture<DistributedCacheClear>(distributedCacheClear));
     }
 
     // ======= XML Related Methods ========
@@ -2431,7 +2474,7 @@ public class GenericDelegator implements
         if (this.testRollbackInProgress) {
             return createEntityEcaRuleRunner(null, null);
         }
-        return createEntityEcaRuleRunner(this.entityEcaHandler, entityName);
+        return createEntityEcaRuleRunner(getEntityEcaHandler(), entityName);
     }
 
     protected static <T> EntityEcaRuleRunner<T> createEntityEcaRuleRunner(EntityEcaHandler<T> entityEcaHandler, String entityName) {
@@ -2443,7 +2486,7 @@ public class GenericDelegator implements
      */
     @Override
     public <T> void setEntityEcaHandler(EntityEcaHandler<T> entityEcaHandler) {
-        this.entityEcaHandler = entityEcaHandler;
+        this.entityEcaHandler.set(new ConstantFuture<EntityEcaHandler<?>>(entityEcaHandler));
         this.warnNoEcaHandler = false;
     }
 
@@ -2452,7 +2495,15 @@ public class GenericDelegator implements
      */
     @Override
     public <T> EntityEcaHandler<T> getEntityEcaHandler() {
-        return UtilGenerics.cast(this.entityEcaHandler);
+        Future<EntityEcaHandler<?>> future = this.entityEcaHandler.get();
+        try {
+            return UtilGenerics.cast(future != null ? future.get() : null);
+        } catch (ExecutionException e) {
+            Debug.logError(e, "Could not fetch EntityEcaHandler from the asynchronous instantiation", module);
+        } catch (InterruptedException e) {
+            Debug.logError(e, "Could not fetch EntityEcaHandler from the asynchronous instantiation", module);
+        }
+        return null;
     }
 
     /* (non-Javadoc)
@@ -2791,9 +2842,9 @@ public class GenericDelegator implements
         newDelegator.delegatorBaseName = this.delegatorBaseName;
         newDelegator.delegatorInfo = this.delegatorInfo;
         newDelegator.cache = this.cache;
-        newDelegator.distributedCacheClear = this.distributedCacheClear;
+        newDelegator.distributedCacheClear.set(this.distributedCacheClear.get());
         newDelegator.originalDelegatorName = getOriginalDelegatorName();
-        newDelegator.entityEcaHandler = this.entityEcaHandler;
+        newDelegator.entityEcaHandler.set(this.entityEcaHandler.get());
         newDelegator.crypto = this.crypto;
         // In case this delegator is in testMode give it a reference to
         // the rollback list
@@ -2818,7 +2869,7 @@ public class GenericDelegator implements
     @Override
     public GenericDelegator makeTestDelegator(String delegatorName) {
         GenericDelegator testDelegator = this.cloneDelegator(delegatorName);
-        testDelegator.entityEcaHandler = null;
+        testDelegator.entityEcaHandler.set(null);
         testDelegator.initEntityEcaHandler();
         testDelegator.setTestMode(true);
         return testDelegator;
@@ -2899,10 +2950,22 @@ public class GenericDelegator implements
     @Override
     public void initDistributedCacheClear() {
         // Nothing to do if already assigned: the class loader has already been called, the class instantiated and casted to DistributedCacheClear
-        if (this.distributedCacheClear != null) {
+        if (this.distributedCacheClear.get() != null) {
             return;
         }
 
+        Callable<DistributedCacheClear> creator = new Callable<DistributedCacheClear>() {
+            public DistributedCacheClear call() {
+                return createDistributedCacheClear();
+            }
+        };
+        FutureTask<DistributedCacheClear> futureTask = new FutureTask<DistributedCacheClear>(creator);
+        if (distributedCacheClear.compareAndSet(null, futureTask)) {
+            ExecutionPool.GLOBAL_BATCH.submit(futureTask);
+        }
+    }
+
+    protected DistributedCacheClear createDistributedCacheClear() {
         // If useDistributedCacheClear is false do nothing: the distributedCacheClear member field with a null value would cause dcc code to do nothing
         if (useDistributedCacheClear()) {
             //time to do some tricks with manual class loading that resolves circular dependencies, like calling services
@@ -2912,8 +2975,9 @@ public class GenericDelegator implements
 
             try {
                 Class<?> dccClass = loader.loadClass(distributedCacheClearClassName);
-                this.distributedCacheClear = UtilGenerics.cast(dccClass.newInstance());
-                this.distributedCacheClear.setDelegator(this, this.delegatorInfo.getDistributedCacheClearUserLoginId());
+                DistributedCacheClear distributedCacheClear = UtilGenerics.cast(dccClass.newInstance());
+                distributedCacheClear.setDelegator(this, this.delegatorInfo.getDistributedCacheClearUserLoginId());
+                return distributedCacheClear;
             } catch (ClassNotFoundException e) {
                 Debug.logWarning(e, "DistributedCacheClear class with name " + distributedCacheClearClassName + " was not found, distributed cache clearing will be disabled", module);
             } catch (InstantiationException e) {
@@ -2926,6 +2990,19 @@ public class GenericDelegator implements
         } else {
             Debug.logVerbose("Distributed Cache Clear System disabled for delegator [" + delegatorFullName + "]", module);
         }
+        return null;
+    }
+
+    protected DistributedCacheClear getDistributedCacheClear() {
+        Future<DistributedCacheClear> future = this.distributedCacheClear.get();
+        try {
+            return future != null ? future.get() : null;
+        } catch (ExecutionException e) {
+            Debug.logError(e, "Could not fetch DistributedCacheClear from the asynchronous instantiation", module);
+        } catch (InterruptedException e) {
+            Debug.logError(e, "Could not fetch DistributedCacheClear from the asynchronous instantiation", module);
+        }
+        return null;
     }
 
     @Override

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java Mon Aug 18 07:42:27 2014
@@ -96,7 +96,7 @@ public class GenericDAO {
         this.helperInfo = helperInfo;
         this.modelFieldTypeReader = ModelFieldTypeReader.getModelFieldTypeReader(helperInfo.getHelperBaseName());
         this.datasource = EntityConfigUtil.getDatasource(helperInfo.getHelperBaseName());
-        this.executor = ExecutionPool.getExecutor(GENERIC_DAO_THREAD_GROUP, "OFBiz-entity-datasource(" + helperInfo.getHelperFullName() + ")", datasource.getMaxWorkerPoolSize(), false);
+        this.executor = ExecutionPool.getScheduledExecutor(GENERIC_DAO_THREAD_GROUP, "OFBiz-entity-datasource(" + helperInfo.getHelperFullName() + ")", datasource.getMaxWorkerPoolSize(), false);
     }
 
     public <T> Future<T> submitWork(Callable<T> callable) throws GenericEntityException {

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entity/src/org/ofbiz/entity/datasource/MemoryHelper.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entity/src/org/ofbiz/entity/datasource/MemoryHelper.java?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entity/src/org/ofbiz/entity/datasource/MemoryHelper.java (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entity/src/org/ofbiz/entity/datasource/MemoryHelper.java Mon Aug 18 07:42:27 2014
@@ -282,7 +282,7 @@ public class MemoryHelper implements Gen
         this.helperName = helperName;
         modelFieldTypeReader = ModelFieldTypeReader.getModelFieldTypeReader(helperName);
         Datasource datasourceInfo = EntityConfigUtil.getDatasource(helperName);
-        this.executor = ExecutionPool.getExecutor(MEMORY_HELPER_THREAD_GROUP, "OFBiz-entity-datasource(" + helperName + ")", datasourceInfo.getMaxWorkerPoolSize(), false);
+        this.executor = ExecutionPool.getScheduledExecutor(MEMORY_HELPER_THREAD_GROUP, "OFBiz-entity-datasource(" + helperName + ")", datasourceInfo.getMaxWorkerPoolSize(), false);
     }
 
     public String getHelperName() {

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entity/src/org/ofbiz/entity/util/EntityUtilProperties.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entity/src/org/ofbiz/entity/util/EntityUtilProperties.java?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entity/src/org/ofbiz/entity/util/EntityUtilProperties.java (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entity/src/org/ofbiz/entity/util/EntityUtilProperties.java Mon Aug 18 07:42:27 2014
@@ -55,15 +55,15 @@ public class EntityUtilProperties implem
         
         // find system property
         try {
-            GenericValue systemProperty = delegator.findOne("SystemProperty", UtilMisc.toMap("systemResourceId", resource, "systemPropertyId", name), false);
-            if (UtilValidate.isNotEmpty(systemProperty)) {
+            GenericValue systemProperty = delegator.findOne("SystemProperty", UtilMisc.toMap("systemResourceId", resource, "systemPropertyId", name), true);
+            if (systemProperty != null) {
                 String systemPropertyValue = systemProperty.getString("systemPropertyValue");
                 if (UtilValidate.isNotEmpty(systemPropertyValue)) {
                     return systemPropertyValue;
                 }
             }
         } catch (Exception e) {
-            Debug.logWarning("Could not get a sytem property for " + name + " : " + e.getMessage(), module);
+            Debug.logWarning("Could not get a system property for " + name + " : " + e.getMessage(), module);
         }
         return null;
     }

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entityext/src/org/ofbiz/entityext/eca/DelegatorEcaHandler.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entityext/src/org/ofbiz/entityext/eca/DelegatorEcaHandler.java?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entityext/src/org/ofbiz/entityext/eca/DelegatorEcaHandler.java (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entityext/src/org/ofbiz/entityext/eca/DelegatorEcaHandler.java Mon Aug 18 07:42:27 2014
@@ -22,7 +22,13 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import java.util.concurrent.FutureTask;
+import java.util.concurrent.atomic.AtomicReference;
 
+import org.ofbiz.base.concurrent.ExecutionPool;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.entity.Delegator;
@@ -42,7 +48,7 @@ public class DelegatorEcaHandler impleme
     protected Delegator delegator = null;
     protected String delegatorName = null;
     protected String entityEcaReaderName = null;
-    protected DispatchContext dctx = null;
+    protected AtomicReference<Future<DispatchContext>> dctx = new AtomicReference<Future<DispatchContext>>();
 
     public DelegatorEcaHandler() { }
 
@@ -50,12 +56,32 @@ public class DelegatorEcaHandler impleme
         this.delegator = delegator;
         this.delegatorName = delegator.getDelegatorName();
         this.entityEcaReaderName = EntityEcaUtil.getEntityEcaReaderName(delegator.getDelegatorBaseName());
-        this.dctx = EntityServiceFactory.getDispatchContext(delegator);
+
+        Callable<DispatchContext> creator = new Callable<DispatchContext>() {
+            public DispatchContext call() {
+                return EntityServiceFactory.getDispatchContext(DelegatorEcaHandler.this.delegator);
+            }
+        };
+        FutureTask<DispatchContext> futureTask = new FutureTask<DispatchContext>(creator);
+        if (this.dctx.compareAndSet(null, futureTask)) {
+            ExecutionPool.GLOBAL_BATCH.submit(futureTask);
+        }
 
         //preload the cache
         EntityEcaUtil.getEntityEcaCache(this.entityEcaReaderName);
     }
 
+    protected DispatchContext getDispatchContext() throws GenericEntityException {
+        Future<DispatchContext> future = this.dctx.get();
+        try {
+            return future != null ? future.get() : null;
+        } catch (ExecutionException e) {
+            throw (GenericEntityException) new GenericEntityException(e.getMessage()).initCause(e);
+        } catch (InterruptedException e) {
+            throw (GenericEntityException) new GenericEntityException(e.getMessage()).initCause(e);
+        }
+    }
+
     public Map<String, List<EntityEcaRule>> getEntityEventMap(String entityName) {
         Map<String, Map<String, List<EntityEcaRule>>> ecaCache = EntityEcaUtil.getEntityEcaCache(this.entityEcaReaderName);
         if (ecaCache == null) return null;
@@ -80,7 +106,7 @@ public class DelegatorEcaHandler impleme
         if (!rules.isEmpty() && Debug.verboseOn()) Debug.logVerbose("Running ECA (" + event + ").", module);
         Set<String> actionsRun = new TreeSet<String>();
         for (EntityEcaRule eca: rules) {
-            eca.eval(currentOperation, this.dctx, value, isError, actionsRun);
+            eca.eval(currentOperation, this.getDispatchContext(), value, isError, actionsRun);
         }
     }
 }

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaUtil.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaUtil.java?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaUtil.java (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaUtil.java Mon Aug 18 07:42:27 2014
@@ -90,13 +90,13 @@ public class EntityEcaUtil {
         List<Future<List<EntityEcaRule>>> futures = FastList.newInstance();
         for (Resource eecaResourceElement : entityEcaReaderInfo.getResourceList()) {
             ResourceHandler handler = new MainResourceHandler(EntityConfigUtil.ENTITY_ENGINE_XML_FILENAME, eecaResourceElement.getLoader(), eecaResourceElement.getLocation());
-            futures.add(ExecutionPool.GLOBAL_EXECUTOR.submit(createEcaLoaderCallable(handler)));
+            futures.add(ExecutionPool.GLOBAL_FORK_JOIN.submit(createEcaLoaderCallable(handler)));
         }
 
         // get all of the component resource eca stuff, ie specified in each ofbiz-component.xml file
         for (ComponentConfig.EntityResourceInfo componentResourceInfo: ComponentConfig.getAllEntityResourceInfos("eca")) {
             if (entityEcaReaderName.equals(componentResourceInfo.readerName)) {
-                futures.add(ExecutionPool.GLOBAL_EXECUTOR.submit(createEcaLoaderCallable(componentResourceInfo.createResourceHandler())));
+                futures.add(ExecutionPool.GLOBAL_FORK_JOIN.submit(createEcaLoaderCallable(componentResourceInfo.createResourceHandler())));
             }
         }
 

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/CreateValue.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/CreateValue.java?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/CreateValue.java (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/CreateValue.java Mon Aug 18 07:42:27 2014
@@ -68,9 +68,9 @@ public final class CreateValue extends M
         }
         try {
             if (createOrStore) {
-                value.getDelegator().createOrStore(value, doCacheClear);
+                value.getDelegator().createOrStore(value);
             } else {
-                value.getDelegator().create(value, doCacheClear);
+                value.getDelegator().create(value);
             }
         } catch (GenericEntityException e) {
             String errMsg = "Exception thrown while creating the \"" + valueFma +"\" GenericValue: " + e.getMessage();

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/RefreshValue.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/RefreshValue.java?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/RefreshValue.java (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/RefreshValue.java Mon Aug 18 07:42:27 2014
@@ -64,7 +64,7 @@ public final class RefreshValue extends 
         }
         boolean doCacheClear = !"false".equals(doCacheClearFse.expandString(methodContext.getEnvMap()));
         try {
-            value.getDelegator().refresh(value, doCacheClear);
+            value.getDelegator().refresh(value);
         } catch (GenericEntityException e) {
             String errMsg = "Exception thrown while refreshing value: " + e.getMessage();
             Debug.logWarning(e, errMsg, module);

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/RemoveList.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/RemoveList.java?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/RemoveList.java (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/RemoveList.java Mon Aug 18 07:42:27 2014
@@ -67,7 +67,7 @@ public final class RemoveList extends En
         boolean doCacheClear = !"false".equals(doCacheClearFse.expandString(methodContext.getEnvMap()));
         try {
             Delegator delegator = getDelegator(methodContext);
-            delegator.removeAll(values, doCacheClear);
+            delegator.removeAll(values);
         } catch (GenericEntityException e) {
             String errMsg = "Exception thrown while removing entities: " + e.getMessage();
             Debug.logWarning(e, errMsg, module);

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/RemoveRelated.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/RemoveRelated.java?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/RemoveRelated.java (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/RemoveRelated.java Mon Aug 18 07:42:27 2014
@@ -68,7 +68,7 @@ public final class RemoveRelated extends
         @Deprecated
         boolean doCacheClear = !"false".equals(doCacheClearFse.expandString(methodContext.getEnvMap()));
         try {
-            value.getDelegator().removeRelated(relationName, value, doCacheClear);
+            value.getDelegator().removeRelated(relationName, value);
         } catch (GenericEntityException e) {
             String errMsg = "Exception thrown while removing related entities: " + e.getMessage();
             Debug.logWarning(e, errMsg, module);

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/RemoveValue.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/RemoveValue.java?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/RemoveValue.java (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/RemoveValue.java Mon Aug 18 07:42:27 2014
@@ -64,7 +64,7 @@ public final class RemoveValue extends M
         @Deprecated
         boolean doCacheClear = !"false".equals(doCacheClearFse.expandString(methodContext.getEnvMap()));
         try {
-            value.getDelegator().removeValue(value, doCacheClear);
+            value.getDelegator().removeValue(value);
         } catch (GenericEntityException e) {
             String errMsg = "Exception thrown while removing entity value: " + e.getMessage();
             Debug.logWarning(e, errMsg, module);

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/StoreList.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/StoreList.java?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/StoreList.java (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/StoreList.java Mon Aug 18 07:42:27 2014
@@ -67,7 +67,7 @@ public final class StoreList extends Ent
         boolean doCacheClear = !"false".equals(doCacheClearFse.expandString(methodContext.getEnvMap()));
         try {
             Delegator delegator = getDelegator(methodContext);
-            delegator.storeAll(values, doCacheClear);
+            delegator.storeAll(values);
         } catch (GenericEntityException e) {
             String errMsg = "Exception thrown while storing entities: " + e.getMessage();
             Debug.logWarning(e, errMsg, module);

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/StoreValue.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/StoreValue.java?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/StoreValue.java (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/minilang/src/org/ofbiz/minilang/method/entityops/StoreValue.java Mon Aug 18 07:42:27 2014
@@ -64,7 +64,7 @@ public final class StoreValue extends Me
         @Deprecated
         boolean doCacheClear = !"false".equals(doCacheClearFse.expandString(methodContext.getEnvMap()));
         try {
-            value.getDelegator().store(value, doCacheClear);
+            value.getDelegator().store(value);
         } catch (GenericEntityException e) {
             String errMsg = "Exception thrown while storing entity value: " + e.getMessage();
             Debug.logWarning(e, errMsg, module);

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/service/src/org/ofbiz/service/DispatchContext.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/service/src/org/ofbiz/service/DispatchContext.java?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/service/src/org/ofbiz/service/DispatchContext.java (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/service/src/org/ofbiz/service/DispatchContext.java Mon Aug 18 07:42:27 2014
@@ -258,12 +258,12 @@ public class DispatchContext implements 
             }
             for (GlobalServices globalServices : globalServicesList) {
                 ResourceHandler handler = new MainResourceHandler(ServiceConfigUtil.SERVICE_ENGINE_XML_FILENAME, globalServices.getLoader(), globalServices.getLocation());
-                futures.add(ExecutionPool.GLOBAL_EXECUTOR.submit(createServiceReaderCallable(handler)));
+                futures.add(ExecutionPool.GLOBAL_FORK_JOIN.submit(createServiceReaderCallable(handler)));
             }
 
             // get all of the component resource model stuff, ie specified in each ofbiz-component.xml file
             for (ComponentConfig.ServiceResourceInfo componentResourceInfo: ComponentConfig.getAllServiceResourceInfos("model")) {
-                futures.add(ExecutionPool.GLOBAL_EXECUTOR.submit(createServiceReaderCallable(componentResourceInfo.createResourceHandler())));
+                futures.add(ExecutionPool.GLOBAL_FORK_JOIN.submit(createServiceReaderCallable(componentResourceInfo.createResourceHandler())));
             }
             for (Map<String, ModelService> servicesMap: ExecutionPool.getAllFutures(futures)) {
                 if (servicesMap != null) {

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/service/src/org/ofbiz/service/eca/ServiceEcaUtil.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/service/src/org/ofbiz/service/eca/ServiceEcaUtil.java?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/service/src/org/ofbiz/service/eca/ServiceEcaUtil.java (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/service/src/org/ofbiz/service/eca/ServiceEcaUtil.java Mon Aug 18 07:42:27 2014
@@ -77,12 +77,12 @@ public class ServiceEcaUtil {
         }
         for (ServiceEcas serviceEcas : serviceEcasList) {
             ResourceHandler handler = new MainResourceHandler(ServiceConfigUtil.SERVICE_ENGINE_XML_FILENAME, serviceEcas.getLoader(), serviceEcas.getLocation());
-            futures.add(ExecutionPool.GLOBAL_EXECUTOR.submit(createEcaLoaderCallable(handler)));
+            futures.add(ExecutionPool.GLOBAL_FORK_JOIN.submit(createEcaLoaderCallable(handler)));
         }
 
         // get all of the component resource eca stuff, ie specified in each ofbiz-component.xml file
         for (ComponentConfig.ServiceResourceInfo componentResourceInfo: ComponentConfig.getAllServiceResourceInfos("eca")) {
-            futures.add(ExecutionPool.GLOBAL_EXECUTOR.submit(createEcaLoaderCallable(componentResourceInfo.createResourceHandler())));
+            futures.add(ExecutionPool.GLOBAL_FORK_JOIN.submit(createEcaLoaderCallable(componentResourceInfo.createResourceHandler())));
         }
 
         for (List<ServiceEcaRule> handlerRules: ExecutionPool.getAllFutures(futures)) {

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/start/src/org/ofbiz/base/start/Start.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/start/src/org/ofbiz/base/start/Start.java?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/start/src/org/ofbiz/base/start/Start.java (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/start/src/org/ofbiz/base/start/Start.java Mon Aug 18 07:42:27 2014
@@ -40,6 +40,19 @@ import java.util.concurrent.atomic.Atomi
  */
 public final class Start {
 
+    /*
+     * This class implements a thread-safe state machine. The design is critical
+     * for reliable starting and stopping of the server.
+     * 
+     * The machine's current state and state changes must be encapsulated in this
+     * class. Client code may query the current state, but it may not change it.
+     * 
+     * This class uses a singleton pattern to guarantee that only one server instance
+     * is running in the VM. Client code retrieves the instance by using the getInstance()
+     * static method.
+     * 
+     */
+
     private static final Start instance = new Start();
 
     private static Command checkCommand(Command command, Command wanted) {
@@ -135,8 +148,8 @@ public final class Start {
     private final AtomicReference<ServerState> serverState = new AtomicReference<ServerState>(ServerState.STARTING);
     private Thread adminPortThread = null;
 
-    /** DO NOT REMOVE: This method is needed by commons-daemon in reflection mode. */
-    public Start() {
+    // DO NOT CHANGE THIS!
+    private Start() {
     }
 
     private void createListenerThread() throws StartupException {
@@ -164,7 +177,7 @@ public final class Start {
         return serverState.get();
     }
 
-    private void init(String[] args, boolean fullInit) throws StartupException {
+    void init(String[] args, boolean fullInit) throws StartupException {
         String globalSystemPropsFileName = System.getProperty("ofbiz.system.props");
         if (globalSystemPropsFileName != null) {
             FileInputStream stream = null;
@@ -298,7 +311,7 @@ public final class Start {
         return sendSocketCommand(Control.SHUTDOWN);
     }
 
-    private void shutdownServer() {
+    void shutdownServer() {
         ServerState currentState;
         do {
             currentState = this.serverState.get();
@@ -329,7 +342,7 @@ public final class Start {
      * 
      * @return <code>true</code> if all loaders were started.
      */
-    private boolean startStartLoaders() {
+    boolean startStartLoaders() {
         synchronized (this.loaders) {
             // start the loaders
             for (StartupLoader loader : this.loaders) {
@@ -357,28 +370,12 @@ public final class Start {
         }
     }
 
-    private void stopServer() {
+    void stopServer() {
         shutdownServer();
         System.exit(0);
     }
 
-    // ----------------------------------------------- //
-    // commons-daemon interface
-    // http://commons.apache.org/proper/commons-daemon/jsvc.html
-    // ----------------------------------------------- //
-
-    // DO NOT REMOVE: This method is needed by commons-daemon in reflection mode.
-    public void init(String[] args) throws StartupException {
-        init(args, true);
-    }
-
-    // DO NOT REMOVE: This method is needed by commons-daemon in reflection mode.
-    public void destroy() {
-        // FIXME: undo init() calls.
-    }
-
-    // DO NOT REMOVE: This method is needed by commons-daemon in reflection mode.
-    public void start() throws Exception {
+    void start() throws Exception {
         if (!startStartLoaders()) {
             if (this.serverState.get() == ServerState.STOPPING) {
                 return;
@@ -391,11 +388,6 @@ public final class Start {
         }
     }
 
-    // DO NOT REMOVE: This method is needed by commons-daemon in reflection mode.
-    public void stop() {
-        shutdownServer();
-    }
-
     // ----------------------------------------------- //
 
     private class AdminPortThread extends Thread {

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webapp/src/org/ofbiz/webapp/event/ServiceEventHandler.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webapp/src/org/ofbiz/webapp/event/ServiceEventHandler.java?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webapp/src/org/ofbiz/webapp/event/ServiceEventHandler.java (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webapp/src/org/ofbiz/webapp/event/ServiceEventHandler.java Mon Aug 18 07:42:27 2014
@@ -124,35 +124,38 @@ public class ServiceEventHandler impleme
             throw new EventHandlerException("Problems getting the service model");
         }
 
-        if (Debug.verboseOn()) Debug.logVerbose("[Processing]: SERVICE Event", module);
-        if (Debug.verboseOn()) Debug.logVerbose("[Using delegator]: " + dispatcher.getDelegator().getDelegatorName(), module);
+        if (Debug.verboseOn()) {
+            Debug.logVerbose("[Processing]: SERVICE Event", module);
+            Debug.logVerbose("[Using delegator]: " + dispatcher.getDelegator().getDelegatorName(), module);
+        }
 
-        // get the http upload configuration
-        String maxSizeStr = EntityUtilProperties.getPropertyValue("general.properties", "http.upload.max.size", "-1", dctx.getDelegator());
-        long maxUploadSize = -1;
-        try {
-            maxUploadSize = Long.parseLong(maxSizeStr);
-        } catch (NumberFormatException e) {
-            Debug.logError(e, "Unable to obtain the max upload size from general.properties; using default -1", module);
-            maxUploadSize = -1;
-        }
-        // get the http size threshold configuration - files bigger than this will be
-        // temporarly stored on disk during upload
-        String sizeThresholdStr = EntityUtilProperties.getPropertyValue("general.properties", "http.upload.max.sizethreshold", "10240", dctx.getDelegator());
-        int sizeThreshold = 10240; // 10K
-        try {
-            sizeThreshold = Integer.parseInt(sizeThresholdStr);
-        } catch (NumberFormatException e) {
-            Debug.logError(e, "Unable to obtain the threshold size from general.properties; using default 10K", module);
-            sizeThreshold = -1;
-        }
-        // directory used to temporarily store files that are larger than the configured size threshold
-        String tmpUploadRepository = EntityUtilProperties.getPropertyValue("general.properties", "http.upload.tmprepository", "runtime/tmp", dctx.getDelegator());
-        String encoding = request.getCharacterEncoding();
-        // check for multipart content types which may have uploaded items
         boolean isMultiPart = ServletFileUpload.isMultipartContent(request);
         Map<String, Object> multiPartMap = FastMap.newInstance();
         if (isMultiPart) {
+            // get the http upload configuration
+            String maxSizeStr = EntityUtilProperties.getPropertyValue("general.properties", "http.upload.max.size", "-1", dctx.getDelegator());
+            long maxUploadSize = -1;
+            try {
+                maxUploadSize = Long.parseLong(maxSizeStr);
+            } catch (NumberFormatException e) {
+                Debug.logError(e, "Unable to obtain the max upload size from general.properties; using default -1", module);
+                maxUploadSize = -1;
+            }
+            // get the http size threshold configuration - files bigger than this will be
+            // temporarly stored on disk during upload
+            String sizeThresholdStr = EntityUtilProperties.getPropertyValue("general.properties", "http.upload.max.sizethreshold", "10240", dctx.getDelegator());
+            int sizeThreshold = 10240; // 10K
+            try {
+                sizeThreshold = Integer.parseInt(sizeThresholdStr);
+            } catch (NumberFormatException e) {
+                Debug.logError(e, "Unable to obtain the threshold size from general.properties; using default 10K", module);
+                sizeThreshold = -1;
+            }
+            // directory used to temporarily store files that are larger than the configured size threshold
+            String tmpUploadRepository = EntityUtilProperties.getPropertyValue("general.properties", "http.upload.tmprepository", "runtime/tmp", dctx.getDelegator());
+            String encoding = request.getCharacterEncoding();
+            // check for multipart content types which may have uploaded items
+
             ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory(sizeThreshold, new File(tmpUploadRepository)));
 
             // create the progress listener and add it to the session

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/src/org/ofbiz/webtools/artifactinfo/ArtifactInfoFactory.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/src/org/ofbiz/webtools/artifactinfo/ArtifactInfoFactory.java?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/src/org/ofbiz/webtools/artifactinfo/ArtifactInfoFactory.java (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/src/org/ofbiz/webtools/artifactinfo/ArtifactInfoFactory.java Mon Aug 18 07:42:27 2014
@@ -152,7 +152,7 @@ public class ArtifactInfoFactory {
 
         Set<String> serviceNames = this.getDispatchContext().getAllServiceNames();
         for (String serviceName: serviceNames) {
-            futures.add(ExecutionPool.GLOBAL_EXECUTOR.submit(prepareTaskForServiceAnalysis(serviceName)));
+            futures.add(ExecutionPool.GLOBAL_FORK_JOIN.submit(prepareTaskForServiceAnalysis(serviceName)));
         }
         // how to get all Service ECAs to prepare? don't worry about it, will be populated from service load, ie all ECAs for each service
 
@@ -160,7 +160,7 @@ public class ArtifactInfoFactory {
         ExecutionPool.getAllFutures(futures);
         futures = new ArrayList<Future<Void>>();
         for (ComponentConfig componentConfig: componentConfigs) {
-            futures.add(ExecutionPool.GLOBAL_EXECUTOR.submit(prepareTaskForComponentAnalysis(componentConfig)));
+            futures.add(ExecutionPool.GLOBAL_FORK_JOIN.submit(prepareTaskForComponentAnalysis(componentConfig)));
         }
         ExecutionPool.getAllFutures(futures);
         Debug.logInfo("Artifact info objects loaded.", module);

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/artifactinfo/ArtifactInfo.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/artifactinfo/ArtifactInfo.ftl?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/artifactinfo/ArtifactInfo.ftl (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/artifactinfo/ArtifactInfo.ftl Mon Aug 18 07:42:27 2014
@@ -28,12 +28,12 @@ under the License.
   </div>
 </#if>
 
-<#if !artifactInfo?exists>
+<#if !artifactInfo??>
 
     <#-- add form here to specify artifact info name. -->
     <div>
       <form name="ArtifactInfoByName" method="post" action="<@o...@ofbizUrl>" class="basic-form">
-        Search Names/Locations: <input type="text" name="name" value="${parameters.name?if_exists}" size="40"/>
+        Search Names/Locations: <input type="text" name="name" value="${parameters.name!}" size="40"/>
         <select name="type">
           <option></option>
           <option>entity</option>
@@ -49,8 +49,8 @@ under the License.
     </div>
     <div>
       <form name="ArtifactInfoByNameAndType" method="post" action="<@o...@ofbizUrl>" class="basic-form">
-        <div>Name: <input type="text" name="name" value="${parameters.name?if_exists}" size="40"/></div>
-        <div>Location: <input type="text" name="location" value="${parameters.location?if_exists}" size="60"/></div>
+        <div>Name: <input type="text" name="name" value="${parameters.name!}" size="40"/></div>
+        <div>Location: <input type="text" name="location" value="${parameters.location!}" size="60"/></div>
         <div>Type:
           <select name="type">
             <option>entity</option>
@@ -78,7 +78,7 @@ under the License.
 <#else/>
 
     <h1>${uiLabelMap.WebtoolsArtifactInfo} (${artifactInfo.getDisplayType()}): ${artifactInfo.getDisplayName()}</h1>
-    <#if artifactInfo.getLocationURL()?exists>
+    <#if artifactInfo.getLocationURL()??>
         <div>Defined in: <a href="${artifactInfo.getLocationURL()}">${artifactInfo.getLocationURL()}</a></div>
     </#if>
 
@@ -87,41 +87,41 @@ under the License.
         <h2>Entity Fields</h2>
         <table>
         <#list artifactInfo.modelEntity.getFieldsUnmodifiable() as modelField>
-            <tr><td>${modelField.getName()}<#if modelField.getIsPk()>*</#if></td><td>${modelField.getType()}</td><td>${modelField.getDescription()?if_exists}</td></tr>
+            <tr><td>${modelField.getName()}<#if modelField.getIsPk()>*</#if></td><td>${modelField.getType()}</td><td>${modelField.getDescription()!}</td></tr>
         </#list>
         </table>
 
         <div>
         <h2>Entities Related (One)</h2>
-        <#list artifactInfo.getEntitiesRelatedOne()?if_exists as entityArtifactInfo>
+        <#list artifactInfo.getEntitiesRelatedOne()! as entityArtifactInfo>
             <@displayEntityArtifactInfo entityArtifactInfo=entityArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Entities Related (Many)</h2>
-        <#list artifactInfo.getEntitiesRelatedMany()?if_exists as entityArtifactInfo>
+        <#list artifactInfo.getEntitiesRelatedMany()! as entityArtifactInfo>
             <@displayEntityArtifactInfo entityArtifactInfo=entityArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Services Using This Entity</h2>
-        <#list artifactInfo.getServicesUsingEntity()?if_exists as serviceArtifactInfo>
+        <#list artifactInfo.getServicesUsingEntity()! as serviceArtifactInfo>
             <@displayServiceArtifactInfo serviceArtifactInfo=serviceArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Forms Using This Entity</h2>
-        <#list artifactInfo.getFormsUsingEntity()?if_exists as formWidgetArtifactInfo>
+        <#list artifactInfo.getFormsUsingEntity()! as formWidgetArtifactInfo>
             <@displayFormWidgetArtifactInfo formWidgetArtifactInfo=formWidgetArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Screens Using This Entity</h2>
-        <#list artifactInfo.getScreensUsingEntity()?if_exists as screenWidgetArtifactInfo>
+        <#list artifactInfo.getScreensUsingEntity()! as screenWidgetArtifactInfo>
             <@displayScreenWidgetArtifactInfo screenWidgetArtifactInfo=screenWidgetArtifactInfo/>
         </#list>
         </div>
@@ -130,75 +130,75 @@ under the License.
         <h2>Service Info</h2>
         <div>&nbsp;Description: ${artifactInfo.modelService.description}</div>
         <div>&nbsp;Run (${artifactInfo.modelService.engineName}): ${artifactInfo.modelService.location} :: ${artifactInfo.modelService.invoke}</div>
-        <div>&nbsp;Impl Location: <a href="${artifactInfo.getImplementationLocationURL()?if_exists}">${artifactInfo.getImplementationLocationURL()?if_exists}</a></div>
+        <div>&nbsp;Impl Location: <a href="${artifactInfo.getImplementationLocationURL()!}">${artifactInfo.getImplementationLocationURL()!}</a></div>
         <h2>Service Parameters</h2>
         <table>
             <tr><td>Name</td><td>Type</td><td>Optional</td><td>Mode</td><td>Entity.field</td></tr>
         <#list artifactInfo.modelService.getAllParamNames() as paramName>
             <#assign modelParam = artifactInfo.modelService.getParam(paramName)/>
-            <tr><td>${modelParam.getName()}<#if modelParam.getInternal()> (internal)</#if></td><td>${modelParam.getType()}</td><td><#if modelParam.isOptional()>optional<#else/>required</#if></td><td>${modelParam.getMode()}</td><td>${modelParam.getEntityName()?if_exists}.${modelParam.getFieldName()?if_exists}</td></tr>
+            <tr><td>${modelParam.getName()}<#if modelParam.getInternal()> (internal)</#if></td><td>${modelParam.getType()}</td><td><#if modelParam.isOptional()>optional<#else/>required</#if></td><td>${modelParam.getMode()}</td><td>${modelParam.getEntityName()!}.${modelParam.getFieldName()!}</td></tr>
         </#list>
         </table>
 
         <div>
         <h2>Entities Used By This Service</h2>
-        <#list artifactInfo.getEntitiesUsedByService()?if_exists as entityArtifactInfo>
+        <#list artifactInfo.getEntitiesUsedByService()! as entityArtifactInfo>
             <@displayEntityArtifactInfo entityArtifactInfo=entityArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Services Calling This Service</h2>
-        <#list artifactInfo.getServicesCallingService()?if_exists as serviceArtifactInfo>
+        <#list artifactInfo.getServicesCallingService()! as serviceArtifactInfo>
             <@displayServiceArtifactInfo serviceArtifactInfo=serviceArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Services Called By This Service</h2>
-        <#list artifactInfo.getServicesCalledByService()?if_exists as serviceArtifactInfo>
+        <#list artifactInfo.getServicesCalledByService()! as serviceArtifactInfo>
             <@displayServiceArtifactInfo serviceArtifactInfo=serviceArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Service ECA Rules Triggered By This Service</h2>
-        <#list artifactInfo.getServiceEcaRulesTriggeredByService()?if_exists as serviceEcaArtifactInfo>
+        <#list artifactInfo.getServiceEcaRulesTriggeredByService()! as serviceEcaArtifactInfo>
             <@displayServiceEcaArtifactInfo serviceEcaArtifactInfo=serviceEcaArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Service ECA Rules Calling This Service</h2>
-        <#list artifactInfo.getServiceEcaRulesCallingService()?if_exists as serviceEcaArtifactInfo>
+        <#list artifactInfo.getServiceEcaRulesCallingService()! as serviceEcaArtifactInfo>
             <@displayServiceEcaArtifactInfo serviceEcaArtifactInfo=serviceEcaArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Forms Calling This Service</h2>
-        <#list artifactInfo.getFormsCallingService()?if_exists as formWidgetArtifactInfo>
+        <#list artifactInfo.getFormsCallingService()! as formWidgetArtifactInfo>
             <@displayFormWidgetArtifactInfo formWidgetArtifactInfo=formWidgetArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Forms Based On This Service</h2>
-        <#list artifactInfo.getFormsBasedOnService()?if_exists as formWidgetArtifactInfo>
+        <#list artifactInfo.getFormsBasedOnService()! as formWidgetArtifactInfo>
             <@displayFormWidgetArtifactInfo formWidgetArtifactInfo=formWidgetArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Screens Calling This Service</h2>
-        <#list artifactInfo.getScreensCallingService()?if_exists as screenWidgetArtifactInfo>
+        <#list artifactInfo.getScreensCallingService()! as screenWidgetArtifactInfo>
             <@displayScreenWidgetArtifactInfo screenWidgetArtifactInfo=screenWidgetArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Requests with Events That Call This Service</h2>
-        <#list artifactInfo.getRequestsWithEventCallingService()?if_exists as controllerRequestArtifactInfo>
+        <#list artifactInfo.getRequestsWithEventCallingService()! as controllerRequestArtifactInfo>
             <@displayControllerRequestArtifactInfo controllerRequestArtifactInfo=controllerRequestArtifactInfo/>
         </#list>
         </div>
@@ -206,48 +206,48 @@ under the License.
     <#elseif artifactInfo.getType() == "form"/>
         <div>
         <h2>Form Extended by This Form</h2>
-        <#if artifactInfo.getFormThisFormExtends()?exists>
+        <#if artifactInfo.getFormThisFormExtends()??>
             <@displayFormWidgetArtifactInfo formWidgetArtifactInfo=artifactInfo.getFormThisFormExtends()/>
         </#if>
         </div>
 
         <div>
         <h2>Entities Used in This Form</h2>
-        <#list artifactInfo.getEntitiesUsedInForm()?if_exists as entityArtifactInfo>
+        <#list artifactInfo.getEntitiesUsedInForm()! as entityArtifactInfo>
             <@displayEntityArtifactInfo entityArtifactInfo=entityArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Services Used in This Form</h2>
-        <#list artifactInfo.getServicesUsedInForm()?if_exists as serviceArtifactInfo>
+        <#list artifactInfo.getServicesUsedInForm()! as serviceArtifactInfo>
             <@displayServiceArtifactInfo serviceArtifactInfo=serviceArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Forms Extending This Form</h2>
-        <#list artifactInfo.getFormsExtendingThisForm()?if_exists as formWidgetArtifactInfo>
+        <#list artifactInfo.getFormsExtendingThisForm()! as formWidgetArtifactInfo>
             <@displayFormWidgetArtifactInfo formWidgetArtifactInfo=formWidgetArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Screens Including This Form</h2>
-        <#list artifactInfo.getScreensIncludingThisForm()?if_exists as screenWidgetArtifactInfo>
+        <#list artifactInfo.getScreensIncludingThisForm()! as screenWidgetArtifactInfo>
             <@displayScreenWidgetArtifactInfo screenWidgetArtifactInfo=screenWidgetArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Controller Requests That Are Linked to in This Form</h2>
-        <#list artifactInfo.getRequestsLinkedToInForm()?if_exists as controllerRequestArtifactInfo>
+        <#list artifactInfo.getRequestsLinkedToInForm()! as controllerRequestArtifactInfo>
             <@displayControllerRequestArtifactInfo controllerRequestArtifactInfo=controllerRequestArtifactInfo/>
         </#list>
         </div>
         <div>
         <h2>Controller Requests That Are Targeted By This Form</h2>
-        <#list artifactInfo.getRequestsTargetedByForm()?if_exists as controllerRequestArtifactInfo>
+        <#list artifactInfo.getRequestsTargetedByForm()! as controllerRequestArtifactInfo>
             <@displayControllerRequestArtifactInfo controllerRequestArtifactInfo=controllerRequestArtifactInfo/>
         </#list>
         </div>
@@ -255,55 +255,55 @@ under the License.
     <#elseif artifactInfo.getType() == "screen"/>
         <div>
         <h2>Entities Used in This Screen</h2>
-        <#list artifactInfo.getEntitiesUsedInScreen()?if_exists as entityArtifactInfo>
+        <#list artifactInfo.getEntitiesUsedInScreen()! as entityArtifactInfo>
             <@displayEntityArtifactInfo entityArtifactInfo=entityArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Services Used in This Screen</h2>
-        <#list artifactInfo.getServicesUsedInScreen()?if_exists as serviceArtifactInfo>
+        <#list artifactInfo.getServicesUsedInScreen()! as serviceArtifactInfo>
             <@displayServiceArtifactInfo serviceArtifactInfo=serviceArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Forms Included in This Screen</h2>
-        <#list artifactInfo.getFormsIncludedInScreen()?if_exists as formWidgetArtifactInfo>
+        <#list artifactInfo.getFormsIncludedInScreen()! as formWidgetArtifactInfo>
             <@displayFormWidgetArtifactInfo formWidgetArtifactInfo=formWidgetArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Screens Include in This Screen</h2>
-        <#list artifactInfo.getScreensIncludedInScreen()?if_exists as screenWidgetArtifactInfo>
+        <#list artifactInfo.getScreensIncludedInScreen()! as screenWidgetArtifactInfo>
             <@displayScreenWidgetArtifactInfo screenWidgetArtifactInfo=screenWidgetArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Screens Including This Screen</h2>
-        <#list artifactInfo.getScreensIncludingThisScreen()?if_exists as screenWidgetArtifactInfo>
+        <#list artifactInfo.getScreensIncludingThisScreen()! as screenWidgetArtifactInfo>
             <@displayScreenWidgetArtifactInfo screenWidgetArtifactInfo=screenWidgetArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Controller Requests That Are Linked to in This Screen</h2>
-        <#list artifactInfo.getRequestsLinkedToInScreen()?if_exists as controllerRequestArtifactInfo>
+        <#list artifactInfo.getRequestsLinkedToInScreen()! as controllerRequestArtifactInfo>
             <@displayControllerRequestArtifactInfo controllerRequestArtifactInfo=controllerRequestArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Controller Views Referring to This Screen</h2>
-        <#list artifactInfo.getViewsReferringToScreen()?if_exists as controllerViewArtifactInfo>
+        <#list artifactInfo.getViewsReferringToScreen()! as controllerViewArtifactInfo>
             <@displayControllerViewArtifactInfo controllerViewArtifactInfo=controllerViewArtifactInfo/>
         </#list>
         </div>
 
     <#elseif artifactInfo.getType() == "request"/>
-        <#if artifactInfo.getServiceCalledByRequestEvent()?exists>
+        <#if artifactInfo.getServiceCalledByRequestEvent()??>
             <div>
             <h2>Service Called by Request Event</h2>
             <@displayServiceArtifactInfo serviceArtifactInfo=artifactInfo.getServiceCalledByRequestEvent()/>
@@ -312,41 +312,41 @@ under the License.
 
         <div>
         <h2>Forms Referring to This Request</h2>
-        <#list artifactInfo.getFormInfosReferringToRequest()?if_exists as formWidgetArtifactInfo>
+        <#list artifactInfo.getFormInfosReferringToRequest()! as formWidgetArtifactInfo>
             <@displayFormWidgetArtifactInfo formWidgetArtifactInfo=formWidgetArtifactInfo/>
         </#list>
         </div>
         <div>
         <h2>Forms Targeting This Request</h2>
-        <#list artifactInfo.getFormInfosTargetingRequest()?if_exists as formWidgetArtifactInfo>
+        <#list artifactInfo.getFormInfosTargetingRequest()! as formWidgetArtifactInfo>
             <@displayFormWidgetArtifactInfo formWidgetArtifactInfo=formWidgetArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Screens Referring to This Request</h2>
-        <#list artifactInfo.getScreenInfosReferringToRequest()?if_exists as screenWidgetArtifactInfo>
+        <#list artifactInfo.getScreenInfosReferringToRequest()! as screenWidgetArtifactInfo>
             <@displayScreenWidgetArtifactInfo screenWidgetArtifactInfo=screenWidgetArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Requests That Are Responses to This Request</h2>
-        <#list artifactInfo.getRequestsThatAreResponsesToThisRequest()?if_exists as controllerRequestArtifactInfo>
+        <#list artifactInfo.getRequestsThatAreResponsesToThisRequest()! as controllerRequestArtifactInfo>
             <@displayControllerRequestArtifactInfo controllerRequestArtifactInfo=controllerRequestArtifactInfo/>
         </#list>
         </div>
         
         <div>
         <h2>Requests That This Request is a Responses To</h2>
-        <#list artifactInfo.getRequestsThatThisRequestIsResponsTo()?if_exists as controllerRequestArtifactInfo>
+        <#list artifactInfo.getRequestsThatThisRequestIsResponsTo()! as controllerRequestArtifactInfo>
             <@displayControllerRequestArtifactInfo controllerRequestArtifactInfo=controllerRequestArtifactInfo/>
         </#list>
         </div>
 
         <div>
         <h2>Controller Views That Are Responses to This Request</h2>
-        <#list artifactInfo.getViewsThatAreResponsesToThisRequest()?if_exists as controllerViewArtifactInfo>
+        <#list artifactInfo.getViewsThatAreResponsesToThisRequest()! as controllerViewArtifactInfo>
             <@displayControllerViewArtifactInfo controllerViewArtifactInfo=controllerViewArtifactInfo/>
         </#list>
         </div>
@@ -354,12 +354,12 @@ under the License.
     <#elseif artifactInfo.getType() == "view"/>
         <div>
         <h2>Requests That This View is a Responses To</h2>
-        <#list artifactInfo.getRequestsThatThisViewIsResponseTo()?if_exists as controllerRequestArtifactInfo>
+        <#list artifactInfo.getRequestsThatThisViewIsResponseTo()! as controllerRequestArtifactInfo>
             <@displayControllerRequestArtifactInfo controllerRequestArtifactInfo=controllerRequestArtifactInfo/>
         </#list>
         </div>
 
-        <#if artifactInfo.getScreenCalledByThisView()?exists>
+        <#if artifactInfo.getScreenCalledByThisView()??>
             <div>
             <h2>Screen Called by This View</h2>
             <@displayScreenWidgetArtifactInfo screenWidgetArtifactInfo=artifactInfo.getScreenCalledByThisView()/>

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/cert/viewbrowsercerts.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/cert/viewbrowsercerts.ftl?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/cert/viewbrowsercerts.ftl (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/cert/viewbrowsercerts.ftl Mon Aug 18 07:42:27 2014
@@ -18,9 +18,9 @@ under the License.
 -->
 
 <#assign isSecure = request.isSecure()/>
-<#assign clientCerts = request.getAttribute("javax.servlet.request.X509Certificate")?if_exists/>
+<#assign clientCerts = request.getAttribute("javax.servlet.request.X509Certificate")!/>
 <#if (!clientCerts?has_content)>
-    <#assign clientCerts = request.getAttribute("javax.net.ssl.peer_certificates")?if_exists/>
+    <#assign clientCerts = request.getAttribute("javax.net.ssl.peer_certificates")!/>
 </#if>
 
 <div class="screenlet">
@@ -31,7 +31,7 @@ under the License.
     <#if (clientCerts?has_content)>
       <table class="basic-table">
         <#list clientCerts as cert>
-          <#assign certString = Static["org.ofbiz.base.util.KeyStoreUtil"].certToString(cert)?if_exists>
+          <#assign certString = Static["org.ofbiz.base.util.KeyStoreUtil"].certToString(cert)!>
           <#if (certString?has_content)>
             <tr>
               <td class="label">${uiLabelMap.WebtoolsCertsCert}</td>

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/datafile/viewdatafile.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/datafile/viewdatafile.ftl?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/datafile/viewdatafile.ftl (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/datafile/viewdatafile.ftl Mon Aug 18 07:42:27 2014
@@ -23,7 +23,7 @@ under the License.
         <table class="basic-table" cellspacing="0">
           <tr>
             <td class="label">${uiLabelMap.WebtoolsDataDefinitionFileName}</td>
-            <td><input name="DEFINITION_LOCATION" type="text" size="60" value="${parameters.DEFINITION_LOCATION?if_exists}" /></td>
+            <td><input name="DEFINITION_LOCATION" type="text" size="60" value="${parameters.DEFINITION_LOCATION!}" /></td>
             <td><span class="label">${uiLabelMap.WebtoolsDataIsUrl}</span><input type="checkbox" name="DEFINITION_IS_URL"<#if parameters.DEFINITION_IS_URL?has_content> checked="checked"</#if> /></td>
           </tr>
           <tr>
@@ -34,28 +34,28 @@ under the License.
                   <option value=""></option>
                   <#list definitionNames as oneDefinitionName>
                     boolean isSelected = definitionName?? && definitionName.equals(oneDefinitionName);
-                    <option value="${oneDefinitionName}" <#if parameters.DEFINITION_NAME?exists && parameters.DEFINITION_NAME == oneDefinitionName> selected="selected" </#if>>${oneDefinitionName}</option>
+                    <option value="${oneDefinitionName}" <#if parameters.DEFINITION_NAME?? && parameters.DEFINITION_NAME == oneDefinitionName> selected="selected" </#if>>${oneDefinitionName}</option>
                   </#list>
                 </select>
               <#else>
-                <input name="DEFINITION_NAME" type="text" size="30" value="${definitionName?if_exists}" />
+                <input name="DEFINITION_NAME" type="text" size="30" value="${definitionName!}" />
               </#if>
             </td>
             <td>&nbsp;</td>
           </tr>
           <tr>
             <td class="label">${uiLabelMap.WebtoolsDataFileName}</td>
-            <td><input name="DATAFILE_LOCATION" type="text" size="60" value="${parameters.DATAFILE_LOCATION?if_exists}" /></td>
+            <td><input name="DATAFILE_LOCATION" type="text" size="60" value="${parameters.DATAFILE_LOCATION!}" /></td>
             <td><span class="label">${uiLabelMap.WebtoolsDataIsUrl}</span><input type="checkbox" name="DATAFILE_IS_URL"<#if parameters.DATAFILE_IS_URL?has_content> checked="checked"</#if> /></td>
           </tr>
           <tr>
             <td class="label">${uiLabelMap.WebtoolsDataSaveToFile}</td>
-            <td><input name="DATAFILE_SAVE" type="text" size="60" value="${parameters.DATAFILE_SAVE?if_exists}"/></td>
+            <td><input name="DATAFILE_SAVE" type="text" size="60" value="${parameters.DATAFILE_SAVE!}"/></td>
             <td>&nbsp;</td>
           </tr>
           <tr>
             <td class="label">${uiLabelMap.WebtoolsDataSaveToXml}</td>
-            <td><input name="ENTITYXML_FILE_SAVE" type="text" size="60" value="${parameters.ENTITYXML_FILE_SAVE?if_exists}" /></td>
+            <td><input name="ENTITYXML_FILE_SAVE" type="text" size="60" value="${parameters.ENTITYXML_FILE_SAVE!}" /></td>
             <td>&nbsp;</td>
           </tr>
           <tr>

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/ConnectionPoolStatus.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/ConnectionPoolStatus.ftl?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/ConnectionPoolStatus.ftl (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/ConnectionPoolStatus.ftl Mon Aug 18 07:42:27 2014
@@ -18,7 +18,7 @@ under the License.
 -->
 <h1>Connection Pool Status</h1>
 
-<#assign groups = delegator.getModelGroupReader().getGroupNames(delegator.getDelegatorName())?if_exists/>
+<#assign groups = delegator.getModelGroupReader().getGroupNames(delegator.getDelegatorName())!/>
 <table class="basic-table light-grid hover-bar">
     <tr class="header-row">
         <td>Helper Name</td>
@@ -34,20 +34,20 @@ under the License.
     <#assign alt_row = false>
     <#if (groups?has_content)>
         <#list groups as group>
-            <#assign helper = delegator.getGroupHelperName(group)?if_exists/>
+            <#assign helper = delegator.getGroupHelperName(group)!/>
             <#if (helper?has_content)>
-                <#assign dataSourceInfo = Static["org.ofbiz.entity.connection.DBCPConnectionFactory"].getDataSourceInfo(helper)?if_exists/>
+                <#assign dataSourceInfo = Static["org.ofbiz.entity.connection.DBCPConnectionFactory"].getDataSourceInfo(helper)!/>
                 <#if (dataSourceInfo?has_content)>
                     <tr>
                         <td>${helper}</td>
-                        <td>${dataSourceInfo.poolNumActive?if_exists}</td>
-                        <td>${dataSourceInfo.poolNumIdle?if_exists}</td>
-                        <td>${dataSourceInfo.poolNumTotal?if_exists}</td>
-                        <td>${dataSourceInfo.poolMaxActive?if_exists}</td>
-                        <td>${dataSourceInfo.poolMaxIdle?if_exists}</td>
-                        <td>${dataSourceInfo.poolMinIdle?if_exists}</td>
-                        <td>${dataSourceInfo.poolMinEvictableIdleTimeMillis?if_exists}</td>
-                        <td>${dataSourceInfo.poolMaxWait?if_exists}</td>
+                        <td>${dataSourceInfo.poolNumActive!}</td>
+                        <td>${dataSourceInfo.poolNumIdle!}</td>
+                        <td>${dataSourceInfo.poolNumTotal!}</td>
+                        <td>${dataSourceInfo.poolMaxActive!}</td>
+                        <td>${dataSourceInfo.poolMaxIdle!}</td>
+                        <td>${dataSourceInfo.poolMinIdle!}</td>
+                        <td>${dataSourceInfo.poolMinEvictableIdleTimeMillis!}</td>
+                        <td>${dataSourceInfo.poolMaxWait!}</td>
                     </tr>
                 </#if>
             </#if>

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityExportAll.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityExportAll.ftl?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityExportAll.ftl (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityExportAll.ftl Mon Aug 18 07:42:27 2014
@@ -28,7 +28,7 @@ under the License.
 </#if>
 <hr />
 <form method="post" action="<@o...@ofbizUrl>">
-    ${uiLabelMap.WebtoolsOutputDirectory}: <input type="text" size="60" name="outpath" value="${outpath?if_exists}" /><br />
+    ${uiLabelMap.WebtoolsOutputDirectory}: <input type="text" size="60" name="outpath" value="${outpath!}" /><br />
     ${uiLabelMap.CommonFromDate}: <@htmlTemplate.renderDateTimeField name="fromDate" event="" action="" className="" alert="" title="Format: yyyy-MM-dd HH:mm:ss.SSS" value="" size="25" maxlength="30" id="fromDate" dateType="date" shortDateInput=false timeDropdownParamName="" defaultDateTimeString="" localizedIconTitle="" timeDropdown="" timeHourName="" classString="" hour1="" hour2="" timeMinutesName="" minutes="" isTwelveHour="" ampmName="" amSelected="" pmSelected="" compositeType="" formName=""/><br/>
     ${uiLabelMap.WebtoolsTimeoutSeconds}: <input type="text" size="6" value="${txTimeout?default('7200')}" name="txTimeout"/><br />
     <br />

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityImport.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityImport.ftl?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityImport.ftl (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityImport.ftl Mon Aug 18 07:42:27 2014
@@ -23,14 +23,14 @@ under the License.
 
   <form method="post" action="<@o...@ofbizUrl>">
     ${uiLabelMap.WebtoolsAbsoluteFileNameOrUrl}:<br />
-    <input type="text" size="60" name="filename" value="${filename?if_exists}"/><br />
+    <input type="text" size="60" name="filename" value="${filename!}"/><br />
     ${uiLabelMap.WebtoolsAbsoluteFTLFilename}:<br />
-    <input type="text" size="40" name="fmfilename" value="${fmfilename?if_exists}"/><br />
-    <input type="checkbox" name="isUrl" <#if isUrl?exists>checked="checked"</#if>/>${uiLabelMap.WebtoolsIsURL}<br />
-    <input type="checkbox" name="mostlyInserts" <#if mostlyInserts?exists>checked="checked"</#if>/>${uiLabelMap.WebtoolsMostlyInserts}<br />
-    <input type="checkbox" name="maintainTimeStamps" <#if keepStamps?exists>checked="checked"</#if>/>${uiLabelMap.WebtoolsMaintainTimestamps}<br />
-    <input type="checkbox" name="createDummyFks" <#if createDummyFks?exists>checked="checked"</#if>/>${uiLabelMap.WebtoolsCreateDummyFks}<br />
-    <input type="checkbox" name="checkDataOnly" <#if checkDataOnly?exists>checked="checked"</#if>/>${uiLabelMap.WebtoolsCheckDataOnly}<br />
+    <input type="text" size="40" name="fmfilename" value="${fmfilename!}"/><br />
+    <input type="checkbox" name="isUrl" <#if isUrl??>checked="checked"</#if>/>${uiLabelMap.WebtoolsIsURL}<br />
+    <input type="checkbox" name="mostlyInserts" <#if mostlyInserts??>checked="checked"</#if>/>${uiLabelMap.WebtoolsMostlyInserts}<br />
+    <input type="checkbox" name="maintainTimeStamps" <#if keepStamps??>checked="checked"</#if>/>${uiLabelMap.WebtoolsMaintainTimestamps}<br />
+    <input type="checkbox" name="createDummyFks" <#if createDummyFks??>checked="checked"</#if>/>${uiLabelMap.WebtoolsCreateDummyFks}<br />
+    <input type="checkbox" name="checkDataOnly" <#if checkDataOnly??>checked="checked"</#if>/>${uiLabelMap.WebtoolsCheckDataOnly}<br />
     ${uiLabelMap.WebtoolsTimeoutSeconds}:<input type="text" size="6" value="${txTimeoutStr?default("7200")}" name="txTimeout"/><br />
     <div class="button-bar"><input type="submit" value="${uiLabelMap.WebtoolsImportFile}"/></div>
   </form>
@@ -39,7 +39,7 @@ under the License.
     <textarea rows="20" cols="85" name="fulltext">${fulltext?default("<entity-engine-xml>\n</entity-engine-xml>")}</textarea>
     <div class="button-bar"><input type="submit" value="${uiLabelMap.WebtoolsImportText}"/></div>
   </form>
-  <#if messages?exists>
+  <#if messages??>
       <hr />
       <h3>${uiLabelMap.WebtoolsResults}:</h3>
       <#list messages as message>

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityImportDir.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityImportDir.ftl?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityImportDir.ftl (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityImportDir.ftl Mon Aug 18 07:42:27 2014
@@ -23,17 +23,17 @@ under the License.
 
   <form method="post" action="<@o...@ofbizUrl>">
     ${uiLabelMap.WebtoolsAbsolutePath}:<br />
-    <input type="text" size="60" name="path" value="${path?if_exists}"/><br />
-    <input type="checkbox" name="mostlyInserts" <#if mostlyInserts?exists>checked="checked"</#if>/>${uiLabelMap.WebtoolsMostlyInserts}<br />
-    <input type="checkbox" name="maintainTimeStamps" <#if keepStamps?exists>checked="checked"</#if>/>${uiLabelMap.WebtoolsMaintainTimestamps}<br />
-    <input type="checkbox" name="createDummyFks" <#if createDummyFks?exists>checked="checked"</#if>/>${uiLabelMap.WebtoolsCreateDummyFks}<br />
-    <input type="checkbox" name="deleteFiles" <#if (deleteFiles?exists)>checked="checked"</#if>/>${uiLabelMap.WebtoolsDeleteFiles}<br />
-    <input type="checkbox" name="checkDataOnly" <#if checkDataOnly?exists>checked="checked"</#if>/>${uiLabelMap.WebtoolsCheckDataOnly}<br />
+    <input type="text" size="60" name="path" value="${path!}"/><br />
+    <input type="checkbox" name="mostlyInserts" <#if mostlyInserts??>checked="checked"</#if>/>${uiLabelMap.WebtoolsMostlyInserts}<br />
+    <input type="checkbox" name="maintainTimeStamps" <#if keepStamps??>checked="checked"</#if>/>${uiLabelMap.WebtoolsMaintainTimestamps}<br />
+    <input type="checkbox" name="createDummyFks" <#if createDummyFks??>checked="checked"</#if>/>${uiLabelMap.WebtoolsCreateDummyFks}<br />
+    <input type="checkbox" name="deleteFiles" <#if (deleteFiles??)>checked="checked"</#if>/>${uiLabelMap.WebtoolsDeleteFiles}<br />
+    <input type="checkbox" name="checkDataOnly" <#if checkDataOnly??>checked="checked"</#if>/>${uiLabelMap.WebtoolsCheckDataOnly}<br />
     ${uiLabelMap.WebtoolsTimeoutSeconds}:<input type="text" size="6" value="${txTimeoutStr?default("7200")}" name="txTimeout"/><br />
     ${uiLabelMap.WebtoolsPause}:<input type="text" size="6" value="${filePauseStr?default("0")}" name="filePause"/><br />
     <div class="button-bar"><input type="submit" value="${uiLabelMap.WebtoolsImportFile}"/></div>
   </form>
-  <#if messages?exists>
+  <#if messages??>
     <hr />
     <h1>${uiLabelMap.WebtoolsResults}:</h1>
     <#list messages as message>

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityImportReaders.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityImportReaders.ftl?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityImportReaders.ftl (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityImportReaders.ftl Mon Aug 18 07:42:27 2014
@@ -23,14 +23,14 @@ under the License.
   <form method="post" action="<@o...@ofbizUrl>">
     Enter Readers (comma separated, no spaces; from entityengine.xml and ofbiz-component.xml files; common ones include seed,ext,demo):<br />
     <input type="text" size="60" name="readers" value="${readers?default("seed")}"/><br />
-    <input type="checkbox" name="mostlyInserts" <#if mostlyInserts?exists>checked="checked"</#if> value="true"/>${uiLabelMap.WebtoolsMostlyInserts}<br />
-    <input type="checkbox" name="maintainTimeStamps" <#if keepStamps?exists>checked="checked"</#if> value="true"/>${uiLabelMap.WebtoolsMaintainTimestamps}<br />
-    <input type="checkbox" name="createDummyFks" <#if createDummyFks?exists>checked="checked"</#if> value="true"/>${uiLabelMap.WebtoolsCreateDummyFks}<br />
-    <input type="checkbox" name="checkDataOnly" <#if checkDataOnly?exists>checked="checked"</#if> value="true"/>${uiLabelMap.WebtoolsCheckDataOnly}<br />
+    <input type="checkbox" name="mostlyInserts" <#if mostlyInserts??>checked="checked"</#if> value="true"/>${uiLabelMap.WebtoolsMostlyInserts}<br />
+    <input type="checkbox" name="maintainTimeStamps" <#if keepStamps??>checked="checked"</#if> value="true"/>${uiLabelMap.WebtoolsMaintainTimestamps}<br />
+    <input type="checkbox" name="createDummyFks" <#if createDummyFks??>checked="checked"</#if> value="true"/>${uiLabelMap.WebtoolsCreateDummyFks}<br />
+    <input type="checkbox" name="checkDataOnly" <#if checkDataOnly??>checked="checked"</#if> value="true"/>${uiLabelMap.WebtoolsCheckDataOnly}<br />
     ${uiLabelMap.WebtoolsTimeoutSeconds}:<input type="text" size="6" value="${txTimeoutStr?default("7200")}" name="txTimeout"/><br />
     <div class="button-bar"><input type="submit" value="${uiLabelMap.WebtoolsImport}"/></div>
   </form>
-  <#if messages?exists>
+  <#if messages??>
       <hr />
       <h3>${uiLabelMap.WebtoolsResults}:</h3>
       <#list messages as message>

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityMaint.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityMaint.ftl?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityMaint.ftl (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityMaint.ftl Mon Aug 18 07:42:27 2014
@@ -22,11 +22,11 @@ under the License.
           <select name="filterByGroupName">
              <option value="">${uiLabelMap.CommonAll}</option>
              <#list entityGroups as group>
-                <option value="${group}" <#if filterByGroupName?exists><#if group = filterByGroupName>selected="selected"</#if></#if>>${group}</option>
+                <option value="${group}" <#if filterByGroupName??><#if group = filterByGroupName>selected="selected"</#if></#if>>${group}</option>
              </#list>
           </select>
           <b>${uiLabelMap.WebtoolsEntityName}:</b>
-          <input type= "text" name= "filterByEntityName" value="${parameters.filterByEntityName?if_exists}"/>
+          <input type= "text" name= "filterByEntityName" value="${parameters.filterByEntityName!}"/>
           <input type="submit" value="${uiLabelMap.CommonApply}"/>
        </form>
     </div>

Modified: ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityRefList.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityRefList.ftl?rev=1618554&r1=1618553&r2=1618554&view=diff
==============================================================================
--- ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityRefList.ftl (original)
+++ ofbiz/branches/OFBIZ-5312-ofbiz-ecommerce-seo-2013-10-23/framework/webtools/webapp/webtools/entity/EntityRefList.ftl Mon Aug 18 07:42:27 2014
@@ -67,7 +67,7 @@ under the License.
                     <#if forstatic>
                         <a href="<@o...@ofbizUrl>" target="entityFrame">${entity.entityName}</a>
                     <#else>
-                        <a href="<@o...@ofbizUrl>" target="entityFrame">${entity.entityName}</a>
+                        <a href="<@o...@ofbizUrl>" target="entityFrame">${entity.entityName}</a>
                     </#if>
                     <br />
                 </#list>