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