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 2012/10/18 02:17:10 UTC

[2/9] git commit: Make many of the injected/environmental fields of AbstractField protected Remove matching fields from subclasses

Make many of the injected/environmental fields of AbstractField protected
Remove matching fields from subclasses


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/3f442c59
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/3f442c59
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/3f442c59

Branch: refs/heads/5.4-js-rewrite
Commit: 3f442c597382f117cb66721e2294942ff05abc59
Parents: 027d19d
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Wed Oct 17 17:08:06 2012 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Wed Oct 17 17:08:06 2012 -0700

----------------------------------------------------------------------
 .../tapestry5/corelib/base/AbstractField.java      |   38 ++++++++++-----
 .../tapestry5/corelib/base/AbstractTextField.java  |   33 ++++---------
 .../tapestry5/corelib/components/Checkbox.java     |   24 +++-------
 .../tapestry5/corelib/components/Checklist.java    |   31 ++----------
 .../tapestry5/corelib/components/DateField.java    |   35 ++++----------
 .../tapestry5/corelib/components/Palette.java      |   38 ++-------------
 .../tapestry5/corelib/components/Select.java       |    8 +---
 .../tapestry5/kaptcha/components/KaptchaField.java |   15 +-----
 .../apache/tapestry5/upload/components/Upload.java |   33 +++----------
 9 files changed, 73 insertions(+), 182 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/3f442c59/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractField.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractField.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractField.java
index 82cf672..19824be 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractField.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractField.java
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007, 2008, 2010, 2011 The Apache Software Foundation
+// Copyright 2006, 2007, 2008, 2010, 2011, 2012 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.
@@ -17,7 +17,6 @@ package org.apache.tapestry5.corelib.base;
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.*;
 import org.apache.tapestry5.corelib.mixins.DiscardBody;
-import org.apache.tapestry5.corelib.mixins.RenderDisabled;
 import org.apache.tapestry5.corelib.mixins.RenderInformals;
 import org.apache.tapestry5.internal.BeanValidationContext;
 import org.apache.tapestry5.internal.InternalComponentResources;
@@ -25,13 +24,16 @@ import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.services.ComponentDefaultProvider;
 import org.apache.tapestry5.services.Environment;
 import org.apache.tapestry5.services.FormSupport;
+import org.apache.tapestry5.services.Request;
 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
 
 import java.io.Serializable;
 
 /**
  * Provides initialization of the clientId and elementName properties. In addition, adds the {@link RenderInformals},
- * {@link RenderDisabled} and {@link DiscardBody} mixins.
+ * and {@link DiscardBody} mixins.
+ *
+ * @tapestrydoc
  */
 @SupportsInformalParameters
 @Import(modules = "core/fields")
@@ -43,7 +45,7 @@ public abstract class AbstractField implements Field
      * converting the actual id to a presentable string (for example, "userId" to "User Id").
      */
     @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String label;
+    protected String label;
 
     /**
      * If true, then the field will render out with a disabled attribute
@@ -52,17 +54,17 @@ public abstract class AbstractField implements Field
      * ignored (not even validated) and the component's events are not fired.
      */
     @Parameter("false")
-    private boolean disabled;
+    protected boolean disabled;
 
     @SuppressWarnings("unused")
     @Mixin
     private DiscardBody discardBody;
 
     @Environmental
-    private ValidationDecorator decorator;
+    protected ValidationDecorator decorator;
 
     @Inject
-    private Environment environment;
+    protected Environment environment;
 
     static class Setup implements ComponentAction<AbstractField>, Serializable
     {
@@ -114,23 +116,33 @@ public abstract class AbstractField implements Field
      * {@link #getClientId() clientId property}.
      */
     @Parameter(value = "prop:componentResources.id", defaultPrefix = BindingConstants.LITERAL)
-    private String clientId;
+    protected String clientId;
 
     private String assignedClientId;
 
     private String controlName;
 
     @Environmental(false)
-    private FormSupport formSupport;
+    protected FormSupport formSupport;
 
     @Environmental
-    private JavaScriptSupport jsSupport;
+    protected JavaScriptSupport javaScriptSupport;
+
+    @Environmental
+    protected ValidationTracker validationTracker;
+
+    @Inject
+    protected ComponentResources resources;
 
     @Inject
-    private ComponentResources resources;
+    protected ComponentDefaultProvider defaultProvider;
 
     @Inject
-    private ComponentDefaultProvider defaultProvider;
+    protected Request request;
+
+    @Inject
+    protected FieldValidationSupport fieldValidationSupport;
+
 
     final String defaultLabel()
     {
@@ -158,7 +170,7 @@ public abstract class AbstractField implements Field
             throw new RuntimeException(String.format("Component %s must be enclosed by a Form component.",
                     resources.getCompleteId()));
 
-        assignedClientId = jsSupport.allocateClientId(id);
+        assignedClientId = javaScriptSupport.allocateClientId(id);
         String controlName = formSupport.allocateControlName(id);
 
         formSupport.storeAndExecute(this, new Setup(controlName));

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/3f442c59/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractTextField.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractTextField.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractTextField.java
index 5b88696..12c1774 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractTextField.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractTextField.java
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007, 2008, 2009, 2011 The Apache Software Foundation
+// Copyright 2006, 2007, 2008, 2009, 2011, 2012 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.
@@ -21,8 +21,6 @@ import org.apache.tapestry5.corelib.mixins.RenderDisabled;
 import org.apache.tapestry5.ioc.AnnotationProvider;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
-import org.apache.tapestry5.services.Request;
 
 import java.lang.annotation.Annotation;
 import java.util.Locale;
@@ -42,6 +40,8 @@ import java.util.Locale;
  * Likewise, on a form submit, the "parseclient" event handler method will be passed the string provided by the client,
  * and may provide a non-null value as the parsed value. Returning null allows the normal translator to operate. The
  * event handler may also throw {@link org.apache.tapestry5.ValidationException}.
+ *
+ * @tapestrydoc
  */
 @Events(
         {EventConstants.TO_CLIENT, EventConstants.VALIDATE, EventConstants.PARSE_CLIENT})
@@ -88,28 +88,13 @@ public abstract class AbstractTextField extends AbstractField
     @Parameter(defaultPrefix = BindingConstants.NULLFIELDSTRATEGY, value = "default")
     private NullFieldStrategy nulls;
 
-    @Environmental
-    private ValidationTracker tracker;
-
-    @Inject
-    private ComponentResources resources;
-
     @Inject
     private Locale locale;
 
-    @Inject
-    private Request request;
-
-    @Inject
-    private FieldValidationSupport fieldValidationSupport;
-
     @SuppressWarnings("unused")
     @Mixin
     private RenderDisabled renderDisabled;
 
-    @Inject
-    private ComponentDefaultProvider defaultProvider;
-
     /**
      * Computes a default value for the "translate" parameter using
      * {@link org.apache.tapestry5.services.ComponentDefaultProvider#defaultTranslator(String, org.apache.tapestry5.ComponentResources)}
@@ -145,7 +130,7 @@ public abstract class AbstractTextField extends AbstractField
     @BeginRender
     void begin(MarkupWriter writer)
     {
-        String value = tracker.getInput(this);
+        String value = validationTracker.getInput(this);
 
         // If this is a response to a form submission, and the user provided a value.
         // then send that exact value back at them.
@@ -181,8 +166,10 @@ public abstract class AbstractTextField extends AbstractField
      * Generally, the subclass will invoke {@link MarkupWriter#element(String, Object[])}, and will be responsible for
      * including an {@link AfterRender} phase method to invoke {@link MarkupWriter#end()}.
      *
-     * @param writer markup write to send output to
-     * @param value  the value (either obtained and translated from the value parameter, or obtained from the tracker)
+     * @param writer
+     *         markup write to send output to
+     * @param value
+     *         the value (either obtained and translated from the value parameter, or obtained from the tracker)
      */
     protected abstract void writeFieldTag(MarkupWriter writer, String value);
 
@@ -193,7 +180,7 @@ public abstract class AbstractTextField extends AbstractField
     {
         String rawValue = request.getParameter(controlName);
 
-        tracker.recordInput(this, rawValue);
+        validationTracker.recordInput(this, rawValue);
 
         try
         {
@@ -210,7 +197,7 @@ public abstract class AbstractTextField extends AbstractField
                 value = translated;
         } catch (ValidationException ex)
         {
-            tracker.recordError(this, ex.getMessage());
+            validationTracker.recordError(this, ex.getMessage());
         }
 
         removePropertyNameFromBeanValidationContext();

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/3f442c59/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Checkbox.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Checkbox.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Checkbox.java
index 1b78ab7..38caf9f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Checkbox.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Checkbox.java
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007, 2008, 2011 The Apache Software Foundation
+// Copyright 2006, 2007, 2008, 2011, 2012 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,14 +14,13 @@
 
 package org.apache.tapestry5.corelib.components;
 
-import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationTracker;
-import org.apache.tapestry5.annotations.*;
+import org.apache.tapestry5.annotations.AfterRender;
+import org.apache.tapestry5.annotations.BeginRender;
+import org.apache.tapestry5.annotations.Mixin;
+import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.corelib.base.AbstractField;
 import org.apache.tapestry5.corelib.mixins.RenderDisabled;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.Request;
 
 /**
  * A Checkbox component is simply a &lt;input type="checkbox"&gt;.
@@ -37,23 +36,14 @@ public class Checkbox extends AbstractField
     @Parameter(required = true, autoconnect = true)
     private boolean value;
 
-    @Inject
-    private Request request;
-
     @SuppressWarnings("unused")
     @Mixin
     private RenderDisabled renderDisabled;
 
-    @Inject
-    private ComponentResources resources;
-
-    @Environmental
-    private ValidationTracker tracker;
-
     @BeginRender
     void begin(MarkupWriter writer)
     {
-        String asSubmitted = tracker.getInput(this);
+        String asSubmitted = validationTracker.getInput(this);
 
         boolean checked = asSubmitted != null ? Boolean.parseBoolean(asSubmitted) : value;
 
@@ -83,7 +73,7 @@ public class Checkbox extends AbstractField
 
         // record as "true" or "false"
 
-        tracker.recordInput(this, Boolean.toString(postedValue != null));
+        validationTracker.recordInput(this, Boolean.toString(postedValue != null));
 
         value = postedValue != null;
     }

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/3f442c59/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Checklist.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Checklist.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Checklist.java
index 12f33b7..328bd0d 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Checklist.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Checklist.java
@@ -1,4 +1,4 @@
-// Copyright 2011 The Apache Software Foundation
+// Copyright 2011, 2012 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.
@@ -15,16 +15,13 @@
 package org.apache.tapestry5.corelib.components;
 
 import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.Environmental;
 import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.annotations.Property;
 import org.apache.tapestry5.corelib.base.AbstractField;
 import org.apache.tapestry5.dom.Element;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
 import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
 
 import java.util.Collections;
 import java.util.List;
@@ -84,23 +81,9 @@ public class Checklist extends AbstractField
     @Inject
     private FieldValidationSupport fieldValidationSupport;
 
-    @Environmental
-    private ValidationTracker tracker;
-
-    @Inject
-    private ComponentResources componentResources;
-
-    @Inject
-    private ComponentDefaultProvider defaultProvider;
-
-    @Inject
-    private JavaScriptSupport javaScriptSupport;
-
     @Property
     private List<Renderable> availableOptions;
 
-    private MarkupWriter markupWriter;
-
     private final class RenderRadio implements Renderable
     {
         private final OptionModel model;
@@ -112,7 +95,7 @@ public class Checklist extends AbstractField
 
         public void render(MarkupWriter writer)
         {
-            final String clientId = javaScriptSupport.allocateClientId(componentResources);
+            final String clientId = javaScriptSupport.allocateClientId(resources);
 
             final String clientValue = encoder.toClient(model.getValue());
 
@@ -130,10 +113,8 @@ public class Checklist extends AbstractField
         }
     }
 
-    void setupRender(final MarkupWriter writer)
+    void setupRender()
     {
-        markupWriter = writer;
-
         availableOptions = CollectionFactory.newList();
 
         final SelectModelVisitor visitor = new SelectModelVisitor()
@@ -187,12 +168,12 @@ public class Checklist extends AbstractField
 
         try
         {
-            this.fieldValidationSupport.validate(selected, this.componentResources, this.validate);
+            fieldValidationSupport.validate(selected, this.resources, this.validate);
 
             this.selected = selected;
         } catch (final ValidationException e)
         {
-            this.tracker.recordError(this, e.getMessage());
+            validationTracker.recordError(this, e.getMessage());
         }
 
         removePropertyNameFromBeanValidationContext();
@@ -215,7 +196,7 @@ public class Checklist extends AbstractField
 
     Binding defaultValidate()
     {
-        return this.defaultProvider.defaultValidatorBinding("selected", this.componentResources);
+        return this.defaultProvider.defaultValidatorBinding("selected", resources);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/3f442c59/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DateField.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DateField.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DateField.java
index 93f3a7d..adcd343 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DateField.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DateField.java
@@ -15,15 +15,16 @@
 package org.apache.tapestry5.corelib.components;
 
 import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.*;
+import org.apache.tapestry5.annotations.Events;
+import org.apache.tapestry5.annotations.Import;
+import org.apache.tapestry5.annotations.Parameter;
+import org.apache.tapestry5.annotations.RequestParameter;
 import org.apache.tapestry5.corelib.base.AbstractField;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.json.JSONObject;
 import org.apache.tapestry5.services.ComponentDefaultProvider;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
 
 import java.text.DateFormat;
 import java.text.ParseException;
@@ -92,27 +93,9 @@ public class DateField extends AbstractField
     @Parameter("componentResources.messages")
     private Messages messages;
 
-    @Environmental
-    private JavaScriptSupport support;
-
-    @Environmental
-    private ValidationTracker tracker;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Inject
-    private Request request;
-
     @Inject
     private Locale locale;
 
-    @Inject
-    private ComponentDefaultProvider defaultProvider;
-
-    @Inject
-    private FieldValidationSupport fieldValidationSupport;
-
     private static final String RESULT = "result";
 
     private static final String ERROR = "error";
@@ -195,7 +178,7 @@ public class DateField extends AbstractField
 
     void beginRender(MarkupWriter writer)
     {
-        String value = tracker.getInput(this);
+        String value = validationTracker.getInput(this);
 
         if (value == null)
             value = formatCurrentValue();
@@ -246,7 +229,7 @@ public class DateField extends AbstractField
         spec.put("parseURL", resources.createEventLink("parse").toURI());
         spec.put("formatURL", resources.createEventLink("format").toURI());
 
-        support.addInitializerCall("dateField", spec);
+        javaScriptSupport.addInitializerCall("dateField", spec);
     }
 
     private void writeDisabled(MarkupWriter writer)
@@ -268,7 +251,7 @@ public class DateField extends AbstractField
     {
         String value = request.getParameter(controlName);
 
-        tracker.recordInput(this, value);
+        validationTracker.recordInput(this, value);
 
         Date parsedValue = null;
 
@@ -278,7 +261,7 @@ public class DateField extends AbstractField
                 parsedValue = format.parse(value);
         } catch (ParseException ex)
         {
-            tracker.recordError(this, messages.format("core-date-value-not-parseable", value));
+            validationTracker.recordError(this, messages.format("core-date-value-not-parseable", value));
             return;
         }
 
@@ -290,7 +273,7 @@ public class DateField extends AbstractField
             this.value = parsedValue;
         } catch (ValidationException ex)
         {
-            tracker.recordError(this, ex.getMessage());
+            validationTracker.recordError(this, ex.getMessage());
         }
 
         removePropertyNameFromBeanValidationContext();

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/3f442c59/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Palette.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Palette.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Palette.java
index 45c6e17..6c614ec 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Palette.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Palette.java
@@ -15,7 +15,6 @@
 package org.apache.tapestry5.corelib.components;
 
 import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.Environmental;
 import org.apache.tapestry5.annotations.Import;
 import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.annotations.Property;
@@ -25,9 +24,6 @@ import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.json.JSONArray;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
 
 import java.util.Collections;
 import java.util.List;
@@ -226,30 +222,6 @@ public class Palette extends AbstractField
     @Property(write = false)
     private Asset moveUp;
 
-    /**
-     * Used to include scripting code in the rendered page.
-     */
-    @Environmental
-    private JavaScriptSupport javascriptSupport;
-
-    @Environmental
-    private ValidationTracker tracker;
-
-    /**
-     * Needed to access query parameters when processing form submission.
-     */
-    @Inject
-    private Request request;
-
-    @Inject
-    private ComponentDefaultProvider defaultProvider;
-
-    @Inject
-    private ComponentResources componentResources;
-
-    @Inject
-    private FieldValidationSupport fieldValidationSupport;
-
     private SelectModelRenderer renderer;
 
     /**
@@ -322,7 +294,7 @@ public class Palette extends AbstractField
     {
         String parameterValue = request.getParameter(controlName + "-values");
 
-        this.tracker.recordInput(this, parameterValue);
+        validationTracker.recordInput(this, parameterValue);
 
         JSONArray values = new JSONArray(parameterValue);
 
@@ -351,12 +323,12 @@ public class Palette extends AbstractField
 
         try
         {
-            this.fieldValidationSupport.validate(selected, this.componentResources, this.validate);
+            fieldValidationSupport.validate(selected, resources, validate);
 
             this.selected = selected;
         } catch (final ValidationException e)
         {
-            this.tracker.recordError(this, e.getMessage());
+            validationTracker.recordError(this, e.getMessage());
         }
 
         removePropertyNameFromBeanValidationContext();
@@ -390,7 +362,7 @@ public class Palette extends AbstractField
 
         String clientId = getClientId();
 
-        javascriptSupport.addScript("new Tapestry.Palette('%s', %s, %s);", clientId, reorder, naturalOrder
+        javaScriptSupport.addScript("new Tapestry.Palette('%s', %s, %s);", clientId, reorder, naturalOrder
                 .toString(compactJSON));
 
         writer.element("input", "type", "hidden", "id", clientId + "-values", "name", getControlName() + "-values",
@@ -459,7 +431,7 @@ public class Palette extends AbstractField
      */
     Binding defaultValidate()
     {
-        return this.defaultProvider.defaultValidatorBinding("selected", this.componentResources);
+        return this.defaultProvider.defaultValidatorBinding("selected", this.resources);
     }
 
     // Avoids a strange Javassist bytecode error, c'est lavie!

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/3f442c59/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Select.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Select.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Select.java
index ee3f9cc..d128021 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Select.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Select.java
@@ -1,4 +1,4 @@
-// Copyright 2007, 2008, 2009, 2010, 2011 The Apache Software Foundation
+// Copyright 2007, 2008, 2009, 2010, 2011, 2012 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.
@@ -75,9 +75,6 @@ public class Select extends AbstractField
     @Parameter
     private ValueEncoder encoder;
 
-    @Inject
-    private ComponentDefaultProvider defaultProvider;
-
     // Maybe this should default to property "<componentId>Model"?
     /**
      * The model used to identify the option groups and options to be presented to the user. This can be generated
@@ -104,9 +101,6 @@ public class Select extends AbstractField
     @Inject
     private Request request;
 
-    @Inject
-    private ComponentResources resources;
-
     @Environmental
     private ValidationTracker tracker;
 

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/3f442c59/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/components/KaptchaField.java
----------------------------------------------------------------------
diff --git a/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/components/KaptchaField.java b/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/components/KaptchaField.java
index f51168b..a559aba 100644
--- a/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/components/KaptchaField.java
+++ b/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/components/KaptchaField.java
@@ -14,8 +14,9 @@
 
 package org.apache.tapestry5.kaptcha.components;
 
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.Environmental;
+import org.apache.tapestry5.BindingConstants;
+import org.apache.tapestry5.FieldValidator;
+import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.annotations.Import;
 import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.annotations.SupportsInformalParameters;
@@ -25,7 +26,6 @@ import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.kaptcha.KaptchaSymbolConstants;
 import org.apache.tapestry5.services.FieldValidatorSource;
-import org.apache.tapestry5.services.Request;
 
 /**
  * Field paired with a {@link KaptchaImage} to ensure that the user has provided
@@ -57,18 +57,9 @@ public class KaptchaField extends AbstractField
     private boolean visible;
 
     @Inject
-    private Request request;
-
-    @Inject
     private Messages messages;
 
     @Inject
-    private ComponentResources resources;
-
-    @Environmental
-    private ValidationTracker validationTracker;
-
-    @Inject
     private FieldValidatorSource fieldValidatorSource;
 
     /**

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/3f442c59/tapestry-upload/src/main/java/org/apache/tapestry5/upload/components/Upload.java
----------------------------------------------------------------------
diff --git a/tapestry-upload/src/main/java/org/apache/tapestry5/upload/components/Upload.java b/tapestry-upload/src/main/java/org/apache/tapestry5/upload/components/Upload.java
index db50746..6021baf 100755
--- a/tapestry-upload/src/main/java/org/apache/tapestry5/upload/components/Upload.java
+++ b/tapestry-upload/src/main/java/org/apache/tapestry5/upload/components/Upload.java
@@ -1,4 +1,4 @@
-// Copyright 2007, 2008, 2009, 2011 The Apache Software Foundation
+// Copyright 2007, 2008, 2009, 2011, 2012 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.
@@ -15,15 +15,16 @@
 package org.apache.tapestry5.upload.components;
 
 import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.*;
+import org.apache.tapestry5.annotations.Events;
+import org.apache.tapestry5.annotations.Mixin;
+import org.apache.tapestry5.annotations.Parameter;
+import org.apache.tapestry5.annotations.Path;
 import org.apache.tapestry5.corelib.base.AbstractField;
 import org.apache.tapestry5.corelib.mixins.RenderDisabled;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
 import org.apache.tapestry5.services.FieldValidatorDefaultSource;
 import org.apache.tapestry5.services.FormSupport;
 import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
 import org.apache.tapestry5.upload.services.MultipartDecoder;
 import org.apache.tapestry5.upload.services.UploadedFile;
 
@@ -53,27 +54,12 @@ public class Upload extends AbstractField
     @SuppressWarnings("unchecked")
     private FieldValidator<Object> validate;
 
-    @Environmental
-    private ValidationTracker tracker;
-
     @Inject
     private MultipartDecoder decoder;
 
-    @Environmental
-    private FormSupport formSupport;
-
-    @Inject
-    private ComponentDefaultProvider defaultProvider;
-
-    @Inject
-    private ComponentResources resources;
-
     @Inject
     private Locale locale;
 
-    @Inject
-    private FieldValidationSupport fieldValidationSupport;
-
     @SuppressWarnings("unused")
     @Mixin
     private RenderDisabled renderDisabled;
@@ -82,11 +68,6 @@ public class Upload extends AbstractField
     @Path("upload.js")
     private Asset uploadScript;
 
-    @Inject
-    private Request request;
-
-    @Environmental
-    private JavaScriptSupport javaScriptSupport;
 
     /**
      * Computes a default value for the "validate" parameter using {@link FieldValidatorDefaultSource}.
@@ -107,7 +88,7 @@ public class Upload extends AbstractField
         this.value = value;
         if (validate != null) this.validate = validate;
         this.decoder = decoder;
-        this.tracker = tracker;
+        this.validationTracker = tracker;
         this.resources = resources;
         this.fieldValidationSupport = fieldValidationSupport;
     }
@@ -128,7 +109,7 @@ public class Upload extends AbstractField
             fieldValidationSupport.validate(uploaded, resources, validate);
         } catch (ValidationException ex)
         {
-            tracker.recordError(this, ex.getMessage());
+            validationTracker.recordError(this, ex.getMessage());
         }
 
         value = uploaded;