You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by Howard Lewis Ship <hl...@gmail.com> on 2008/08/14 23:45:06 UTC

Re: svn commit: r686020 - in /tapestry/tapestry5/trunk/tapestry-core/src: main/java/org/apache/tapestry5/annotations/ main/java/org/apache/tapestry5/corelib/components/ main/java/org/apache/tapestry5/internal/transform/ test/java/org/apache/tapestry5

Very cool!  However, there's a page in the cookbook about this:

http://tapestry.formos.com/nightly/tapestry5/cookbook/defaultparameter.html



On Thu, Aug 14, 2008 at 1:22 PM,  <dr...@apache.org> wrote:
> 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 {@link 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 {@link 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();
>
>
>
>



-- 
Howard M. Lewis Ship

Creator Apache Tapestry and Apache HiveMind

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org


Re: svn commit: r686020 - in /tapestry/tapestry5/trunk/tapestry-core/src: main/java/org/apache/tapestry5/annotations/ main/java/org/apache/tapestry5/corelib/components/ main/java/org/apache/tapestry5/internal/transform/ test/java/org/apache/tapestry5

Posted by Howard Lewis Ship <hl...@gmail.com>.
Thanks!  It's going to be really short now!

On Thu, Aug 14, 2008 at 3:19 PM, Igor Drobiazko
<ig...@gmail.com> wrote:
> Oops!!! I missed that page. I'll update it.
>
> On Thu, Aug 14, 2008 at 11:45 PM, Howard Lewis Ship <hl...@gmail.com>wrote:
>
>> Very cool!  However, there's a page in the cookbook about this:
>>
>> http://tapestry.formos.com/nightly/tapestry5/cookbook/defaultparameter.html
>>
>>  <de...@tapestry.apache.org>
>>
>>
> --
> Best regards,
>
> Igor Drobiazko
>



-- 
Howard M. Lewis Ship

Creator Apache Tapestry and Apache HiveMind

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org


Re: svn commit: r686020 - in /tapestry/tapestry5/trunk/tapestry-core/src: main/java/org/apache/tapestry5/annotations/ main/java/org/apache/tapestry5/corelib/components/ main/java/org/apache/tapestry5/internal/transform/ test/java/org/apache/tapestry5

Posted by Igor Drobiazko <ig...@gmail.com>.
Oops!!! I missed that page. I'll update it.

On Thu, Aug 14, 2008 at 11:45 PM, Howard Lewis Ship <hl...@gmail.com>wrote:

> Very cool!  However, there's a page in the cookbook about this:
>
> http://tapestry.formos.com/nightly/tapestry5/cookbook/defaultparameter.html
>
>  <de...@tapestry.apache.org>
>
>
-- 
Best regards,

Igor Drobiazko