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();
}