Author: hlship
Date: Wed May 26 00:40:39 2010
New Revision: 948276

URL: http://svn.apache.org/viewvc?rev=948276&view=rev
Log:
Change F to use the new Mapper interface instead of Coercion (to make it easier 
to combine mappers together).

Added:
    
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/AbstractMapper.java
   (with props)
    
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/Mapper.java
   (with props)
Modified:
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryInternalUtils.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ObjectComponentEventResultProcessor.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/DateFieldStack.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavascriptStackPathConstructorImpl.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ImportWorker.java
    
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiZoneUpdateInsideForm.java
    
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/F.java
    
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/func/FuncTest.java

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryInternalUtils.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryInternalUtils.java?rev=948276&r1=948275&r2=948276&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryInternalUtils.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryInternalUtils.java
 Wed May 26 00:40:39 2010
@@ -34,8 +34,9 @@ import org.apache.tapestry5.ioc.Resource
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.Defense;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.Coercion;
+import org.apache.tapestry5.ioc.util.func.AbstractMapper;
 import org.apache.tapestry5.ioc.util.func.F;
+import org.apache.tapestry5.ioc.util.func.Mapper;
 import org.apache.tapestry5.services.javascript.StylesheetLink;
 
 /**
@@ -561,13 +562,13 @@ public class TapestryInternalUtils
     }
 
     /**
-     * Common coercion, used primarily with {...@link F#map(Coercion, 
java.util.Collection)}
+     * Common mapper, used primarily with {...@link F#map(Mapper, 
java.util.Collection)}
      * 
      * @since 5.2.0
      */
-    public static Coercion<Asset, StylesheetLink> assetToStylesheetLink = new 
Coercion<Asset, StylesheetLink>()
+    public static Mapper<Asset, StylesheetLink> assetToStylesheetLink = new 
AbstractMapper<Asset, StylesheetLink>()
     {
-        public StylesheetLink coerce(Asset input)
+        public StylesheetLink map(Asset input)
         {
             return new StylesheetLink(input);
         };

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ObjectComponentEventResultProcessor.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ObjectComponentEventResultProcessor.java?rev=948276&r1=948275&r2=948276&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ObjectComponentEventResultProcessor.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ObjectComponentEventResultProcessor.java
 Wed May 26 00:40:39 2010
@@ -19,9 +19,9 @@ import java.util.Collection;
 import java.util.List;
 
 import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.ioc.services.Coercion;
 import org.apache.tapestry5.ioc.util.AvailableValues;
 import org.apache.tapestry5.ioc.util.UnknownValueException;
+import org.apache.tapestry5.ioc.util.func.AbstractMapper;
 import org.apache.tapestry5.ioc.util.func.F;
 import org.apache.tapestry5.services.ComponentEventResultProcessor;
 
@@ -40,9 +40,9 @@ public class ObjectComponentEventResultP
 
     public void processResultValue(Object value) throws IOException
     {
-        List<String> names = F.map(new Coercion<Class, String>()
+        List<String> names = F.map(new AbstractMapper<Class, String>()
         {
-            public String coerce(Class input)
+            public String map(Class input)
             {
                 return ClassFabUtils.toJavaClassName(input);
             }

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/DateFieldStack.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/DateFieldStack.java?rev=948276&r1=948275&r2=948276&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/DateFieldStack.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/DateFieldStack.java
 Wed May 26 00:40:39 2010
@@ -23,9 +23,10 @@ import org.apache.tapestry5.Asset;
 import org.apache.tapestry5.SymbolConstants;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
 import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.services.Coercion;
 import org.apache.tapestry5.ioc.services.ThreadLocale;
+import org.apache.tapestry5.ioc.util.func.AbstractMapper;
 import org.apache.tapestry5.ioc.util.func.F;
+import org.apache.tapestry5.ioc.util.func.Mapper;
 import org.apache.tapestry5.json.JSONArray;
 import org.apache.tapestry5.json.JSONObject;
 import org.apache.tapestry5.services.AssetSource;
@@ -48,16 +49,16 @@ public class DateFieldStack implements J
         this.threadLocale = threadLocale;
         this.compactJSON = compactJSON;
 
-        Coercion<String, Asset> pathToAsset = new Coercion<String, Asset>()
+        Mapper<String, Asset> pathToAsset = new AbstractMapper<String, Asset>()
         {
-            public Asset coerce(String path)
+            public Asset map(String path)
             {
                 return assetSource.getExpandedAsset(path);
             }
         };
 
-        Coercion<String, StylesheetLink> pathToStylesheetLink = 
F.combine(pathToAsset,
-                TapestryInternalUtils.assetToStylesheetLink);
+        Mapper<String, StylesheetLink> pathToStylesheetLink = pathToAsset
+                .combine(TapestryInternalUtils.assetToStylesheetLink);
 
         javascriptStack = F.map(pathToAsset, 
"${tapestry.datepicker}/js/datepicker.js",
                 "org/apache/tapestry5/corelib/components/datefield.js");

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavascriptStackPathConstructorImpl.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavascriptStackPathConstructorImpl.java?rev=948276&r1=948275&r2=948276&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavascriptStackPathConstructorImpl.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavascriptStackPathConstructorImpl.java
 Wed May 26 00:40:39 2010
@@ -21,9 +21,10 @@ import org.apache.tapestry5.SymbolConsta
 import org.apache.tapestry5.internal.services.RequestConstants;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.Coercion;
 import org.apache.tapestry5.ioc.services.ThreadLocale;
+import org.apache.tapestry5.ioc.util.func.AbstractMapper;
 import org.apache.tapestry5.ioc.util.func.F;
+import org.apache.tapestry5.ioc.util.func.Mapper;
 import org.apache.tapestry5.services.assets.AssetPathConstructor;
 import org.apache.tapestry5.services.javascript.JavascriptStack;
 import org.apache.tapestry5.services.javascript.JavascriptStackSource;
@@ -38,9 +39,9 @@ public class JavascriptStackPathConstruc
 
     private final boolean combineScripts;
 
-    private final Coercion<Asset, String> toPath = new Coercion<Asset, 
String>()
+    private final Mapper<Asset, String> toPath = new AbstractMapper<Asset, 
String>()
     {
-        public String coerce(Asset input)
+        public String map(Asset input)
         {
             return input.toClientURL();
         }

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ImportWorker.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ImportWorker.java?rev=948276&r1=948275&r2=948276&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ImportWorker.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ImportWorker.java
 Wed May 26 00:40:39 2010
@@ -23,8 +23,8 @@ import org.apache.tapestry5.ComponentRes
 import org.apache.tapestry5.annotations.Import;
 import org.apache.tapestry5.annotations.SetupRender;
 import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.services.Coercion;
 import org.apache.tapestry5.ioc.services.SymbolSource;
+import org.apache.tapestry5.ioc.util.func.AbstractMapper;
 import org.apache.tapestry5.ioc.util.func.AbstractWorker;
 import org.apache.tapestry5.ioc.util.func.F;
 import org.apache.tapestry5.ioc.util.func.Worker;
@@ -206,9 +206,9 @@ public class ImportWorker implements Com
 
     private List<Asset> convertPathsToAssets(final Resource baseResource, 
final Locale locale, String[] assetPaths)
     {
-        return F.map(new Coercion<String, Asset>()
+        return F.map(new AbstractMapper<String, Asset>()
         {
-            public Asset coerce(String assetPath)
+            public Asset map(String assetPath)
             {
                 return assetSource.getAsset(baseResource, assetPath, locale);
             }

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiZoneUpdateInsideForm.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiZoneUpdateInsideForm.java?rev=948276&r1=948275&r2=948276&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiZoneUpdateInsideForm.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiZoneUpdateInsideForm.java
 Wed May 26 00:40:39 2010
@@ -30,7 +30,7 @@ import org.apache.tapestry5.annotations.
 import org.apache.tapestry5.corelib.components.Select;
 import org.apache.tapestry5.corelib.components.Zone;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.services.Coercion;
+import org.apache.tapestry5.ioc.util.func.AbstractMapper;
 import org.apache.tapestry5.ioc.util.func.F;
 import org.apache.tapestry5.services.Request;
 import org.apache.tapestry5.util.AbstractSelectModel;
@@ -104,9 +104,9 @@ public class MultiZoneUpdateInsideForm
 
         public List<OptionModel> getOptions()
         {
-            return F.map(new Coercion<SelectObj, OptionModel>()
+            return F.map(new AbstractMapper<SelectObj, OptionModel>()
             {
-                public OptionModel coerce(final SelectObj input)
+                public OptionModel map(final SelectObj input)
                 {
                     return new AbstractOptionModel()
                     {

Added: 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/AbstractMapper.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/AbstractMapper.java?rev=948276&view=auto
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/AbstractMapper.java
 (added)
+++ 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/AbstractMapper.java
 Wed May 26 00:40:39 2010
@@ -0,0 +1,34 @@
+// Copyright 2010 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry5.ioc.util.func;
+
+public abstract class AbstractMapper<S, T> implements Mapper<S, T>
+{
+    public <X> Mapper<S, X> combine(final Mapper<T, X> other)
+    {
+        final Mapper<S, T> stMapper = this;
+
+        return new AbstractMapper<S, X>()
+        {
+            public X map(S value)
+            {
+
+                T tValue = stMapper.map(value);
+
+                return other.map(tValue);
+            }
+        };
+    }
+}

Propchange: 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/AbstractMapper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/F.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/F.java?rev=948276&r1=948275&r2=948276&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/F.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/F.java
 Wed May 26 00:40:39 2010
@@ -37,10 +37,10 @@ public class F
     /**
      * Functional map (i.e., transform operation) from a Collection&lt;S&gt; 
to List&lt;T&gt;.
      */
-    public static <S, T> List<T> map(Coercion<S, T> coercion, Collection<S> 
source)
+    public static <S, T> List<T> map(Mapper<S, T> mapper, Collection<S> source)
     {
         Defense.notNull(source, "source");
-        Defense.notNull(coercion, "coercion");
+        Defense.notNull(mapper, "mapper");
 
         if (source.isEmpty())
             return Collections.emptyList();
@@ -49,7 +49,7 @@ public class F
 
         for (S s : source)
         {
-            T t = coercion.coerce(s);
+            T t = mapper.map(s);
 
             result.add(t);
         }
@@ -57,25 +57,23 @@ public class F
         return result;
     }
 
-    public static <S, T> List<T> map(Coercion<S, T> coercion, S... source)
+    public static <S, T> List<T> map(Mapper<S, T> mapper, S... source)
     {
         Defense.notNull(source, "source");
 
-        return map(coercion, Arrays.asList(source));
+        return map(mapper, Arrays.asList(source));
     }
 
-    public static <S, T1, T2> Coercion<S, T2> combine(final Coercion<S, T1> 
first, final Coercion<T1, T2> second)
+    public static <S, T> Mapper<S, T> toMapper(final Coercion<S, T> coercion)
     {
-        Defense.notNull(first, "first");
-        Defense.notNull(second, "second");
+        Defense.notNull(coercion, "coercion");
 
-        return new Coercion<S, T2>()
+        return new AbstractMapper<S, T>()
         {
-            public T2 coerce(S input)
-            {
-                T1 intermediate = first.coerce(input);
 
-                return second.coerce(intermediate);
+            public T map(S value)
+            {
+                return coercion.coerce(value);
             }
         };
     }
@@ -91,6 +89,17 @@ public class F
         }
     }
 
+    /**
+     * Performs an operation on each of the values.
+     */
+    public static <T> void each(Worker<T> operation, T... values)
+    {
+        for (T t : values)
+        {
+            operation.work(t);
+        }
+    }
+
     /** Returns a new list containing only those elements for which the 
predicate evaluates to true. */
     public static <T> List<T> filter(Predicate<? super T> predicate, List<T> 
source)
     {
@@ -222,11 +231,11 @@ public class F
         return invert(isNull);
     }
 
-    public static <S, T> Coercion<S, T> always(final T fixedResult)
+    public static <S, T> Mapper<S, T> always(final T fixedResult)
     {
-        return new Coercion<S, T>()
+        return new AbstractMapper<S, T>()
         {
-            public T coerce(S input)
+            public T map(S input)
             {
                 return fixedResult;
             }
@@ -234,8 +243,8 @@ public class F
     }
 
     /**
-     * Coercion factory that combines a Predicate with two coercions; 
evaluating the predicate selects one of the
-     * two coercions.
+     * Coercion factory that combines a Predicate with two {...@link Mapper}s; 
evaluating the predicate selects one of the
+     * two mappers.
      * 
      * @param predicate
      *            evaluated to selected a coercion
@@ -244,43 +253,43 @@ public class F
      * @param ifRejected
      *            used when predicate evaluates to false
      */
-    public static <S, T> Coercion<S, T> select(final Predicate<? super S> 
predicate, final Coercion<S, T> ifAccepted,
-            final Coercion<S, T> ifRejected)
+    public static <S, T> Mapper<S, T> select(final Predicate<? super S> 
predicate, final Mapper<S, T> ifAccepted,
+            final Mapper<S, T> ifRejected)
     {
-        return new Coercion<S, T>()
+        return new AbstractMapper<S, T>()
         {
-            public T coerce(S input)
+            public T map(S input)
             {
-                Coercion<S, T> active = predicate.accept(input) ? ifAccepted : 
ifRejected;
+                Mapper<S, T> active = predicate.accept(input) ? ifAccepted : 
ifRejected;
 
-                return active.coerce(input);
+                return active.map(input);
             }
         };
     }
 
     /**
-     * Override of {...@link #select(Predicate, Coercion, Coercion)} where 
rejected values are replaced with null.
+     * Override of {...@link #select(Predicate, Mapper, Mapper)} where 
rejected values are replaced with null.
      */
-    public static <S, T> Coercion<S, T> select(Predicate<? super S> predicate, 
Coercion<S, T> ifAccepted)
+    public static <S, T> Mapper<S, T> select(Predicate<? super S> predicate, 
Mapper<S, T> ifAccepted)
     {
         return select(predicate, ifAccepted, (T) null);
     }
 
     /**
-     * Override of {...@link #select(Predicate, Coercion)} where rejected 
values are replaced with a fixed value.
+     * Override of {...@link #select(Predicate, Mapper)} where rejected values 
are replaced with a fixed value.
      */
-    public static <S, T> Coercion<S, T> select(Predicate<? super S> predicate, 
Coercion<S, T> ifAccepted, T ifRejected)
+    public static <S, T> Mapper<S, T> select(Predicate<? super S> predicate, 
Mapper<S, T> ifAccepted, T ifRejected)
     {
-        Coercion<S, T> rejectedCoercion = always(ifRejected);
+        Mapper<S, T> rejectedMapper = always(ifRejected);
 
-        return select(predicate, ifAccepted, rejectedCoercion);
+        return select(predicate, ifAccepted, rejectedMapper);
     }
 
-    public static <S> Coercion<S, S> identity()
+    public static <S> Mapper<S, S> identity()
     {
-        return new Coercion<S, S>()
+        return new AbstractMapper<S, S>()
         {
-            public S coerce(S input)
+            public S map(S input)
             {
                 return input;
             }
@@ -288,13 +297,13 @@ public class F
     }
 
     /** Allows Coercion to boolean to be used as a Predicate. */
-    public static <S> Predicate<S> toPredicate(final Coercion<S, Boolean> 
coercion)
+    public static <S> Predicate<S> toPredicate(final Mapper<S, Boolean> mapper)
     {
         return new Predicate<S>()
         {
             public boolean accept(S object)
             {
-                return coercion.coerce(object);
+                return mapper.map(object);
             };
         };
     }

Added: 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/Mapper.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/Mapper.java?rev=948276&view=auto
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/Mapper.java
 (added)
+++ 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/Mapper.java
 Wed May 26 00:40:39 2010
@@ -0,0 +1,27 @@
+// Copyright 2010 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry5.ioc.util.func;
+
+public interface Mapper<S, T>
+{
+    /** Maps a source value to a target value. */
+    T map(S value);
+
+    /*
+     * Combines this mapper (S --&gt;T) with another mapper (T --&gt;X) to form
+     * a composite mapper (S --&gt; X).
+     */
+    <X> Mapper<S, X> combine(Mapper<T, X> other);
+}

Propchange: 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/func/Mapper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/func/FuncTest.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/func/FuncTest.java?rev=948276&r1=948275&r2=948276&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/func/FuncTest.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/func/FuncTest.java
 Wed May 26 00:40:39 2010
@@ -25,17 +25,17 @@ import org.testng.annotations.Test;
 
 public class FuncTest extends TestBase
 {
-    private Coercion<String, Integer> stringToLength = new Coercion<String, 
Integer>()
+    private Mapper<String, Integer> stringToLength = new 
AbstractMapper<String, Integer>()
     {
-        public Integer coerce(String input)
+        public Integer map(String input)
         {
             return input.length();
         }
     };
 
-    private Coercion<Integer, Boolean> toEven = new Coercion<Integer, 
Boolean>()
+    private Mapper<Integer, Boolean> toEven = new AbstractMapper<Integer, 
Boolean>()
     {
-        public Boolean coerce(Integer input)
+        public Boolean map(Integer input)
         {
             return evenp.accept(input);
         }
@@ -60,9 +60,9 @@ public class FuncTest extends TestBase
     }
 
     @Test
-    public void combine_coercions()
+    public void combine_mappers()
     {
-        List<Boolean> even = F.map(F.combine(stringToLength, toEven), "Mary", 
"had", "a", "little", "lamb");
+        List<Boolean> even = F.map(stringToLength.combine(toEven), "Mary", 
"had", "a", "little", "lamb");
 
         assertListsEquals(even, true, false, false, true, true);
     }
@@ -103,8 +103,6 @@ public class FuncTest extends TestBase
     @Test
     public void combine_workers()
     {
-        List<String> source = Arrays.asList("Mary", "had", "a", "little", 
"lamb");
-
         final StringBuffer buffer = new StringBuffer();
 
         Worker<String> appendWorker = new AbstractWorker<String>()
@@ -128,12 +126,27 @@ public class FuncTest extends TestBase
             }
         };
 
-        F.each(appendWorker.combine(appendLength), source);
+        F.each(appendWorker.combine(appendLength), "Mary", "had", "a", 
"little", "lamb");
 
         assertEquals(buffer.toString(), "Mary(4) had(3) a(1) little(6) 
lamb(4)");
     }
 
     @Test
+    public void wrap_coercion_as_mapper()
+    {
+        Coercion<String, String> toUpper = new Coercion<String, String>()
+        {
+            public String coerce(String input)
+            {
+                return input.toUpperCase();
+            }
+        };
+
+        assertListsEquals(F.map(F.toMapper(toUpper), "Mary", "had", "a", 
"little", "lamb"), "MARY", "HAD", "A",
+                "LITTLE", "LAMB");
+    }
+
+    @Test
     public void filter()
     {
         List<Integer> input = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
@@ -188,16 +201,16 @@ public class FuncTest extends TestBase
     @Test
     public void select_and_filter()
     {
-        List<String> source = Arrays.asList("Mary", "had", "a", "little", 
"lamb");
+        Predicate<String> combinedp = 
F.toPredicate(stringToLength.combine(toEven));
 
-        Predicate<String> combinedp = F.toPredicate(F.combine(stringToLength, 
toEven));
-        Coercion<String, String> identity = F.identity();
+        Mapper<String, String> identity = F.identity();
         Predicate<String> isNull = F.isNull();
 
         // Converting to null and then filtering out nulls is the hard way to 
do filter or remove,
         // but exercises the code we want to test.
 
-        List<String> filtered = F.remove(isNull, F.map(F.select(combinedp, 
identity), source));
+        List<String> filtered = F.remove(isNull, F.map(F.select(combinedp, 
identity), "Mary", "had", "a", "little",
+                "lamb"));
 
         assertListsEquals(filtered, "Mary", "little", "lamb");
     }


Reply via email to