Author: jonesde
Date: Sun May 18 14:57:07 2008
New Revision: 657645
URL: http://svn.apache.org/viewvc?rev=657645&view=rev
Log:
Added groovy support, implemented by Joe Eckard in jira #OFBIZ-1779; includes
an example EditProductFeatures.groovy file showing somatures.groovy file
showing some nice groovy syntax features, especially for Maps and Lists, though
it isn't on by default yet in this commit, ie bsh still used
Added:
ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/EditProductFeatures.groovy
ofbiz/trunk/framework/base/lib/scripting/groovy-1.5.6.jar (with props)
ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/GroovyUtil.java
(with props)
Modified:
ofbiz/trunk/framework/base/config/cache.properties
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java
Added:
ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/EditProductFeatures.groovy
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/EditProductFeatures.groovy?rev=657645&view=auto
==============================================================================
---
ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/EditProductFeatures.groovy
(added)
+++
ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/EditProductFeatures.groovy
Sun May 18 14:57:07 2008
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.ofbiz.entity.*;
+
+
+productFeatureAndAppls = delegator.findByAnd('ProductFeatureAndAppl',
+ ['productId' : productId],
+ ['sequenceNum', 'productFeatureApplTypeId', 'productFeatureTypeId',
'description']);
+if (productFeatureAndAppls != null) {
+ context.put('productFeatureAndAppls', productFeatureAndAppls);
+}
+
+productFeatureCategories = delegator.findAll('ProductFeatureCategory',
['description']);
+if (productFeatureCategories != null) {
+ context.put('productFeatureCategories', productFeatureCategories);
+}
+
+productFeatureApplTypes = delegator.findAll('ProductFeatureApplType',
['description']);
+if (productFeatureApplTypes != null) {
+ context.put('productFeatureApplTypes', productFeatureApplTypes);
+}
+
+productFeatureGroups = delegator.findAll('ProductFeatureGroup',
['description']);
+if (productFeatureGroups != null) {
+ context.put('productFeatureGroups', productFeatureGroups);
+}
+
+productFeatureTypes = delegator.findAll('ProductFeatureType', ['description']);
+if (productFeatureTypes != null) {
+ context.put('productFeatureTypes', productFeatureTypes);
+}
+
Modified: ofbiz/trunk/framework/base/config/cache.properties
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/config/cache.properties?rev=657645&r1=657644&r2=657645&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/config/cache.properties (original)
+++ ofbiz/trunk/framework/base/config/cache.properties Sun May 18 14:57:07 2008
@@ -71,6 +71,8 @@
script.BshLocationParsedCache.expireTime=10000
script.BshBsfParsedCache.expireTime=10000
+script.GroovyLocationParsedCache.expireTime=10000
+
webapp.BsfEvents.expireTime=10000
webapp.JasperReportsCompiled.expireTime=10000
webapp.ControllerConfig.expireTime=10000
Added: ofbiz/trunk/framework/base/lib/scripting/groovy-1.5.6.jar
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/lib/scripting/groovy-1.5.6.jar?rev=657645&view=auto
==============================================================================
Binary file - no diff available.
Propchange: ofbiz/trunk/framework/base/lib/scripting/groovy-1.5.6.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/GroovyUtil.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/GroovyUtil.java?rev=657645&view=auto
==============================================================================
--- ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/GroovyUtil.java
(added)
+++ ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/GroovyUtil.java Sun
May 18 14:57:07 2008
@@ -0,0 +1,78 @@
+package org.ofbiz.base.util;
+
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Map;
+import java.util.Set;
+
+import org.ofbiz.base.location.FlexibleLocation;
+import org.ofbiz.base.util.cache.UtilCache;
+
+import groovy.lang.Binding;
+import groovy.lang.GroovyShell;
+import groovy.lang.Script;
+import org.codehaus.groovy.control.CompilationFailedException;
+
+
+/**
+ * GroovyUtil - Groovy Utilities
+ *
+ * @version $Rev$
+ */
+public class GroovyUtil {
+
+ public static final String module = GroovyUtil.class.getName();
+
+ public static UtilCache<String, Script> parsedScripts = new
UtilCache<String, Script>("script.GroovyLocationParsedCache", 0, 0, false);
+
+
+ private static GroovyShell getShell(Map context) {
+
+ Binding binding = new Binding();
+ if (context != null) {
+ Set keySet = context.keySet();
+ for (Object key : keySet) {
+ binding.setVariable((String) key, context.get(key));
+ }
+
+ // include the context itself in for easier access in the scripts
+ binding.setVariable("context", context);
+ }
+
+ ClassLoader classLoader =
Thread.currentThread().getContextClassLoader();
+ return new GroovyShell(classLoader, binding);
+ }
+
+ public static Object runScriptAtLocation(String location, Map context)
throws GeneralException {
+
+ try {
+
+ Script script = parsedScripts.get(location);
+ if (script == null) {
+
+ URL scriptUrl = FlexibleLocation.resolveLocation(location);
+ GroovyShell shell = getShell(context);
+ script = shell.parse(scriptUrl.openStream(),
scriptUrl.getFile());
+ if (Debug.verboseOn()) {
+ Debug.logVerbose("Caching Groovy script at: " + location,
module);
+ }
+ parsedScripts.put(location, script);
+ }
+
+ return script.run();
+
+ } catch (MalformedURLException e) {
+ String errMsg = "Error loading Groovy script at [" + location +
"]: " + e.toString();
+ throw new GeneralException(errMsg, e);
+ } catch (IOException e) {
+ String errMsg = "Error loading Groovy script at [" + location +
"]: " + e.toString();
+ throw new GeneralException(errMsg, e);
+ } catch (CompilationFailedException e) {
+ String errMsg = "Error loading Groovy script at [" + location +
"]: " + e.toString();
+ throw new GeneralException(errMsg, e);
+ }
+ }
+
+}
Propchange:
ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/GroovyUtil.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/GroovyUtil.java
------------------------------------------------------------------------------
svn:keywords = "Date Rev Author URL Id"
Propchange:
ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/GroovyUtil.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java?rev=657645&r1=657644&r2=657645&view=diff
==============================================================================
---
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java
(original)
+++
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java
Sun May 18 14:57:07 2008
@@ -36,6 +36,7 @@
import org.ofbiz.base.util.BshUtil;
import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.GeneralException;
+import org.ofbiz.base.util.GroovyUtil;
import org.ofbiz.base.util.ObjectType;
import org.ofbiz.base.util.StringUtil;
import org.ofbiz.base.util.UtilMisc;
@@ -391,6 +392,12 @@
} catch (GeneralException e) {
throw new GeneralException("Error running BSH script at
location [" + location + "]", e);
}
+ } else if (location.endsWith(".groovy")) {
+ try {
+ GroovyUtil.runScriptAtLocation(location, context);
+ } catch (GeneralException e) {
+ throw new GeneralException("Error running Groovy script at
location [" + location + "]", e);
+ }
} else if (location.contains(".xml#")) {
String xmlResource =
ScreenFactory.getResourceNameFromCombined(location);
String methodName =
ScreenFactory.getScreenNameFromCombined(location);