Author: jkuhnert
Date: Sat May 5 12:04:39 2007
New Revision: 535558
URL: http://svn.apache.org/viewvc?view=rev&rev=535558
Log:
Resolves OGNL-49. Was getting compilation errors from javassist in disabled
caching mode because sometimes the hashcodes were equal for class names...Added
a global increment counter to force uniqueness.
Added:
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/BasicObject.java
(with props)
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestHiveMindExpressionCompiler.java
(with props)
Modified:
tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/Home.html
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/ClassFactoryImpl.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/HiveMindExpressionCompiler.java
tapestry/tapestry4/trunk/tapestry-framework/tapestry-framework.iml
Modified:
tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/Home.html
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/Home.html?view=diff&rev=535558&r1=535557&r2=535558
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/Home.html
(original)
+++
tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/Home.html
Sat May 5 12:04:39 2007
@@ -84,4 +84,5 @@
</div>
</span>
-</body>
\ No newline at end of file
+</body>
+</html>
\ No newline at end of file
Modified:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/ClassFactoryImpl.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/ClassFactoryImpl.java?view=diff&rev=535558&r1=535557&r2=535558
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/ClassFactoryImpl.java
(original)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/ClassFactoryImpl.java
Sat May 5 12:04:39 2007
@@ -14,7 +14,6 @@
package org.apache.tapestry.enhance;
import javassist.CtClass;
-
import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.hivemind.service.ClassFab;
import org.apache.hivemind.service.ClassFactory;
@@ -46,7 +45,7 @@
checkPoolExpiration();
CtClass ctNewClass = _classSource.newClass(name, superClass);
-
+
return new ClassFabImpl(_classSource, ctNewClass);
}
catch (Exception ex)
Modified:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/HiveMindExpressionCompiler.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/HiveMindExpressionCompiler.java?view=diff&rev=535558&r1=535557&r2=535558
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/HiveMindExpressionCompiler.java
(original)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/HiveMindExpressionCompiler.java
Sat May 5 12:04:39 2007
@@ -36,6 +36,8 @@
private static final Log _log =
LogFactory.getLog(HiveMindExpressionCompiler.class);
+ private double _globalCounter = 0;
+
private ClassFactory _classFactory;
public HiveMindExpressionCompiler(ClassFactory classfactory)
@@ -125,15 +127,16 @@
if (_log.isDebugEnabled())
_log.debug("Compiling expr class " +
expression.getClass().getName() + " and root " + root.getClass().getName() + "
with toString:" + expression.toString());
- if (expression.getAccessor() != null)
- return;
-
synchronized (expression) {
+ if (expression.getAccessor() != null)
+ return;
+
String getBody = null;
String setBody = null;
- ClassFab classFab =
_classFactory.newClass(expression.getClass().getName() + expression.hashCode()
+ "Accessor", Object.class);
+ ClassFab classFab =
_classFactory.newClass(expression.getClass().getName() + expression.hashCode()
+ + ++_globalCounter +
"Accessor", Object.class);
classFab.addInterface(ExpressionAccessor.class);
MethodSignature valueGetter = new MethodSignature(Object.class,
"get", new Class[]{OgnlContext.class, Object.class}, null);
Added:
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/BasicObject.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/BasicObject.java?view=auto&rev=535558
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/BasicObject.java
(added)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/BasicObject.java
Sat May 5 12:04:39 2007
@@ -0,0 +1,12 @@
+package org.apache.tapestry.enhance;
+
+/**
+ *
+ */
+public class BasicObject {
+
+ public String getName()
+ {
+ return "Henry the eith I am.";
+ }
+}
Propchange:
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/BasicObject.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestHiveMindExpressionCompiler.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestHiveMindExpressionCompiler.java?view=auto&rev=535558
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestHiveMindExpressionCompiler.java
(added)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestHiveMindExpressionCompiler.java
Sat May 5 12:04:39 2007
@@ -0,0 +1,38 @@
+package org.apache.tapestry.enhance;
+
+import ognl.Node;
+import ognl.Ognl;
+import ognl.OgnlContext;
+import org.apache.tapestry.TestBase;
+import org.apache.tapestry.services.impl.HiveMindExpressionCompiler;
+import org.testng.annotations.Test;
+
+/**
+ * Tests functionality of [EMAIL PROTECTED]
org.apache.tapestry.services.impl.HiveMindExpressionCompiler}.
+ */
[EMAIL PROTECTED]
+public class TestHiveMindExpressionCompiler extends TestBase {
+
+ HiveMindExpressionCompiler _compiler = new HiveMindExpressionCompiler(new
ClassFactoryImpl());
+
+ public void test_Duplicate_Class_Compiler()
+ throws Exception
+ {
+ OgnlContext context = (OgnlContext) Ognl.createDefaultContext(null);
+ BasicObject root = new BasicObject();
+ String expr = "name";
+ Node expression = (Node) Ognl.parseExpression(expr);
+
+ _compiler.compileExpression(context, expression, root);
+ assert expression.getAccessor() != null;
+ assertEquals(expression.getAccessor().get(context, root),
root.getName());
+
+ Node expression2 = (Node) Ognl.parseExpression(expr);
+
+ _compiler.compileExpression(context, expression2, root);
+ assert expression2.getAccessor() != null;
+ assertEquals(expression2.getAccessor().get(context, root),
root.getName());
+
+ assertNotSame(expression2.getAccessor().getClass().getName(),
expression.getAccessor().getClass().getName());
+ }
+}
Propchange:
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestHiveMindExpressionCompiler.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: tapestry/tapestry4/trunk/tapestry-framework/tapestry-framework.iml
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/tapestry-framework.iml?view=diff&rev=535558&r1=535557&r2=535558
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/tapestry-framework.iml
(original)
+++ tapestry/tapestry4/trunk/tapestry-framework/tapestry-framework.iml Sat May
5 12:04:39 2007
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<module relativePaths="true" type="JAVA_MODULE" version="4">
<component name="ModuleRootManager" />
- <component name="NewModuleRootManager" inherit-compiler-output="true">
+ <component name="NewModuleRootManager" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<exclude-output />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
@@ -45,7 +45,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root
url="jar://$MODULE_DIR$/../../../.m2/repository/org/openqa/selenium/server/selenium-server/0.9.1-SNAPSHOT/selenium-server-0.9.1-SNAPSHOT-standalone.jar!/"
/>
+ <root
url="jar://$MODULE_DIR$/../../../.m2/repository/org/openqa/selenium/client-drivers/selenium-java-client-driver/0.9.2-SNAPSHOT/selenium-java-client-driver-0.9.2-SNAPSHOT.jar!/"
/>
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -90,7 +90,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root
url="jar://$MODULE_DIR$/../../../.m2/repository/org/apache/tapestry/tapestry-test/4.1.1-SNAPSHOT/tapestry-test-4.1.1-SNAPSHOT.jar!/"
/>
+ <root
url="jar://$MODULE_DIR$/../../../.m2/repository/org/apache/tapestry/tapestry-test/4.1.2-SNAPSHOT/tapestry-test-4.1.2-SNAPSHOT.jar!/"
/>
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -99,7 +99,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root
url="jar://$MODULE_DIR$/../../../.m2/repository/org/testng/testng/5.1/testng-5.1-jdk15.jar!/"
/>
+ <root
url="jar://$MODULE_DIR$/../../../.m2/repository/org/openqa/selenium/core/selenium-core/0.8.3-SNAPSHOT/selenium-core-0.8.3-SNAPSHOT.jar!/"
/>
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -117,16 +117,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root
url="jar://$MODULE_DIR$/../../../.m2/repository/org/openqa/selenium/server/selenium-server-coreless/0.9.1-SNAPSHOT/selenium-server-coreless-0.9.1-SNAPSHOT.jar!/"
/>
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
- </orderEntry>
- <orderEntry type="module-library">
- <library>
- <CLASSES>
- <root
url="jar://$MODULE_DIR$/../../../.m2/repository/org/openqa/selenium/client-drivers/selenium-java-client-driver/0.9.1-SNAPSHOT/selenium-java-client-driver-0.9.1-SNAPSHOT.jar!/"
/>
+ <root
url="jar://$MODULE_DIR$/../../../.m2/repository/org/openqa/selenium/server/selenium-server-coreless/0.9.2-SNAPSHOT/selenium-server-coreless-0.9.2-SNAPSHOT.jar!/"
/>
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -144,7 +135,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root
url="jar://$MODULE_DIR$/../../../.m2/repository/com/javaforge/tapestry/tapestry-testng/1.0.0-SNAPSHOT/tapestry-testng-1.0.0-SNAPSHOT.jar!/"
/>
+ <root
url="jar://$MODULE_DIR$/../../../.m2/repository/org/openqa/selenium/server/selenium-server/0.9.2-SNAPSHOT/selenium-server-0.9.2-SNAPSHOT.jar!/"
/>
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -171,7 +162,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root
url="jar://$MODULE_DIR$/../../../.m2/repository/org/easymock/easymockclassextension/2.2/easymockclassextension-2.2.jar!/"
/>
+ <root
url="jar://$MODULE_DIR$/../../../.m2/repository/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar!/"
/>
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -180,7 +171,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root
url="jar://$MODULE_DIR$/../../../.m2/repository/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar!/"
/>
+ <root
url="jar://$MODULE_DIR$/../../../.m2/repository/org/openqa/selenium/server/selenium-server/0.9.2-SNAPSHOT/selenium-server-0.9.2-SNAPSHOT-standalone.jar!/"
/>
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -216,7 +207,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root
url="jar://$MODULE_DIR$/../../../.m2/repository/commons-io/commons-io/1.3.1/commons-io-1.3.1.jar!/"
/>
+ <root
url="jar://$MODULE_DIR$/../../../.m2/repository/org/easymock/easymockclassextension/2.2.2/easymockclassextension-2.2.2.jar!/"
/>
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -225,7 +216,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root
url="jar://$MODULE_DIR$/../../../.m2/repository/hivemind/hivemind/1.1.1/hivemind-1.1.1.jar!/"
/>
+ <root
url="jar://$MODULE_DIR$/../../../.m2/repository/commons-io/commons-io/1.3.1/commons-io-1.3.1.jar!/"
/>
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -234,7 +225,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root
url="jar://$MODULE_DIR$/../../../.m2/repository/jdom/jdom/1.0/jdom-1.0.jar!/" />
+ <root
url="jar://$MODULE_DIR$/../../../.m2/repository/hivemind/hivemind/1.1.1/hivemind-1.1.1.jar!/"
/>
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -243,7 +234,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root
url="jar://$MODULE_DIR$/../../../.m2/repository/org/openqa/selenium/server/selenium-server/0.9.1-SNAPSHOT/selenium-server-0.9.1-SNAPSHOT.jar!/"
/>
+ <root
url="jar://$MODULE_DIR$/../../../.m2/repository/org/testng/testng/5.5/testng-5.5-jdk15.jar!/"
/>
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -252,7 +243,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root
url="jar://$MODULE_DIR$/../../../.m2/repository/ant/ant/1.6.5/ant-1.6.5.jar!/"
/>
+ <root
url="jar://$MODULE_DIR$/../../../.m2/repository/jdom/jdom/1.0/jdom-1.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -261,7 +252,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root
url="jar://$MODULE_DIR$/../../../.m2/repository/commons-codec/commons-codec/1.3/commons-codec-1.3.jar!/"
/>
+ <root
url="jar://$MODULE_DIR$/../../../.m2/repository/ant/ant/1.6.5/ant-1.6.5.jar!/"
/>
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -270,7 +261,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root
url="jar://$MODULE_DIR$/../../../.m2/repository/jetty/org.mortbay.jetty/5.1.10/org.mortbay.jetty-5.1.10.jar!/"
/>
+ <root
url="jar://$MODULE_DIR$/../../../.m2/repository/commons-codec/commons-codec/1.3/commons-codec-1.3.jar!/"
/>
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -279,7 +270,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root
url="jar://$MODULE_DIR$/../../../.m2/repository/org/openqa/selenium/core/selenium-core/0.8.2-SNAPSHOT/selenium-core-0.8.2-SNAPSHOT.jar!/"
/>
+ <root
url="jar://$MODULE_DIR$/../../../.m2/repository/jetty/org.mortbay.jetty/5.1.10/org.mortbay.jetty-5.1.10.jar!/"
/>
</CLASSES>
<JAVADOC />
<SOURCES />