You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by km...@apache.org on 2008/02/17 23:10:30 UTC

svn commit: r628562 - in /tapestry/tapestry5/trunk/tapestry-core/src: main/java/org/apache/tapestry/internal/services/ main/resources/org/apache/tapestry/internal/services/ test/java/org/apache/tapestry/internal/services/

Author: kmenard
Date: Sun Feb 17 14:10:29 2008
New Revision: 628562

URL: http://svn.apache.org/viewvc?rev=628562&view=rev
Log:
Fixed TAPESTRY-1978: When supplying an empty parameter binding, indicate problem parameter in error message.

Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/BindingSourceImpl.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/PageElementFactoryImpl.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ServicesMessages.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/services/ServicesStrings.properties
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/BindingSourceImplTest.java

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/BindingSourceImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/BindingSourceImpl.java?rev=628562&r1=628561&r2=628562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/BindingSourceImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/BindingSourceImpl.java Sun Feb 17 14:10:29 2008
@@ -47,7 +47,16 @@
         notNull(container, "container");
         notNull(component, "component");
         notBlank(defaultPrefix, "defaultPrefix");
-        notBlank(expression, "expression");
+
+        try
+        {
+            notBlank(expression, "expression");
+        }
+        catch (final Exception ex)
+        {
+            throw new TapestryException(ServicesMessages.emptyBinding(description), location, ex);
+        }
+
         // Location might be null
 
         String subexpression = expression;

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/PageElementFactoryImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/PageElementFactoryImpl.java?rev=628562&r1=628561&r2=628562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/PageElementFactoryImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/PageElementFactoryImpl.java Sun Feb 17 14:10:29 2008
@@ -302,7 +302,7 @@
             return new AttributeExpansionBinding(provider, location);
         }
 
-        return _bindingSource.newBinding("parameter " + parameterName, loadingComponentResources,
+        return _bindingSource.newBinding(parameterName, loadingComponentResources,
                                          embeddedComponentResources, defaultBindingPrefix, expression, location);
     }
 }

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ServicesMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ServicesMessages.java?rev=628562&r1=628561&r2=628562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ServicesMessages.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ServicesMessages.java Sun Feb 17 14:10:29 2008
@@ -404,4 +404,9 @@
         return MESSAGES.format("no-translator-for-type", ClassFabUtils.toJavaClassName(valueType),
                                InternalUtils.joinSorted(typeNames));
     }
+
+    static String emptyBinding(String parameterName)
+    {
+        return MESSAGES.format("parameter-binding-must-not-be-empty", parameterName);
+    }
 }

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/services/ServicesStrings.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/services/ServicesStrings.properties?rev=628562&r1=628561&r2=628562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/services/ServicesStrings.properties (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/services/ServicesStrings.properties Sun Feb 17 14:10:29 2008
@@ -91,4 +91,5 @@
   Try increasing the hard limit (symbol tapestry.page-pool.hard-limit) to allow additional instances to be created, \
   or increasing the soft wait (symbol tapestry.page-pool.soft-wait) to trade away some throughput for more efficient use of page instances.
 unknown-null-field-strategy-name=Unrecognized name '%s' locating a null field strategy.  Available strategies: %s.
-no-translator-for-type=No translator is defined for type %s.  Registered types: %s.
\ No newline at end of file
+no-translator-for-type=No translator is defined for type %s.  Registered types: %s.
+parameter-binding-must-not-be-empty=Parameter '%s' must have a non-empty binding.
\ No newline at end of file

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/BindingSourceImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/BindingSourceImplTest.java?rev=628562&r1=628561&r2=628562&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/BindingSourceImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/BindingSourceImplTest.java Sun Feb 17 14:10:29 2008
@@ -176,4 +176,37 @@
 
         verify();
     }
+
+    @Test
+    public void empty_parameter_binding()
+    {
+        BindingFactory factory = mockBindingFactory();
+        ComponentResources container = mockComponentResources();
+        ComponentResources component = mockComponentResources();
+        Location l = mockLocation();
+
+        String defaultPrefix = "def";
+        String description = "wilma";
+        String expression = "";
+
+        replay();
+
+        Map<String, BindingFactory> map = newMap();
+
+        map.put(defaultPrefix, factory);
+
+        BindingSource source = new BindingSourceImpl(map);
+
+        try
+        {
+            source.newBinding(description, container, component, defaultPrefix, expression, l);
+        }
+        catch (TapestryException ex)
+        {
+            assertEquals(ex.getMessage(), "Parameter 'wilma' must have a non-empty binding.");
+            assertSame(ex.getLocation(), l);
+        }
+
+        verify();
+    }
 }



Re: svn commit: r628562 - in /tapestry/tapestry5/trunk/tapestry-core/src: main/java/org/apache/tapestry/internal/services/ main/resources/org/apache/tapestry/internal/services/ test/java/org/apache/tapestry/internal/services/

Posted by Howard Lewis Ship <hl...@gmail.com>.
On Feb 17, 2008 2:10 PM,  <km...@apache.org> wrote:
> Author: kmenard
> Date: Sun Feb 17 14:10:29 2008
> New Revision: 628562
>
> URL: http://svn.apache.org/viewvc?rev=628562&view=rev
> Log:
> Fixed TAPESTRY-1978: When supplying an empty parameter binding, indicate problem parameter in error message.
>
> Modified:
>     tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/BindingSourceImpl.java
>     tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/PageElementFactoryImpl.java
>     tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ServicesMessages.java
>     tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/services/ServicesStrings.properties
>     tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/BindingSourceImplTest.java
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/BindingSourceImpl.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/BindingSourceImpl.java?rev=628562&r1=628561&r2=628562&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/BindingSourceImpl.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/BindingSourceImpl.java Sun Feb 17 14:10:29 2008
> @@ -47,7 +47,16 @@
>          notNull(container, "container");
>          notNull(component, "component");
>          notBlank(defaultPrefix, "defaultPrefix");
> -        notBlank(expression, "expression");
> +
> +        try
> +        {
> +            notBlank(expression, "expression");
> +        }
> +        catch (final Exception ex)
> +        {
> +            throw new TapestryException(ServicesMessages.emptyBinding(description), location, ex);
> +        }
> +

Please use the method InternalUtils.isBlank() rather than the Defense
call.  It's what Defense itself calls and its much more reasonable to
check a boolean than throw/catch an exception.

>          // Location might be null
>
>          String subexpression = expression;
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/PageElementFactoryImpl.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/PageElementFactoryImpl.java?rev=628562&r1=628561&r2=628562&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/PageElementFactoryImpl.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/PageElementFactoryImpl.java Sun Feb 17 14:10:29 2008
> @@ -302,7 +302,7 @@
>              return new AttributeExpansionBinding(provider, location);
>          }
>
> -        return _bindingSource.newBinding("parameter " + parameterName, loadingComponentResources,
> +        return _bindingSource.newBinding(parameterName, loadingComponentResources,
>                                           embeddedComponentResources, defaultBindingPrefix, expression, location);
>      }
>  }


I'm trying to remember the value of using a "parameter " prefix here
... it may have been to do with expansions and perhaps inherited
parameters.

>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ServicesMessages.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ServicesMessages.java?rev=628562&r1=628561&r2=628562&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ServicesMessages.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ServicesMessages.java Sun Feb 17 14:10:29 2008
> @@ -404,4 +404,9 @@
>          return MESSAGES.format("no-translator-for-type", ClassFabUtils.toJavaClassName(valueType),
>                                 InternalUtils.joinSorted(typeNames));
>      }
> +
> +    static String emptyBinding(String parameterName)
> +    {
> +        return MESSAGES.format("parameter-binding-must-not-be-empty", parameterName);
> +    }
>  }
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/services/ServicesStrings.properties
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/services/ServicesStrings.properties?rev=628562&r1=628561&r2=628562&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/services/ServicesStrings.properties (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/services/ServicesStrings.properties Sun Feb 17 14:10:29 2008
> @@ -91,4 +91,5 @@
>    Try increasing the hard limit (symbol tapestry.page-pool.hard-limit) to allow additional instances to be created, \
>    or increasing the soft wait (symbol tapestry.page-pool.soft-wait) to trade away some throughput for more efficient use of page instances.
>  unknown-null-field-strategy-name=Unrecognized name '%s' locating a null field strategy.  Available strategies: %s.
> -no-translator-for-type=No translator is defined for type %s.  Registered types: %s.
> \ No newline at end of file
> +no-translator-for-type=No translator is defined for type %s.  Registered types: %s.
> +parameter-binding-must-not-be-empty=Parameter '%s' must have a non-empty binding.
> \ No newline at end of file

I would have phrased this as something like "The expression for
parameter '%s' was blank."

>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/BindingSourceImplTest.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/BindingSourceImplTest.java?rev=628562&r1=628561&r2=628562&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/BindingSourceImplTest.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/BindingSourceImplTest.java Sun Feb 17 14:10:29 2008
> @@ -176,4 +176,37 @@
>
>          verify();
>      }
> +
> +    @Test
> +    public void empty_parameter_binding()
> +    {
> +        BindingFactory factory = mockBindingFactory();
> +        ComponentResources container = mockComponentResources();
> +        ComponentResources component = mockComponentResources();
> +        Location l = mockLocation();
> +
> +        String defaultPrefix = "def";
> +        String description = "wilma";
> +        String expression = "";
> +
> +        replay();
> +
> +        Map<String, BindingFactory> map = newMap();
> +
> +        map.put(defaultPrefix, factory);
> +
> +        BindingSource source = new BindingSourceImpl(map);
> +
> +        try
> +        {
> +            source.newBinding(description, container, component, defaultPrefix, expression, l);
> +        }
> +        catch (TapestryException ex)
> +        {
> +            assertEquals(ex.getMessage(), "Parameter 'wilma' must have a non-empty binding.");
> +            assertSame(ex.getLocation(), l);
> +        }
> +
> +        verify();
> +    }
>  }
>
>
>

Nice to see some fresh blood making commits!

-- 
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