Author: lgawron
Date: Tue Feb 22 05:01:08 2005
New Revision: 154841
URL: http://svn.apache.org/viewcvs?view=rev&rev=154841
Log:
turns out that that <jx:set var="tags" value="${java.util.HashMap()}"/> worked
not due to Jexl mechanisms
but due to Rhino features (AFAIU NativeJavaClass executed as function with some
parameters passed returned an appropriate object)
In order to keep backward functionality NativeJavaPackage has to be registered
as property of template object model.
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/components/expression/jexl/JexlExpression.java
cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/JXTemplateGeneratorTestCase.java
cocoon/trunk/src/java/org/apache/cocoon/environment/TemplateObjectModelHelper.java
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/components/expression/jexl/JexlExpression.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/components/expression/jexl/JexlExpression.java?view=diff&r1=154840&r2=154841
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/components/expression/jexl/JexlExpression.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/components/expression/jexl/JexlExpression.java
Tue Feb 22 05:01:08 2005
@@ -19,13 +19,12 @@
import java.util.Iterator;
import java.util.Map;
-import org.apache.commons.jexl.JexlContext;
-import org.apache.commons.jexl.util.Introspector;
-import org.apache.commons.jexl.util.introspection.Info;
import org.apache.cocoon.components.expression.Expression;
-import org.apache.cocoon.components.expression.ExpressionCompiler;
import org.apache.cocoon.components.expression.ExpressionContext;
import org.apache.cocoon.components.expression.ExpressionException;
+import org.apache.commons.jexl.JexlContext;
+import org.apache.commons.jexl.util.Introspector;
+import org.apache.commons.jexl.util.introspection.Info;
public class JexlExpression implements Expression {
Modified:
cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/JXTemplateGeneratorTestCase.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/JXTemplateGeneratorTestCase.java?view=diff&r1=154840&r2=154841
==============================================================================
---
cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/JXTemplateGeneratorTestCase.java
(original)
+++
cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/JXTemplateGeneratorTestCase.java
Tue Feb 22 05:01:08 2005
@@ -21,8 +21,8 @@
import org.apache.avalon.framework.logger.ConsoleLogger;
import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.cocoon.components.flow.FlowHelper;
import org.apache.cocoon.SitemapComponentTestCase;
+import org.apache.cocoon.components.flow.FlowHelper;
public class JXTemplateGeneratorTestCase extends SitemapComponentTestCase {
private Logger logger = new ConsoleLogger(ConsoleLogger.LEVEL_WARN);
Modified:
cocoon/trunk/src/java/org/apache/cocoon/environment/TemplateObjectModelHelper.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/environment/TemplateObjectModelHelper.java?view=diff&r1=154840&r2=154841
==============================================================================
---
cocoon/trunk/src/java/org/apache/cocoon/environment/TemplateObjectModelHelper.java
(original)
+++
cocoon/trunk/src/java/org/apache/cocoon/environment/TemplateObjectModelHelper.java
Tue Feb 22 05:01:08 2005
@@ -22,9 +22,14 @@
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.components.flow.FlowHelper;
+import
org.apache.cocoon.components.flow.javascript.fom.FOM_JavaScriptFlowHelper;
import org.apache.commons.jxpath.DynamicPropertyHandler;
import org.apache.commons.jxpath.JXPathBeanInfo;
import org.apache.commons.jxpath.JXPathIntrospector;
+import org.mozilla.javascript.Context;
+import org.mozilla.javascript.NativeJavaPackage;
+import org.mozilla.javascript.Scriptable;
+import org.mozilla.javascript.ScriptableObject;
/**
@@ -129,6 +134,30 @@
fillContext(contextObject, map);
}
+ Object javaPkg = FOM_JavaScriptFlowHelper.getJavaPackage(objectModel);
+ Object pkgs = FOM_JavaScriptFlowHelper.getPackages(objectModel);
+
+ if ( javaPkg != null && pkgs != null ) {
+ map.put( "Packages", javaPkg );
+ map.put( "java", pkgs );
+ } else {
+ Context cx = Context.enter();
+ try {
+ //FIXME: we surely need to share the scope as this operation
is time consuming
+ Scriptable scope = cx.initStandardObjects();
+
+ final String JAVA_PACKAGE = "JavaPackage";
+ ClassLoader cl =
Thread.currentThread().getContextClassLoader();
+ Scriptable newPackages = new NativeJavaPackage( "", cl );
+ newPackages.setParentScope( scope );
+ newPackages.setPrototype( ScriptableObject.getClassPrototype(
scope,
+
JAVA_PACKAGE ) );
+ map.put( "Packages", newPackages );
+ map.put( "java", ScriptableObject.getProperty( scope, "java" )
);
+ } finally {
+ Context.exit();
+ }
+ }
return map;
}