You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2006/12/17 21:36:05 UTC

svn commit: r488042 - in /tapestry/tapestry5/tapestry-ioc/trunk/src: main/java/org/apache/tapestry/ioc/ main/java/org/apache/tapestry/ioc/internal/ main/java/org/apache/tapestry/ioc/internal/services/ main/java/org/apache/tapestry/ioc/services/ test/ja...

Author: hlship
Date: Sun Dec 17 12:36:04 2006
New Revision: 488042

URL: http://svn.apache.org/viewvc?view=rev&rev=488042
Log:
Remove ArrayWrapper, as it is not necessary (the way InheritanceSearch defines inheritance)
Document the service override mechanism Kent added to RegistryBuilder and RegistryImpl

Removed:
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/services/ArrayWrapper.java
Modified:
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/RegistryBuilder.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/RegistryImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/TypeCoercerImpl.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/services/TapestryIOCModule.java
    tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/RegistryBuilderOverrideTest.java

Modified: tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/RegistryBuilder.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/RegistryBuilder.java?view=diff&rev=488042&r1=488041&r2=488042
==============================================================================
--- tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/RegistryBuilder.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/RegistryBuilder.java Sun Dec 17 12:36:04 2006
@@ -150,6 +150,17 @@
         return _log;
     }
 
+    /**
+     * Adds a service override, which is used in certain testing situations to allow deeply
+     * entrenched services to be selectively overriden with alternate implementations. This is not
+     * intended for use with deployed applications, only in testing.
+     * 
+     * @param serviceId
+     *            fully qualified service id
+     * @param overridingImpl
+     *            overriding implementation of the service (the service's normal service builder
+     *            method will not be invoked)
+     */
     public void addServiceOverride(String serviceId, Object overridingImpl)
     {
         _serviceOverrides.put(serviceId, overridingImpl);

Modified: tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/RegistryImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/RegistryImpl.java?view=diff&rev=488042&r1=488041&r2=488042
==============================================================================
--- tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/RegistryImpl.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/RegistryImpl.java Sun Dec 17 12:36:04 2006
@@ -33,6 +33,7 @@
 import org.apache.tapestry.ioc.ObjectProvider;
 import org.apache.tapestry.ioc.OrderedConfiguration;
 import org.apache.tapestry.ioc.Registry;
+import org.apache.tapestry.ioc.RegistryBuilder;
 import org.apache.tapestry.ioc.ServiceDecorator;
 import org.apache.tapestry.ioc.ServiceLifecycle;
 import org.apache.tapestry.ioc.ServiceLocator;
@@ -117,11 +118,24 @@
         }
     }
 
+    /**
+     * Constructs the registry from a set of module definitions and other resources.
+     * 
+     * @param moduleDefs
+     *            defines the modules (and builders, decorators, etc., within)
+     * @param contextClassLoader
+     *            the class loader used to load classes
+     * @param logSource
+     *            used to obtain Log instances
+     * @param serviceOverrides
+     *            overrides for service implementation (used in testing, see
+     *            {@link RegistryBuilder#addServiceOverride(String, Object)})
+     */
     public RegistryImpl(Collection<ModuleDef> moduleDefs, ClassLoader contextClassLoader,
             LogSource logSource, Map<String, Object> serviceOverrides)
     {
         _logSource = logSource;
-        
+
         _serviceOverrides = serviceOverrides;
 
         for (ModuleDef def : moduleDefs)
@@ -225,8 +239,8 @@
         }
         catch (ClassCastException ex)
         {
-            throw new RuntimeException(IOCMessages.serviceWrongInterface(serviceId, 
-                    service.getClass(), serviceInterface));
+            throw new RuntimeException(IOCMessages.serviceWrongInterface(serviceId, service
+                    .getClass(), serviceInterface));
         }
     }
 

Modified: tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/TypeCoercerImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/TypeCoercerImpl.java?view=diff&rev=488042&r1=488041&r2=488042
==============================================================================
--- tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/TypeCoercerImpl.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/internal/services/TypeCoercerImpl.java Sun Dec 17 12:36:04 2006
@@ -14,6 +14,12 @@
 
 package org.apache.tapestry.ioc.internal.services;
 
+import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newLinkedList;
+import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newList;
+import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newMap;
+import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newSet;
+import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newThreadSafeMap;
+
 import java.util.Collection;
 import java.util.LinkedList;
 import java.util.List;
@@ -23,21 +29,11 @@
 import org.apache.tapestry.ioc.internal.util.Defense;
 import org.apache.tapestry.ioc.internal.util.InheritanceSearch;
 import org.apache.tapestry.ioc.internal.util.InternalUtils;
-import org.apache.tapestry.ioc.services.ArrayWrapper;
 import org.apache.tapestry.ioc.services.ClassFabUtils;
 import org.apache.tapestry.ioc.services.Coercion;
 import org.apache.tapestry.ioc.services.CoercionTuple;
 import org.apache.tapestry.ioc.services.TypeCoercer;
 
-import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newLinkedList;
-import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newList;
-import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newMap;
-import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newSet;
-import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newThreadSafeMap;
-
-/**
- * 
- */
 public class TypeCoercerImpl implements TypeCoercer
 {
     // Read only after constructor
@@ -118,11 +114,11 @@
         // Because say new int[3] and new String[3] have different class objects, we
         // need to unify them for easy lookup. So wrap the array into a wrapper and
         // use the class object of the wrapper as the key.
-        if (input instanceof Object[])  
-        {
-            input = new ArrayWrapper((Object[]) input);
-        }
-        // Treat null as void in terms of locating a coercion.
+        // if (input instanceof Object[])
+        // {
+        // input = new ArrayWrapper((Object[]) input);
+        // }
+        // // Treat null as void in terms of locating a coercion.
 
         Class sourceType = input != null ? input.getClass() : void.class;
 

Modified: tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/services/TapestryIOCModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/services/TapestryIOCModule.java?view=diff&rev=488042&r1=488041&r2=488042
==============================================================================
--- tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/services/TapestryIOCModule.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/main/java/org/apache/tapestry/ioc/services/TapestryIOCModule.java Sun Dec 17 12:36:04 2006
@@ -381,11 +381,11 @@
             }
         });
 
-        add(configuration, ArrayWrapper.class, List.class, new Coercion<ArrayWrapper, List>()
+        add(configuration, Object[].class, List.class, new Coercion<Object[], List>()
         {
-            public List coerce(ArrayWrapper input)
+            public List coerce(Object[] input)
             {
-                return Arrays.asList(input.getValue());
+                return Arrays.asList(input);
             }
         });
 

Modified: tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/RegistryBuilderOverrideTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/RegistryBuilderOverrideTest.java?view=diff&rev=488042&r1=488041&r2=488042
==============================================================================
--- tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/RegistryBuilderOverrideTest.java (original)
+++ tapestry/tapestry5/tapestry-ioc/trunk/src/test/java/org/apache/tapestry/ioc/RegistryBuilderOverrideTest.java Sun Dec 17 12:36:04 2006
@@ -87,7 +87,7 @@
     }
 
     @Test
-    public void testServiceOverride()
+    public void service_override()
     {
         builder.addServiceOverride("test.Service2", new UppercaseTransformer());
         registry = builder.build();
@@ -100,7 +100,7 @@
     }
 
     @Test
-    public void testOverrideInjectedIntoOtherServices()
+    public void overidden_service_injected_into_other_service()
     {
         builder.addServiceOverride("test.Service2", new UppercaseTransformer());
         registry = builder.build();
@@ -110,7 +110,7 @@
     }
 
     @Test
-    public void testInterfaceIncorrect()
+    public void overridden_service_with_incorrect_interface_causes_exception()
     {
         builder = new RegistryBuilder();
         builder.add(TestModule.class);