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/07/24 17:15:58 UTC
svn commit: r1150398 - in
/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5:
internal/transform/InjectNamedWorker.java services/TapestryModule.java
Author: hlship
Date: Sun Jul 24 15:15:57 2011
New Revision: 1150398
URL: http://svn.apache.org/viewvc?rev=1150398&view=rev
Log:
TAP5-1508: Recode InjectNamedWorker to CCTW2
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectNamedWorker.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectNamedWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectNamedWorker.java?rev=1150398&r1=1150397&r2=1150398&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectNamedWorker.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectNamedWorker.java Sun Jul 24 15:15:57 2011
@@ -14,56 +14,56 @@
package org.apache.tapestry5.internal.transform;
-import java.util.List;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
+import org.apache.tapestry5.func.F;
+import org.apache.tapestry5.func.Flow;
import org.apache.tapestry5.func.Predicate;
import org.apache.tapestry5.internal.services.ComponentClassCache;
import org.apache.tapestry5.ioc.ObjectLocator;
import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.TransformField;
+import org.apache.tapestry5.plastic.PlasticClass;
+import org.apache.tapestry5.plastic.PlasticField;
+import org.apache.tapestry5.services.transform.ComponentClassTransformWorker2;
+import org.apache.tapestry5.services.transform.TransformationSupport;
+
+import javax.inject.Inject;
+import javax.inject.Named;
/**
* Processes the combination of {@link javax.inject.Inject} and {@link javax.inject.Named} annotations.
- *
+ *
* @since 5.3
*/
-public class InjectNamedWorker implements ComponentClassTransformWorker
+public class InjectNamedWorker implements ComponentClassTransformWorker2
{
private final ObjectLocator locator;
private final ComponentClassCache cache;
+ private final Predicate<PlasticField> MATCHER = new Predicate<PlasticField>()
+ {
+ public boolean accept(PlasticField field)
+ {
+ return field.hasAnnotation(Inject.class) && field.hasAnnotation(Named.class);
+ }
+ };
+
public InjectNamedWorker(ObjectLocator locator, ComponentClassCache cache)
{
this.locator = locator;
this.cache = cache;
}
- @SuppressWarnings("unchecked")
- public void transform(ClassTransformation transformation, MutableComponentModel model)
+ public void transform(PlasticClass plasticClass, TransformationSupport support, MutableComponentModel model)
{
-
- List<TransformField> fields = transformation.matchFields(new Predicate<TransformField>()
- {
-
- public boolean accept(TransformField field)
- {
- return field.getAnnotation(Inject.class) != null && field.getAnnotation(Named.class) != null;
- }
- });
-
- for (TransformField field : fields)
+ Flow<PlasticField> fields = F.flow(plasticClass.getAllFields()).filter(MATCHER);
+
+ for (PlasticField field : fields)
{
- Named annotation = field.getAnnotation(Named.class);
+ Named annotation = field.getAnnotation(Named.class);
field.claim(annotation);
- Class fieldType = cache.forName(field.getType());
+ Class fieldType = cache.forName(field.getTypeName());
Object service = locator.getService(annotation.value(), fieldType);
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java?rev=1150398&r1=1150397&r2=1150398&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java Sun Jul 24 15:15:57 2011
@@ -521,7 +521,8 @@ public final class TapestryModule
* <dt>MixinAfter</dt> <dd>Support for the {@link MixinAfter} mixin class annotation</dd>
* <dt>PageReset</dt>
* <dd>Checks for the {@link PageReset} annotation</dd>
- * <p/>
+ * <dt>Mixin</dt>
+ * <dd>Adds a mixin as part of a component's implementation</dd>
* <dt>Cached</dt>
* <dd>Checks for the {@link org.apache.tapestry5.annotations.Cached} annotation</dd>
* <dt>ActivationRequestParameter</dt>
@@ -530,6 +531,13 @@ public final class TapestryModule
* <dd>Support for annotations {@link PageLoaded}, {@link PageAttached}, {@link PageDetached}</dd>
* <dt>InjectService</dt>
* <dd>Handles the {@link org.apache.tapestry5.ioc.annotations.InjectService} annotation</dd>
+ * <dt>InjectNamed</dt> <dd>Handles fields with the {@link javax.inject.Inject} and {@link javax.inject.Named} annotations</dd>
+ * <dt>Component</dt>
+ * <dd>Defines embedded components based on the {@link org.apache.tapestry5.annotations.Component} annotation</dd>
+ * <dt>Environment</dt>
+ * <dd>Allows fields to contain values extracted from the {@link org.apache.tapestry5.services.Environment} service</dd>
+ * <dt>ApplicationState</dt>
+ * <dd>Converts fields that reference application state objects
* </dl>
*/
@Contribute(ComponentClassTransformWorker2.class)
@@ -593,6 +601,7 @@ public final class TapestryModule
configuration.addInstance("PageReset", PageResetAnnotationWorker.class);
configuration.addInstance("InjectService", InjectServiceWorker.class);
+ configuration.addInstance("InjectNamed", InjectNamedWorker.class);
// This one is always last. Any additional private fields that aren't
@@ -607,16 +616,8 @@ public final class TapestryModule
* <dl>
* <dt>Persist</dt>
* <dd>Allows fields to store their their value persistently between requests</dd>
- * <dt>Component</dt>
- * <dd>Defines embedded components based on the {@link org.apache.tapestry5.annotations.Component} annotation</dd>
- * <dt>Mixin</dt>
- * <dd>Adds a mixin as part of a component's implementation</dd>
- * <dt>Environment</dt>
- * <dd>Allows fields to contain values extracted from the {@link org.apache.tapestry5.services.Environment} service</dd>
* <dt>Inject</dt>
* <dd>Used with the {@link org.apache.tapestry5.ioc.annotations.Inject} annotation, when a value is supplied</dd>
- * <dt>ApplicationState</dt>
- * <dd>Converts fields that reference application state objects
* <dt>Log</dt>
* <dd>Checks for the {@link org.apache.tapestry5.annotations.Log} annotation</dd>
* <dt>HeartbeatDeferred
@@ -629,7 +630,6 @@ public final class TapestryModule
OrderedConfiguration<ComponentClassTransformWorker> configuration)
{
configuration.addInstance("Inject", InjectWorker.class);
- configuration.addInstance("InjectNamed", InjectNamedWorker.class);
configuration.addInstance("Persist", PersistWorker.class);