cocoon-docs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Cocoon Wiki] Update of "WorkaroundForCOCOON-1579" by ReynaldoPorras
Date Thu, 21 Feb 2008 17:40:05 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Cocoon Wiki" for change notification.

The following page has been changed by ReynaldoPorras:
http://wiki.apache.org/cocoon/WorkaroundForCOCOON-1579

------------------------------------------------------------------------------
  [http://issues.apache.org/jira/browse/COCOON-1579 COCOON-1579] describes a continuation
issue when using rhino 1.6 in cocoon 2.1.10+.
  The workaround is to replace rhino 1.6 with the previous version. Before compiling cocoon,
please follow this steps:
- 
+ For Cocoon 2.1:
   1. Download [http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/lib/core/rhino1.5r4-continuations-R26.jar?revision=226968&pathrev=479984
rhino1.5r4-continuations-R26.jar] and locate it on "$COCOON/lib/core" folder.
   2. Delete js-1.6R5.jar from "$COCOON/lib/core".
   3. Change the jar location (<lib/>) for rhino on $COCOON/lib/jars.xml from
@@ -51, +51 @@

  
  5. Then you can build cocoon by running the script (build.bat or build.sh)
  
+ For Cocoon 2.2:
+ 
+ 1.Download [http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/lib/core/rhino1.5r4-continuations-R26.jar?revision=226968&pathrev=479984
rhino1.5r4-continuations-R26.jar] and deploy it in your local maven repo with the next command

+ {{{
+  mvn deploy:deploy-file -Durl=file:///m2-repo -DrepositoryId=some.id -Dfile=/path-to-rhino-jar/rhino1.5r4-continuations-R26.jar
-DgroupId=rhino -DartifactId=js -Dversion=1.5r4-continuations  -Dpackaging=jar
+ }}}
+ 2. Change the rhino's dependency to one recently created, in "$COCOON/parent/pom.xml"
+    From
+ {{{
+ <dependency>
+  <groupId>rhino</groupId>
+  <artifactId>js</artifactId>
+  <version>1.6R7</version>
+ </dependency>
+ }}}
+    to
+ {{{
+ <dependency>
+  <groupId>rhino</groupId>
+  <artifactId>js</artifactId>
+  <version>1.5r4-continuations</version>
+ </dependency>
+ }}}
+ 3. Change the code to use rhino 1.5r4-continuations api. These are the changes:
+ 
+  3.1.$COCOON/blocks/cocoon-flowscript/cocoon-flowscript-impl/src/main/java/org/apache/
+ cocoon/components/flow/javascript/LocationTrackingDebugger.java
+   3.1.1. Add the following import:
+ {{{
+ import org.mozilla.javascript.NativeFunction;
+ }}}
+   3.1.2.Change line 54
+ {{{
+ if (ex.sourceName() != null) {
+     return new LocationImpl(ex.getName(), ex.sourceName(), ex.lineNumber(), ex.columnNumber());
+ }}}
+    to
+ {{{
+ if (ex.getSourceName() != null) {
+     return new LocationImpl(ex.getName(), ex.getSourceName(), ex.getLineNumber(), ex.getColumnNumber());
+ }}}
+   3.1.3. Change line 82
+ {{{
+ public void handleCompilationDone(Context cx, DebuggableScript fnOrScript, String source)
+ }}}
+    to
+ {{{
+ public void handleCompilationDone(Context cx, DebuggableScript fnOrScript, StringBuffer
source)
+ }}}
+   3.1.4. Change line 86
+ {{{
+ public DebugFrame getFrame(Context cx, DebuggableScript fnOrScript)
+ }}}
+    to
+ {{{
+ public DebugFrame enterFrame(Context cx, Scriptable scope, Scriptable thisObj, Object[]
args, DebuggableScript fnOrScript)
+ }}}
+   3.1.5. Change line 127
+ {{{
+ public void onLineChange(Context cx, int lineNumber)
+ }}}
+    to
+ {{{
+ public void onLineChange(Context cx, int lineNumber, boolean breakpoint)
+ }}}
+   3.1.6. Change in line 138
+ {{{
+ if (script.isFunction()) {
+     name = script.getFunctionName();
+ } else {
+     name = "[script]";
+ }
+ }}}
+    to
+ {{{
+ Scriptable obj = script.getScriptable();
+ name = obj instanceof NativeFunction ? ((NativeFunction)obj).getFunctionName() : "Top-level
script";
+ if (name == null || name.length() == 0) {
+     name = "[unnamed]";
+ }
+ }}}
+ 
+  3.2.$COCOON/blocks/cocoon-flowscript/cocoon-flowscript-impl/src/main/java/org/apache/
+ cocoon/components/flow/javascript/fom/FOM_Cocoon.java:
+   3.2.1. Change line 324
+ {{{
+ return org.mozilla.javascript.Context.javaToJS(currentCall.webAppContext.getBean(id),  
                                                    getParentScope());
+ }}}
+    to
+ {{{
+ return currentCall.webAppContext.getBean(id);
+ }}}
+   3.2.2.Change line 375
+ {{{
+ return org.mozilla.javascript.Context.javaToJS(obj, getParentScope());
+ }}}
+    to
+ {{{
+ return obj;
+ }}}
+   3.2.3. Change line 489
+ {{{
+ result = org.mozilla.javascript.Context.javaToJS(result, start);
+ }}}
+    to
+ {{{
+ result = wrap(start, result, null);
+ }}}
+  3.3.$COCOON/blocks/cocoon-flowscript/cocoon-flowscript-impl/src/main/java/org/apache/
+ cocoon/components/flow/javascript/fom/FOM_JavaScriptInterpreter.java:
+ 
+   3.3.1.Add the import:
+ {{{
+ import java.io.StringReader;
+ }}}
+   3.3.2. Change line 500
+ {{{
+ Script compiledScript = cx.compileReader(reader, src.getURI(), 1, null);
+ }}}
+    to
+ {{{
+ Script compiledScript = cx.compileReader(scope, reader, src.getURI(), 1, null);
+ }}}
+   3.3.3. Change line 593
+ {{{
+ fun = context.compileString(funName, null, 1, null).exec (context, thrScope);
+ }}}
+    to
+ {{{
+ fun = context.compileReader (thrScope, new StringReader(funName), null, 1, null).exec (context,
thrScope);
+ }}}
+ 
+  3.4.$COCOON/blocks/cocoon-flowscript/cocoon-flowscript-impl/src/main/java/org/apache/
+ cocoon/components/flow/javascript/fom/FOM_WebContinuation.java
+   3.4.1. Change in line 104
+ {{{
+ return org.mozilla.javascript.Context.javaToJS(
+                 wk.getAttribute(name),
+                 getParentScope());
+ }}}
+    to
+ {{{
+ return org.mozilla.javascript.Context.toObject(
+                 wk.getAttribute(name),
+                 getParentScope());
+ }}}
+   3.4.2. Change in line 118
+ {{{
+ return org.mozilla.javascript.Context.javaToJS(
+                 wk.getAttributeNames(),
+                 getParentScope());
+ }}}
+    to
+ {{{
+ return org.mozilla.javascript.Context.toObject(
+                 wk.getAttributeNames(),
+                 getParentScope());
+ }}}
+ 
+  3.5.$COCOON/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/
+ forms/util/JavaScriptHelper.java, Uncomment line 65
+ {{{
+ // To use rhino1.5r4-continuations-R26.jar as a workaround for COCOON-1579: Uncomment the
next line.
+ // getRootScope(null), //scope
+ }}}
+   It should look like this:
+ {{{
+ // To use rhino1.5r4-continuations-R26.jar as a workaround for COCOON-1579: Uncomment the
next line.
+ getRootScope(null), //scope
+ }}}
+ 
+  3.6.$COCOON/blocks/cocoon-scratchpad/cocoon-scraptchpad-impl/src/main/java/org/apache/
+ cocoon/components/flow/javascript/fom/AO_FOM_JavaScriptInterpreter.java
+   3.6.1. Change in line 554 
+ {{{
+ compiledScript = cx.compileReader(reader, src.getURI(), 1, null );
+    to
+ {{{
+ compiledScript = cx.compileReader(scope, reader, src.getURI(), 1, null);
+ }}}
+   3.6.2. Change in line 561
+ {{{
+ compiledScript = cx.compileReader(reader, src.getURI() + INTERCEPTION_POSTFIX, 1, null );
+ }}}
+    to
+ {{{
+ compiledScript = cx.compileReader(scope, reader, src.getURI()  + INTERCEPTION_POSTFIX, 1,
null);
+ }}}
+ 
+   3.6.3. Change in line 628
+ {{{
+ if (ee.sourceName() != null) {
+     Context.reportRuntimeError(msg,
+                                ee.sourceName(),
+                                ee.lineNumber(),
+                                ee.lineSource(),
+                                ee.columnNumber());
+ }}}
+    to
+ {{{
+ if (ee.getSourceName() != null) {
+     Context.reportRuntimeError(msg,
+                                ee.getSourceName(),
+                                ee.getLineNumber(),
+                                ee.getLineSource(),
+                                ee.getColumnNumber());
+ }}}
+   3.6.4. Change line 710
+ {{{
+ if (ee.sourceName() != null) {
+     Context.reportRuntimeError(msg,
+                                ee.sourceName(),
+                                ee.lineNumber(),
+                                ee.lineSource(),
+                                ee.columnNumber());
+ }}}
+    to
+ {{{
+ if (ee.getSourceName() != null) {
+     Context.reportRuntimeError(msg,
+                                ee.getSourceName(),
+                                ee.getLineNumber(),
+                                ee.getLineSource(),
+                                ee.getColumnNumber());
+ }}}
+ 
+  3.7.$COCOON/block/cocoon-xsp/cocoon-xsp-impl/src/main/java/org/apache/cocoon/
+ components/language/markup/xsp/JSGenerator.java, change in line 111
+ {{{
+ script = context.compileReader(new FileReader(file), file.toString(), 1, null);
+ }}}
+   to
+ {{{
+ script = context.compileReader(global, new FileReader(file), file.toString(), 1, null);
+ }}}
+ 
+  3.8.$COCOON/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/
+ java/org/apache/cocoon/el/impl/javascript/JavaScriptExpression.java
+   3.8.1. Add the following import
+ {{{
+ import java.io.StringReader;
+ }}}
+   3.8.2. Change in line 48
+ {{{
+ this.script = ctx.compileString(getExpression(), "", 1, null);
+ }}}
+    to
+ {{{
+ this.script = ctx.compileReader(getScope(rootScope), new StringReader(getExpression()),
"", 1, null);
+ } catch (Exception e) {
+    if (e instanceof RuntimeException) {
+         throw (RuntimeException)e;
+    } else{
+         throw new RuntimeException("Runtime exception.", e);
+    }
+ }}}
+ 
+  3.9. $COCOON/core/cocoon-expression-language/cocoon-expression-language-impl/src/test/
+ java/org/apache/cocoon/el/impl/javascript/JavaScriptTestCase.java change line 40,
+ {{{
+ assertEquals(new Integer(3), result);
+ }}}
+   to
+ {{{
+ assertEquals(new Double(3), result);
+ }}}
+ 
+ 4. Build cocoon with maven ( mvn -P allblocks clean install )
+ 

Mime
View raw message