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