You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2010/01/22 17:30:01 UTC
svn commit: r902148 - in /tapestry/tapestry5/trunk/tapestry-core/src:
main/java/org/apache/tapestry5/internal/transform/ComponentWorker.java
test/java/org/apache/tapestry5/internal/transform/InjectComponentWorkerTest.java
Author: hlship
Date: Fri Jan 22 16:30:00 2010
New Revision: 902148
URL: http://svn.apache.org/viewvc?rev=902148&view=rev
Log:
Use a ComponentValueProvider to inject a sub-component into a container component.
Removed:
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/InjectComponentWorkerTest.java
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ComponentWorker.java
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ComponentWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ComponentWorker.java?rev=902148&r1=902147&r2=902148&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ComponentWorker.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ComponentWorker.java Fri Jan 22 16:30:00 2010
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
+// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -14,6 +14,7 @@
package org.apache.tapestry5.internal.transform;
+import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.annotations.Component;
import org.apache.tapestry5.annotations.MixinClasses;
import org.apache.tapestry5.annotations.Mixins;
@@ -32,6 +33,7 @@
import org.apache.tapestry5.services.ClassTransformation;
import org.apache.tapestry5.services.ComponentClassResolver;
import org.apache.tapestry5.services.ComponentClassTransformWorker;
+import org.apache.tapestry5.services.ComponentValueProvider;
import org.apache.tapestry5.services.TransformConstants;
/**
@@ -44,7 +46,7 @@
{
private final ComponentClassResolver resolver;
- public ComponentWorker(final ComponentClassResolver resolver)
+ public ComponentWorker(ComponentClassResolver resolver)
{
this.resolver = resolver;
}
@@ -57,10 +59,10 @@
transformation.claimField(fieldName, annotation);
- String id = annotation.id();
+ String annotationId = annotation.id();
- if (InternalUtils.isBlank(id))
- id = InternalUtils.stripMemberName(fieldName);
+ final String id = InternalUtils.isNonBlank(annotationId) ? annotationId : InternalUtils
+ .stripMemberName(fieldName);
String type = transformation.getFieldType(fieldName);
@@ -79,13 +81,17 @@
.splitAtCommas(names)));
}
- transformation.makeReadOnly(fieldName);
-
- String body = String.format("%s = (%s) %s.getEmbeddedComponent(\"%s\");", fieldName,
- type, transformation.getResourcesFieldName(), id);
+ ComponentValueProvider<Object> provider = new ComponentValueProvider<Object>()
+ {
+ @Override
+ public Object get(ComponentResources resources)
+ {
+ return resources.getEmbeddedComponent(id);
+ }
+ };
- transformation
- .extendMethod(TransformConstants.CONTAINING_PAGE_DID_LOAD_SIGNATURE, body);
+ transformation.assignFieldIndirect(fieldName,
+ TransformConstants.CONTAINING_PAGE_DID_LOAD_SIGNATURE, provider);
addMixinClasses(fieldName, transformation, embedded);
addMixinTypes(fieldName, transformation, embedded);