You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2011/04/30 00:54:58 UTC

svn commit: r1097986 - in /tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5: internal/services/ComponentInstantiatorSourceImpl.java internal/transform/BridgeClassTransformation.java services/transform/TransformationSupport.java

Author: hlship
Date: Fri Apr 29 22:54:58 2011
New Revision: 1097986

URL: http://svn.apache.org/viewvc?rev=1097986&view=rev
Log:
TAP5-853: Continue extending BridgeClassTransformation to handle the odds & ends of the old ClassTransformation API

Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BridgeClassTransformation.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/transform/TransformationSupport.java

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java?rev=1097986&r1=1097985&r2=1097986&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java Fri Apr 29 22:54:58 2011
@@ -219,7 +219,9 @@ public final class ComponentInstantiator
 
         ComponentModel parentModel = classToModel.get(parentClassName);
 
-        if (parentModel == null
+        final boolean isRoot = parentModel == null;
+
+        if (isRoot
                 && !(parentClassName.equals("java.lang.Object") || parentClassName
                         .equals("groovy.lang.GroovyObjectSupport")))
         {
@@ -255,6 +257,11 @@ public final class ComponentInstantiator
                             InternalUtils.toMessage(ex)), ex);
                 }
             }
+
+            public boolean isRootTransformation()
+            {
+                return isRoot;
+            }
         }, model);
 
         classToModel.put(className, model);

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BridgeClassTransformation.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BridgeClassTransformation.java?rev=1097986&r1=1097985&r2=1097986&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BridgeClassTransformation.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BridgeClassTransformation.java Fri Apr 29 22:54:58 2011
@@ -183,11 +183,16 @@ public class BridgeClassTransformation i
         }
     }
 
+    private static BridgeTransformField toTransformField(PlasticField plasticField)
+    {
+        return new BridgeTransformField(plasticField);
+    }
+
     private static Mapper<PlasticField, TransformField> TO_TRANSFORM_FIELD = new Mapper<PlasticField, TransformField>()
     {
         public TransformField map(PlasticField element)
         {
-            return new BridgeTransformField(element);
+            return toTransformField(element);
         }
     };
 
@@ -452,7 +457,13 @@ public class BridgeClassTransformation i
 
     public TransformField getField(String fieldName)
     {
-        throw new IllegalArgumentException("getField() not yet implemented.");
+        for (PlasticField f : plasticClass.getAllFields())
+        {
+            if (f.getName().equals(fieldName)) { return toTransformField(f); }
+        }
+
+        throw new IllegalArgumentException(String.format("Class %s does not contain a field named '%s'.",
+                plasticClass.getClassName(), fieldName));
     }
 
     public List<TransformField> matchUnclaimedFields()
@@ -471,7 +482,7 @@ public class BridgeClassTransformation i
 
         PlasticField newField = plasticClass.introduceField(type, suggestedName);
 
-        return new BridgeTransformField(newField);
+        return toTransformField(newField);
     }
 
     public String addInjectedField(Class type, String suggestedName, Object value)
@@ -489,7 +500,7 @@ public class BridgeClassTransformation i
 
         PlasticField field = plasticClass.introduceField(type, suggestedName).injectComputed(toComputedValue(provider));
 
-        return new BridgeTransformField(field);
+        return toTransformField(field);
     }
 
     public void addImplementedInterface(Class interfaceClass)
@@ -509,7 +520,7 @@ public class BridgeClassTransformation i
 
     public boolean isRootTransformation()
     {
-        throw new IllegalArgumentException("isRootTransformation() not yet implemented.");
+        return support.isRootTransformation();
     }
 
     public TransformMethod getOrCreateMethod(TransformMethodSignature signature)

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/transform/TransformationSupport.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/transform/TransformationSupport.java?rev=1097986&r1=1097985&r2=1097986&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/transform/TransformationSupport.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/transform/TransformationSupport.java Fri Apr 29 22:54:58 2011
@@ -29,4 +29,12 @@ public interface TransformationSupport
      * @return corresponding Java Class
      */
     Class toClass(String typeName);
+
+    /**
+     * Returns true if the class being transformed is a root class: it does not inherit
+     * from another transformed class, but instead inherits from Object.
+     * 
+     * @return true if root
+     */
+    boolean isRootTransformation();
 }