You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jk...@apache.org on 2006/12/21 19:41:00 UTC

svn commit: r489433 - in /tapestry/tapestry4/trunk: tapestry-contrib/pom.xml tapestry-framework/src/java/org/apache/tapestry/enhance/InjectMetaWorker.java tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectMetaWorker.java

Author: jkuhnert
Date: Thu Dec 21 10:41:00 2006
New Revision: 489433

URL: http://svn.apache.org/viewvc?view=rev&rev=489433
Log:
Resolves regression where a previous change I made broke correctly parsing boolean values in meta. 

Made jboss dependency for contrib a scope of "provided" . 

Modified:
    tapestry/tapestry4/trunk/tapestry-contrib/pom.xml
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectMetaWorker.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectMetaWorker.java

Modified: tapestry/tapestry4/trunk/tapestry-contrib/pom.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-contrib/pom.xml?view=diff&rev=489433&r1=489432&r2=489433
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-contrib/pom.xml (original)
+++ tapestry/tapestry4/trunk/tapestry-contrib/pom.xml Thu Dec 21 10:41:00 2006
@@ -25,6 +25,7 @@
             <groupId>jboss</groupId>
             <artifactId>jboss-j2ee</artifactId>
             <version>4.0.2</version>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>hivemind</groupId>

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectMetaWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectMetaWorker.java?view=diff&rev=489433&r1=489432&r2=489433
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectMetaWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectMetaWorker.java Thu Dec 21 10:41:00 2006
@@ -42,11 +42,9 @@
     private ComponentPropertySource _source;
 
     private ValueConverter _valueConverter;
-
+    
     private Map _primitiveParser = new HashMap();
-
     {
-        _primitiveParser.put(boolean.class, "java.lang.Boolean.getBoolean");
         _primitiveParser.put(short.class, "java.lang.Short.parseShort");
         _primitiveParser.put(int.class, "java.lang.Integer.parseInt");
         _primitiveParser.put(long.class, "java.lang.Long.parseLong");
@@ -85,8 +83,12 @@
         {
             addPrimitive(op, metaKey, propertyName, sig, sourceName, parser, location);
             return;
+        } else if (propertyType == boolean.class) 
+        {
+            addBoolean(op, metaKey, propertyName, sig, sourceName, location);
+            return;
         }
-
+        
         if (propertyType == char.class)
         {
             addCharacterPrimitive(op, metaKey, propertyName, sig, sourceName, location);
@@ -110,7 +112,22 @@
 
         op.addMethod(Modifier.PUBLIC, sig, builder.toString(), location);
     }
-
+    
+    private void addBoolean(EnhancementOperation op, String metaKey, String propertyName,
+            MethodSignature sig, String sourceName, Location location)
+    {
+        BodyBuilder builder = new BodyBuilder();
+        builder.begin();
+        builder.addln(
+                "java.lang.String meta = {0}.getComponentProperty(this, \"{1}\");",
+                sourceName,
+                metaKey);
+        builder.addln("return java.lang.Boolean.valueOf(meta).booleanValue();");
+        builder.end();
+        
+        op.addMethod(Modifier.PUBLIC, sig, builder.toString(), location);
+    }
+    
     private void addCharacterPrimitive(EnhancementOperation op, String metaKey,
             String propertyName, MethodSignature sig, String sourceName, Location location)
     {

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectMetaWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectMetaWorker.java?view=diff&rev=489433&r1=489432&r2=489433
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectMetaWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectMetaWorker.java Thu Dec 21 10:41:00 2006
@@ -52,9 +52,8 @@
     {
         return newMock(ComponentPropertySource.class);
     }
-
-    @Test
-    public void testPrimitive()
+    
+    public void test_Primitive()
     {
         Location l = newLocation();
         InjectSpecification spec = newSpec("fooBar", "foo.bar", l);
@@ -92,9 +91,46 @@
 
         verify();
     }
+    
+    public void test_Boolean()
+    {
+        Location l = newLocation();
+        InjectSpecification spec = newSpec("fooBar", "foo.bar", l);
+        
+        ComponentPropertySource source = newSource();
+        
+        EnhancementOperation op = newMock(EnhancementOperation.class);
+
+        expect(op.getPropertyType("fooBar")).andReturn(boolean.class);
 
-    @Test
-    public void testCharacter()
+        op.claimReadonlyProperty("fooBar");
+
+        MethodSignature sig = new MethodSignature(boolean.class, "getFooBar", null, null);
+
+        expect(op.addInjectedField(InjectMetaWorker.SOURCE_NAME, ComponentPropertySource.class, source)).andReturn("_source");
+        
+        expect(op.getAccessorMethodName("fooBar")).andReturn("getFooBar");
+
+        BodyBuilder builder = new BodyBuilder();
+        builder.begin();
+        builder.addln("java.lang.String meta = _source.getComponentProperty(this, \"foo.bar\");");
+        builder.addln("return java.lang.Boolean.valueOf(meta).booleanValue();");
+        builder.end();
+
+        op.addMethod(Modifier.PUBLIC, sig, builder.toString(), l);
+
+        replay();
+
+        InjectMetaWorker worker = new InjectMetaWorker();
+
+        worker.setSource(source);
+
+        worker.performEnhancement(op, spec);
+
+        verify();
+    }
+    
+    public void test_Character()
     {
         Location l = newLocation();
         InjectSpecification spec = newSpec("fooBar", "foo.bar", l);
@@ -132,9 +168,8 @@
 
         verify();
     }
-
-    @Test
-    public void testObject()
+    
+    public void test_Object()
     {
         Location l = newLocation();
         InjectSpecification spec = newSpec("fooBar", "foo.bar", l);