Author: hlship
Date: Sat Jun 23 15:56:04 2007
New Revision: 550136

URL: http://svn.apache.org/viewvc?view=rev&rev=550136
Log:
TAPESTRY-1596: Contributing a service to the Alias service configuration fails 
if the service uses a non-standard scope, such as perthread

Modified:
    
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/LifecycleWrappedServiceCreator.java
    
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/ModuleImpl.java
    
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/IntegrationTest.java

Modified: 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/LifecycleWrappedServiceCreator.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/LifecycleWrappedServiceCreator.java?view=diff&rev=550136&r1=550135&r2=550136
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/LifecycleWrappedServiceCreator.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/LifecycleWrappedServiceCreator.java
 Sat Jun 23 15:56:04 2007
@@ -26,16 +26,19 @@
  */
 public class LifecycleWrappedServiceCreator implements ObjectCreator
 {
-    private final ServiceLifecycle _lifecycle;
+    private final InternalRegistry _registry;
+
+    private final String _serviceScope;
 
     private final ServiceResources _resources;
 
     private final ObjectCreator _creator;
 
-    public LifecycleWrappedServiceCreator(ServiceLifecycle lifecycle, 
ServiceResources resources,
-            ObjectCreator creator)
+    public LifecycleWrappedServiceCreator(InternalRegistry registry, String 
serviceScope,
+            ServiceResources resources, ObjectCreator creator)
     {
-        _lifecycle = lifecycle;
+        _registry = registry;
+        _serviceScope = serviceScope;
         _resources = resources;
         _creator = creator;
     }
@@ -46,7 +49,9 @@
      */
     public Object createObject()
     {
-        return _lifecycle.createService(_resources, _creator);
+        ServiceLifecycle lifecycle = 
_registry.getServiceLifecycle(_serviceScope);
+
+        return lifecycle.createService(_resources, _creator);
     }
 
 }

Modified: 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/ModuleImpl.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/ModuleImpl.java?view=diff&rev=550136&r1=550135&r2=550136
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/ModuleImpl.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/ModuleImpl.java
 Sat Jun 23 15:56:04 2007
@@ -34,10 +34,9 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.tapestry.ioc.ObjectCreator;
+import org.apache.tapestry.ioc.ObjectLocator;
 import org.apache.tapestry.ioc.ServiceBuilderResources;
 import org.apache.tapestry.ioc.ServiceDecorator;
-import org.apache.tapestry.ioc.ServiceLifecycle;
-import org.apache.tapestry.ioc.ObjectLocator;
 import org.apache.tapestry.ioc.ServiceResources;
 import org.apache.tapestry.ioc.def.ContributionDef;
 import org.apache.tapestry.ioc.def.DecoratorDef;
@@ -215,8 +214,6 @@
 
         try
         {
-            ServiceLifecycle lifecycle = 
_registry.getServiceLifecycle(def.getServiceScope());
-
             ServiceBuilderResources resources = new 
ServiceResourcesImpl(_registry, this, def,
                     _classFactory, log);
 
@@ -233,7 +230,8 @@
 
             if (!serviceInterface.isInterface()) return creator.createObject();
 
-            creator = new LifecycleWrappedServiceCreator(lifecycle, resources, 
creator);
+            creator = new LifecycleWrappedServiceCreator(_registry, 
def.getServiceScope(),
+                    resources, creator);
 
             // Don't allow the core IOC services services to be decorated.
 

Modified: 
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/IntegrationTest.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/IntegrationTest.java?view=diff&rev=550136&r1=550135&r2=550136
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/IntegrationTest.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/IntegrationTest.java
 Sat Jun 23 15:56:04 2007
@@ -219,14 +219,17 @@
 
         try
         {
-            r.getService("UnknownScope", Runnable.class);
+            Runnable runnable = r.getService("UnknownScope", Runnable.class);
+
+            runnable.run();
+
             unreachable();
         }
         catch (Exception ex)
         {
             assertMessageContains(
                     ex,
-                    "Error building service proxy for service 'UnknownScope'",
+                    "Exception constructing service 'UnknownScope'",
                     "Unknown service scope 'magic'");
         }
     }


Reply via email to