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 />


Reply via email to