stephan 2004/06/28 01:28:38
Modified: src/test/org/apache/cocoon SitemapComponentTestCase.java
src/blocks/javaflow/java/org/apache/cocoon/components/flow/java
ContinuationClassLoader.java
src/blocks/javaflow/java/org/apache/cocoon/components/flow/javascript
JavaScriptHelper.java
src/blocks/javaflow/test/org/apache/cocoon/components/flow/java/test
InnerContinuable.java JavaFlowTestCase.xtest
Added:
src/blocks/javaflow/test/org/apache/cocoon/components/flow/java/test
LinkerContinuable.java PrimitivesFlow.java
Log:
Further investigation into the LinkageError, no cause found until now.
Revision Changes Path
1.8 +7 -1
cocoon-2.1/src/test/org/apache/cocoon/SitemapComponentTestCase.java
Index: SitemapComponentTestCase.java
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/test/org/apache/cocoon/SitemapComponentTestCase.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- SitemapComponentTestCase.java 23 Jun 2004 09:16:31 -0000 1.7
+++ SitemapComponentTestCase.java 28 Jun 2004 08:28:38 -0000 1.8
@@ -178,6 +178,8 @@
* @param parameters Action parameters.
*/
public final Map act(String type, String source, Parameters parameters)
throws Exception {
+
+ redirector.reset();
ComponentSelector selector = null;
Action action = null;
@@ -410,6 +412,8 @@
public String callFunction(String type, String source, String function,
Map params) throws Exception {
+ redirector.reset();
+
ComponentSelector selector = null;
Interpreter interpreter = null;
SourceResolver resolver = null;
@@ -450,6 +454,8 @@
}
public String callContinuation(String type, String source, String id,
Map params) throws Exception {
+
+ redirector.reset();
ComponentSelector selector = null;
Interpreter interpreter = null;
1.13 +18 -2
cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/components/flow/java/ContinuationClassLoader.java
Index: ContinuationClassLoader.java
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/components/flow/java/ContinuationClassLoader.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- ContinuationClassLoader.java 26 Jun 2004 18:29:30 -0000 1.12
+++ ContinuationClassLoader.java 28 Jun 2004 08:28:38 -0000 1.13
@@ -113,6 +113,9 @@
protected synchronized Class loadClass(String name, boolean resolve)
throws ClassNotFoundException {
+
+ System.out.println("load class "+name);
+
// this finds also classes, which are already transformed, via
findLoadedClass
if (debug)
System.out.println("load class "+name);
@@ -141,6 +144,8 @@
private byte[] transform(JavaClass javaclazz) throws
ClassNotFoundException {
// make all methods of java class continuable
+ System.out.println("transforming flow class " +
javaclazz.getClassName());
+
ClassGen clazz = new ClassGen(javaclazz);
ConstantPoolGen cp = clazz.getConstantPool();
@@ -169,6 +174,7 @@
if (isValid(method)) {
// analyse the code of the method to create the frame
// information about every instruction
+
System.out.println("analyse " + methods[i].getName());
ControlFlowGraph cfg = new ControlFlowGraph(method);
if (debug)
@@ -180,7 +186,6 @@
System.out.println("rewriting " + methods[i].getName());
rewrite(method, cfg);
- // make last optional check for consistency
clazz.replaceMethod(methods[i], method.getMethod());
}
}
@@ -206,6 +211,17 @@
}
clazz.addInterface(CONTINUATIONCAPABLE_CLASS);
+
+ byte[] changed = clazz.getJavaClass().getBytes();
+ try {
+ java.io.FileOutputStream out = new
java.io.FileOutputStream(clazz.getClassName() + ".rewritten");
+ out.write(changed);
+ out.flush();
+ out.close();
+ } catch (java.io.IOException ioe) {
+ ioe.printStackTrace();
+ }
+
return clazz.getJavaClass().getBytes();
}
1.3 +4 -1
cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/components/flow/javascript/JavaScriptHelper.java
Index: JavaScriptHelper.java
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/components/flow/javascript/JavaScriptHelper.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- JavaScriptHelper.java 26 Jun 2004 18:29:30 -0000 1.2
+++ JavaScriptHelper.java 28 Jun 2004 08:28:38 -0000 1.3
@@ -45,6 +45,7 @@
import org.mozilla.javascript.EvaluatorException;
import org.mozilla.javascript.Function;
import org.mozilla.javascript.JavaScriptException;
+import org.mozilla.javascript.NativeGlobal;
import org.mozilla.javascript.NativeJavaClass;
import org.mozilla.javascript.NativeJavaPackage;
import org.mozilla.javascript.PropertyException;
@@ -197,6 +198,8 @@
JXPathContextReferenceImpl.addNodePointerFactory(new
ScriptablePointerFactory());
try {
+ NativeGlobal.init(context, scope, false);
+
scope = new Global(context);
// Access to Cocoon internal objects
errorReporter = new JSErrorReporter(getLogger());
1.2 +3 -0
cocoon-2.1/src/blocks/javaflow/test/org/apache/cocoon/components/flow/java/test/InnerContinuable.java
Index: InnerContinuable.java
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/blocks/javaflow/test/org/apache/cocoon/components/flow/java/test/InnerContinuable.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- InnerContinuable.java 26 Jun 2004 18:29:30 -0000 1.1
+++ InnerContinuable.java 28 Jun 2004 08:28:38 -0000 1.2
@@ -12,6 +12,9 @@
}
public void doInnerClassTest2() {
+
+ LinkerContinuable.init(null, null, false);
+
InnerClass ic = new InnerClass();
ic.sendResult2();
}
1.4 +1 -0
cocoon-2.1/src/blocks/javaflow/test/org/apache/cocoon/components/flow/java/test/JavaFlowTestCase.xtest
Index: JavaFlowTestCase.xtest
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/blocks/javaflow/test/org/apache/cocoon/components/flow/java/test/JavaFlowTestCase.xtest,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JavaFlowTestCase.xtest 26 Jun 2004 18:29:30 -0000 1.3
+++ JavaFlowTestCase.xtest 28 Jun 2004 08:28:38 -0000 1.4
@@ -80,6 +80,7 @@
<flow-interpreters default="java">
<component-instance
class="org.apache.cocoon.components.flow.java.JavaInterpreter" name="java"
debug="true">
<include class="org.apache.cocoon.components.flow.java.test.Inner*"/>
+ <include class="org.apache.cocoon.components.flow.java.test.Linker*"/>
</component-instance>
</flow-interpreters>
1.1
cocoon-2.1/src/blocks/javaflow/test/org/apache/cocoon/components/flow/java/test/LinkerContinuable.java
Index: LinkerContinuable.java
===================================================================
/*
* Created on 27.06.2004
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
package org.apache.cocoon.components.flow.java.test;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.IdFunction;
import org.mozilla.javascript.IdFunctionMaster;
import org.mozilla.javascript.JavaScriptException;
import org.mozilla.javascript.Scriptable;
/**
* @author stephan
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
public class LinkerContinuable extends IdFunction {
/**
* @param master
* @param name
* @param id
*/
public LinkerContinuable(IdFunctionMaster master, String name, int id) {
super(master, name, id);
// TODO Auto-generated constructor stub
}
public static void init(Context cx, Scriptable scope, boolean sealed) {
}
/* (non-Javadoc)
* @see org.mozilla.javascript.IdFunctionMaster#execMethod(int,
org.mozilla.javascript.IdFunction, org.mozilla.javascript.Context,
org.mozilla.javascript.Scriptable, org.mozilla.javascript.Scriptable,
java.lang.Object[])
*/
public Object execMethod(int methodId, IdFunction function, Context cx,
Scriptable scope, Scriptable thisObj, Object[] args) throws JavaScriptException
{
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc)
* @see org.mozilla.javascript.IdFunctionMaster#methodArity(int)
*/
public int methodArity(int methodId) {
// TODO Auto-generated method stub
return 0;
}
}
1.1
cocoon-2.1/src/blocks/javaflow/test/org/apache/cocoon/components/flow/java/test/PrimitivesFlow.java
Index: PrimitivesFlow.java
===================================================================
/*
* Copyright 1999-2004 The Apache Software Foundation.
*
* Licensed 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.
*/
package org.apache.cocoon.components.flow.java.test;
import junit.framework.TestCase;
import org.apache.cocoon.components.flow.java.*;
public class PrimitivesFlow extends TestCase implements Continuable {
public PrimitivesFlow(String s) {
super(s);
}
public void testPrimitives() {
boolean bool = true;
byte b = (byte)0xab;
double d = 123456789.123456789d;
float f = 987654321.987654321f;
int i = 9876598;
long l = 1234512345l;
Object n = null;
Object o = new Integer(12345);
short s = 12;
Continuation.suspend();
assertEquals(bool, true);
assertEquals(b, 0xab);
assertEquals(d, 123456789.123456789d, 0d);
assertEquals(f, 987654321.987654321f, 0f);
assertEquals(i, 9876598);
assertEquals(l, 1234512345l);
assertEquals(n, null);
assertEquals(o, new Integer(12345));
assertEquals(s, 12);
}
}