Author: drobiazko
Date: Thu Aug 14 13:22:52 2008
New Revision: 686020

URL: http://svn.apache.org/viewvc?rev=686020&view=rev
Log:
TAPESTRY-2137: The common idiom of connecting a component's id to a container 
property should be easier: an attribute of the @Parameter annotation

Modified:
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Parameter.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanDisplay.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Loop.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Output.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/OutputRaw.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Radio.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java
    
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/ParameterWorkerTest.java

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Parameter.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Parameter.java?rev=686020&r1=686019&r2=686020&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Parameter.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Parameter.java
 Thu Aug 14 13:22:52 2008
@@ -84,4 +84,10 @@
      * have more than a single principal parameter.
      */
     boolean principal() default false;
+    
+    /**
+     * Used to create a binding to be used as a parameter default without to 
provide a default binding method.
+     * If true, then the container's property matching the component id is 
used to bind the parameter.
+     */
+    boolean autoconnect() default false;
 }

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.java?rev=686020&r1=686019&r2=686020&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.java
 Thu Aug 14 13:22:52 2008
@@ -49,7 +49,7 @@
     /**
      * The objects to iterate over (passed to the internal Loop component).
      */
-    @Parameter(required = true)
+    @Parameter(required = true, autoconnect = true)
     private Iterable source;
 
     /**
@@ -123,8 +123,6 @@
     @Inject
     private ComponentClassCache componentClassCache;
 
-    @Inject
-    private ComponentDefaultProvider componentDefaultProvider;
 
     @Inject
     private PageRenderQueue pageRenderQueue;
@@ -166,11 +164,6 @@
         }
     };
 
-    Binding defaultSource()
-    {
-        return componentDefaultProvider.defaultBinding("source", resources);
-    }
-
 
     String defaultElement()
     {

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanDisplay.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanDisplay.java?rev=686020&r1=686019&r2=686020&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanDisplay.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanDisplay.java
 Thu Aug 14 13:22:52 2008
@@ -14,7 +14,6 @@
 
 package org.apache.tapestry5.corelib.components;
 
-import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.BindingConstants;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.annotations.Parameter;
@@ -25,7 +24,6 @@
 import org.apache.tapestry5.internal.beaneditor.BeanModelUtils;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.services.BeanModelSource;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
 
 /**
  * Used to display the properties of a bean, using an underlying [EMAIL 
PROTECTED] BeanModel}. The output definition list: a
@@ -49,7 +47,7 @@
      * The object to be rendered; if not explicitly bound, a default binding 
to a property whose name matches this
      * component's id will be used.
      */
-    @Parameter(required = true, allowNull = false)
+    @Parameter(required = true, allowNull = false, autoconnect = true)
     @Property(write = false)
     private Object object;
 
@@ -107,10 +105,6 @@
     @Parameter(defaultPrefix = BindingConstants.LITERAL)
     private String add;
 
-
-    @Inject
-    private ComponentDefaultProvider defaultProvider;
-
     @Inject
     private ComponentResources resources;
 
@@ -120,14 +114,6 @@
     @Property
     private String propertyName;
 
-    /**
-     * Defaults the object parameter to a property of the container matching 
the BeanEditForm's id.
-     */
-    Binding defaultObject()
-    {
-        return defaultProvider.defaultBinding("object", resources);
-    }
-
     void setupRender()
     {
         if (model == null) model = modelSource.create(object.getClass(), false,

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.java?rev=686020&r1=686019&r2=686020&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.java
 Thu Aug 14 13:22:52 2008
@@ -23,7 +23,6 @@
 import org.apache.tapestry5.internal.beaneditor.BeanModelUtils;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.services.BeanModelSource;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
 
 /**
  * A component that creates an entire form editing the properties of a 
particular bean. Inspired by <a
@@ -59,7 +58,7 @@
      * value is ready to be read or updated. Often, the BeanEditForm can 
create the object as needed (assuming a public,
      * no arguments constructor).  The object property defaults to a property 
with the same name as the component id.
      */
-    @Parameter(required = true)
+    @Parameter(required = true, autoconnect = true)
     @Property
     private Object object;
 
@@ -121,22 +120,11 @@
     private BeanModel model;
 
     @Inject
-    private ComponentDefaultProvider defaultProvider;
-
-    @Inject
     private ComponentResources resources;
 
     @Inject
     private BeanModelSource beanModelSource;
 
-    /**
-     * Defaults the object parameter to a property of the container matching 
the BeanEditForm's id.
-     */
-    Binding defaultObject()
-    {
-        return defaultProvider.defaultBinding("object", resources);
-    }
-
 
     void onPrepareFromForm()
     {

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.java?rev=686020&r1=686019&r2=686020&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.java
 Thu Aug 14 13:22:52 2008
@@ -25,7 +25,6 @@
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.services.BeanModelSource;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
 import org.apache.tapestry5.services.FormSupport;
 
 /**
@@ -56,7 +55,7 @@
      * for the component is submitted. Typically, the container will listen 
for a "prepare" event, in order to ensure
      * that a non-null value is ready to be read or updated.
      */
-    @Parameter
+    @Parameter(autoconnect = true)
     private Object object;
 
     /**
@@ -111,9 +110,6 @@
     private BeanModelSource modelSource;
 
     @Inject
-    private ComponentDefaultProvider defaultProvider;
-
-    @Inject
     private ComponentResources resources;
 
     @Environmental
@@ -124,14 +120,6 @@
     @Property
     private String propertyName;
 
-    /**
-     * Defaults the object parameter to a property of the container matching 
the BeanEditForm's id.
-     */
-    Binding defaultObject()
-    {
-        return defaultProvider.defaultBinding("object", resources);
-    }
-
     // Needed for testing as well
 
     public Object getObject()

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Loop.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Loop.java?rev=686020&r1=686019&r2=686020&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Loop.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Loop.java
 Thu Aug 14 13:22:52 2008
@@ -18,7 +18,6 @@
 import org.apache.tapestry5.annotations.*;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
 import org.apache.tapestry5.services.FormSupport;
 import org.apache.tapestry5.services.Heartbeat;
 
@@ -201,7 +200,7 @@
      * Defines the collection of values for the loop to iterate over. If not 
specified, defaults to a property of the
      * container whose name matches the Loop cmponent's id.
      */
-    @Parameter(required = true, principal = true)
+    @Parameter(required = true, principal = true, autoconnect = true)
     private Iterable<?> source;
 
     /**
@@ -250,13 +249,6 @@
     @Inject
     private ComponentResources resources;
 
-    @Inject
-    private ComponentDefaultProvider componentDefaultProvider;
-
-    Binding defaultSource()
-    {
-        return componentDefaultProvider.defaultBinding("source", resources);
-    }
 
     String defaultElement()
     {

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Output.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Output.java?rev=686020&r1=686019&r2=686020&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Output.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Output.java
 Thu Aug 14 13:22:52 2008
@@ -14,14 +14,12 @@
 
 package org.apache.tapestry5.corelib.components;
 
-import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.annotations.SupportsInformalParameters;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
 
 import java.text.Format;
 
@@ -35,7 +33,7 @@
     /**
      * The value to be output (before formatting). If the formatted value is 
blank, no output is produced.
      */
-    @Parameter(required = true)
+    @Parameter(required = true, autoconnect = true)
     private Object value;
 
     /**
@@ -59,15 +57,8 @@
     private String elementName;
 
     @Inject
-    private ComponentDefaultProvider defaultProvider;
-
-    @Inject
     private ComponentResources resources;
 
-    Binding defaultValue()
-    {
-        return defaultProvider.defaultBinding("value", resources);
-    }
 
     boolean beginRender(MarkupWriter writer)
     {

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/OutputRaw.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/OutputRaw.java?rev=686020&r1=686019&r2=686020&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/OutputRaw.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/OutputRaw.java
 Thu Aug 14 13:22:52 2008
@@ -14,12 +14,10 @@
 
 package org.apache.tapestry5.corelib.components;
 
-import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
 
 /**
  * Used to output raw markup to the client. Unlike, say, an expansion, the 
output from OutputRaw is unfiltered, with any
@@ -34,20 +32,12 @@
      * The value to to render. If unbound, and a property of the container 
matches the component's id, then that
      * property will be the source of the value.
      */
-    @Parameter(required = true)
+    @Parameter(required = true, autoconnect = true)
     private String value;
 
     @Inject
-    private ComponentDefaultProvider defaultProvider;
-
-    @Inject
     private ComponentResources resources;
 
-    Binding defaultValue()
-    {
-        return defaultProvider.defaultBinding("value", resources);
-    }
-
     boolean beginRender(MarkupWriter writer)
     {
         if (value != null && value.length() > 0) writer.writeRaw(value);

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Radio.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Radio.java?rev=686020&r1=686019&r2=686020&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Radio.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Radio.java
 Thu Aug 14 13:22:52 2008
@@ -48,7 +48,7 @@
      * The value associated with this radio button. This is used to determine 
which radio button will be selected when
      * the page is rendered, and also becomes the value assigned when the form 
is submitted.
      */
-    @Parameter(required = true, principal = true)
+    @Parameter(required = true, principal = true, autoconnect = true)
     private Object value;
 
     @Inject
@@ -88,11 +88,6 @@
         return defaultProvider.defaultLabel(resources);
     }
 
-    Binding defaultValue()
-    {
-        return defaultProvider.defaultBinding("value", resources);
-    }
-
     /**
      * Returns the control name provided by the containing [EMAIL PROTECTED] 
org.apache.tapestry5.RadioContainer}.
      */

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.java?rev=686020&r1=686019&r2=686020&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.java
 Thu Aug 14 13:22:52 2008
@@ -29,7 +29,7 @@
     /**
      * The property read and updated by the group as a whole.
      */
-    @Parameter(required = true, principal = true)
+    @Parameter(required = true, principal = true, autoconnect = true)
     private Object value;
 
     /**
@@ -74,11 +74,6 @@
 
     private String controlName;
 
-    final Binding defaultValue()
-    {
-        return defaultProvider.defaultBinding("value", resources);
-    }
-
     String defaultLabel()
     {
         return defaultProvider.defaultLabel(resources);

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java?rev=686020&r1=686019&r2=686020&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java
 Thu Aug 14 13:22:52 2008
@@ -35,10 +35,13 @@
     private static final String BIND_METHOD_NAME = 
ParameterWorker.class.getName() + ".bind";
 
     private final BindingSource bindingSource;
+    
+    private ComponentDefaultProvider defaultProvider;
 
-    public ParameterWorker(BindingSource bindingSource)
+    public ParameterWorker(BindingSource bindingSource, 
ComponentDefaultProvider defaultProvider)
     {
         this.bindingSource = bindingSource;
+        this.defaultProvider = defaultProvider;
     }
 
     public void transform(final ClassTransformation transformation, 
MutableComponentModel model)
@@ -90,7 +93,7 @@
 
         String invariantFieldName = addParameterSetup(name, 
annotation.defaultPrefix(), annotation.value(),
                                                       parameterName, 
cachedFieldName, cache, type, resourcesFieldName,
-                                                      transformation);
+                                                      transformation, 
annotation.autoconnect());
 
         addReaderMethod(name, cachedFieldName, invariantFieldName, cache, 
parameterName, type, resourcesFieldName,
                         transformation);
@@ -105,7 +108,7 @@
      */
     private String addParameterSetup(String fieldName, String defaultPrefix, 
String defaultBinding,
                                      String parameterName, String 
cachedFieldName, boolean cache, String fieldType,
-                                     String resourcesFieldName, 
ClassTransformation transformation)
+                                     String resourcesFieldName, 
ClassTransformation transformation, boolean autoconnect)
     {
         String defaultFieldName = transformation.addField(Modifier.PRIVATE, 
fieldType, fieldName + "_default");
 
@@ -114,7 +117,7 @@
         BodyBuilder builder = new BodyBuilder().begin();
 
         addDefaultBindingSetup(parameterName, defaultPrefix, defaultBinding, 
resourcesFieldName, transformation,
-                               builder);
+                               builder, autoconnect);
 
         builder.addln("%s = %s.isInvariant(\"%s\");", invariantFieldName, 
resourcesFieldName, parameterName);
 
@@ -158,7 +161,7 @@
 
     private void addDefaultBindingSetup(String parameterName, String 
defaultPrefix, String defaultBinding,
                                         String resourcesFieldName, 
ClassTransformation transformation,
-                                        BodyBuilder builder)
+                                        BodyBuilder builder, boolean 
autoconnect)
     {
         if (InternalUtils.isNonBlank(defaultBinding))
         {
@@ -174,6 +177,18 @@
             return;
 
         }
+        
+        if(autoconnect)
+        {
+            String defaultProviderFieldName = 
transformation.addInjectedField(ComponentDefaultProvider.class,
+                    "defaultProvider", defaultProvider);
+            
+            builder.addln("if (! %s.isBound(\"%s\"))", resourcesFieldName, 
parameterName);
+            
+            builder.addln("  %s.bindParameter(\"%s\", 
%s.defaultBinding(\"%s\", %s));", resourcesFieldName,
+                            parameterName, defaultProviderFieldName, 
parameterName, resourcesFieldName);
+            return;
+        }
 
         // If no default binding expression provided in the annotation, then 
look for a default
         // binding method to provide the binding.

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/ParameterWorkerTest.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/ParameterWorkerTest.java?rev=686020&r1=686019&r2=686020&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/ParameterWorkerTest.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/ParameterWorkerTest.java
 Thu Aug 14 13:22:52 2008
@@ -35,6 +35,7 @@
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.runtime.Component;
 import org.apache.tapestry5.services.BindingSource;
+import org.apache.tapestry5.services.ComponentDefaultProvider;
 import org.slf4j.Logger;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.Test;
@@ -461,6 +462,7 @@
         final BindingSource source = mockBindingSource();
         final InternalComponentResources resources = 
mockInternalComponentResources();
         final Binding binding = mockBinding();
+        ComponentDefaultProvider defaultProvider = 
newMock(ComponentDefaultProvider.class);
         String boundValue = "howdy!";
         final Logger logger = mockLogger();
 
@@ -486,7 +488,7 @@
         };
 
         Component component = setupForIntegrationTest(resources, logger, 
DefaultParameterComponent.class.getName(),
-                                                      model, source, 
phaseTwoTraining);
+                                                      model, source, 
phaseTwoTraining, defaultProvider);
 
         train_isLoaded(resources, true);
         train_isBound(resources, "value", true);
@@ -505,6 +507,7 @@
     {
         BindingSource source = mockBindingSource();
         final InternalComponentResources resources = 
mockInternalComponentResources();
+        ComponentDefaultProvider defaultProvider = 
newMock(ComponentDefaultProvider.class);
         _binding = mockBinding();
         String boundValue = "yowza!";
         final Logger logger = mockLogger();
@@ -531,7 +534,7 @@
 
         Component component = setupForIntegrationTest(resources, logger,
                                                       
DefaultParameterBindingMethodComponent.class.getName(), model,
-                                                      source, 
phaseTwoTraining);
+                                                      source, 
phaseTwoTraining, defaultProvider);
 
         train_isLoaded(resources, true);
         train_isBound(resources, "value", true);
@@ -562,6 +565,7 @@
     {
         final Logger logger = mockLogger();
         MutableComponentModel model = mockMutableComponentModel(logger);
+        ComponentDefaultProvider defaultProvider = 
newMock(ComponentDefaultProvider.class);
 
         model.addParameter("invariantObject", false, true, 
BindingConstants.PROP);
         model.addParameter("invariantPrimitive", false, true, 
BindingConstants.PROP);
@@ -583,12 +587,12 @@
         stub_isDebugEnabled(logger, false);
 
         return setupForIntegrationTest(resources, logger, 
ParameterComponent.class.getName(), model,
-                                       mockBindingSource(), phaseTwoTraining);
+                                       mockBindingSource(), phaseTwoTraining, 
defaultProvider);
     }
 
     private Component setupForIntegrationTest(InternalComponentResources 
resources, Logger logger,
                                               String componentClassName, 
MutableComponentModel model,
-                                              BindingSource source, Runnable 
phaseTwoTraining) throws Exception
+                                              BindingSource source, Runnable 
phaseTwoTraining, ComponentDefaultProvider defaultProvider) throws Exception
     {
         ClassFactoryClassPool pool = new 
ClassFactoryClassPool(contextClassLoader);
 
@@ -605,7 +609,7 @@
         InternalClassTransformation transformation = new 
InternalClassTransformationImpl(cf, ctClass, null, model,
                                                                                
          null);
 
-        new ParameterWorker(source).transform(transformation, model);
+        new ParameterWorker(source, defaultProvider).transform(transformation, 
model);
 
         verify();
 


Reply via email to