Author: hlship
Date: Thu Jan 15 09:37:28 2009
New Revision: 734763

URL: http://svn.apache.org/viewvc?rev=734763&view=rev
Log:
TAP5-443: Clicking an action link when using tapestry-upload always throws an 
exception

Modified:
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
    
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceResourcesImpl.java
    
tapestry/tapestry5/trunk/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/UploadExceptionFilter.java
    
tapestry/tapestry5/trunk/tapestry-upload/src/main/java/org/apache/tapestry5/upload/services/UploadModule.java

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java?rev=734763&r1=734762&r2=734763&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
 Thu Jan 15 09:37:28 2009
@@ -1286,7 +1286,7 @@
      * Builds the component action request handler for traditional (non-Ajax) 
requests. These typically result in a
      * redirect to a Tapestry render URL.
      */
-    @Marker(Traditional.class)
+    @Marker({ Traditional.class, Primary.class })
     public ComponentEventRequestHandler buildComponentEventRequestHandler(
             List<ComponentEventRequestFilter> configuration, Logger logger,
             @Autobuild ComponentEventRequestHandlerImpl terminator)
@@ -1300,7 +1300,7 @@
      * pipeline} around {...@link 
org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler}. 
Filters on the
      * request handler are supported here as well.
      */
-    @Marker(Ajax.class)
+    @Marker({ Ajax.class, Primary.class })
     public ComponentEventRequestHandler buildAjaxComponentEventRequestHandler(
             List<ComponentEventRequestFilter> configuration, Logger logger,
             @Autobuild AjaxComponentEventRequestHandler terminator)

Modified: 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceResourcesImpl.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceResourcesImpl.java?rev=734763&r1=734762&r2=734763&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceResourcesImpl.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceResourcesImpl.java
 Thu Jan 15 09:37:28 2009
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
+// Copyright 2006, 2007, 2008, 2009 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.
@@ -18,7 +18,7 @@
 import org.apache.tapestry5.ioc.OperationTracker;
 import org.apache.tapestry5.ioc.ServiceBuilderResources;
 import org.apache.tapestry5.ioc.def.ServiceDef;
-import static org.apache.tapestry5.ioc.internal.util.Defense.notNull;
+import org.apache.tapestry5.ioc.internal.util.Defense;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.ioc.internal.util.Invokable;
 import org.apache.tapestry5.ioc.services.ClassFactory;
@@ -138,20 +138,29 @@
     }
 
     @Override
-    public <T> T autobuild(Class<T> clazz)
+    public <T> T autobuild(final Class<T> clazz)
     {
-        notNull(clazz, "clazz");
+        Defense.notNull(clazz, "clazz");
 
-        Constructor constructor = 
InternalUtils.findAutobuildConstructor(clazz);
+        return registry.invoke("Autobuilding instance of class " + 
clazz.getName(),
+                               new Invokable<T>()
+                               {
+                                   public T invoke()
+                                   {
+                                       Constructor constructor = 
InternalUtils.findAutobuildConstructor(clazz);
 
-        if (constructor == null)
-            throw new 
RuntimeException(IOCMessages.noAutobuildConstructor(clazz));
+                                       if (constructor == null)
+                                           throw new 
RuntimeException(IOCMessages.noAutobuildConstructor(clazz));
 
-        String description = 
classFactory.getConstructorLocation(constructor).toString();
+                                       String description = 
classFactory.getConstructorLocation(constructor).toString();
 
-        ObjectCreator creator = new ConstructorServiceCreator(this, 
description, constructor);
+                                       ObjectCreator creator = new 
ConstructorServiceCreator(ServiceResourcesImpl.this,
+                                                                               
              description,
+                                                                               
              constructor);
 
-        return clazz.cast(creator.createObject());
+                                       return 
clazz.cast(creator.createObject());
+                                   }
+                               });
     }
 
     public OperationTracker getTracker()

Modified: 
tapestry/tapestry5/trunk/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/UploadExceptionFilter.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/UploadExceptionFilter.java?rev=734763&r1=734762&r2=734763&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/UploadExceptionFilter.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/UploadExceptionFilter.java
 Thu Jan 15 09:37:28 2009
@@ -1,4 +1,4 @@
-//  Copyright 2008 The Apache Software Foundation
+//  Copyright 2008, 2009 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.
@@ -16,6 +16,7 @@
 
 import org.apache.commons.fileupload.FileUploadException;
 import org.apache.tapestry5.internal.services.ComponentResultProcessorWrapper;
+import org.apache.tapestry5.ioc.annotations.Primary;
 import org.apache.tapestry5.runtime.Component;
 import org.apache.tapestry5.services.*;
 import org.apache.tapestry5.upload.services.MultipartDecoder;
@@ -35,7 +36,8 @@
 
     private ComponentSource componentSource;
 
-    public UploadExceptionFilter(MultipartDecoder decoder, @Traditional 
ComponentEventResultProcessor resultProcessor,
+    public UploadExceptionFilter(MultipartDecoder decoder,
+                                 @Traditional @Primary 
ComponentEventResultProcessor resultProcessor,
                                  ComponentSource componentSource)
     {
         this.decoder = decoder;
@@ -54,7 +56,7 @@
 
             ComponentResultProcessorWrapper callback = new 
ComponentResultProcessorWrapper(resultProcessor);
 
-            
page.getComponentResources().triggerEvent(UploadEvents.UPLOAD_EXCEPTION, new 
Object[] {uploadException},
+            
page.getComponentResources().triggerEvent(UploadEvents.UPLOAD_EXCEPTION, new 
Object[] { uploadException },
                                                       callback);
 
             // If an event handler exists and returns a value, then the 
callback will be aborted and a response

Modified: 
tapestry/tapestry5/trunk/tapestry-upload/src/main/java/org/apache/tapestry5/upload/services/UploadModule.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-upload/src/main/java/org/apache/tapestry5/upload/services/UploadModule.java?rev=734763&r1=734762&r2=734763&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-upload/src/main/java/org/apache/tapestry5/upload/services/UploadModule.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-upload/src/main/java/org/apache/tapestry5/upload/services/UploadModule.java
 Thu Jan 15 09:37:28 2009
@@ -1,4 +1,4 @@
-// Copyright 2007, 2008 The Apache Software Foundation
+// Copyright 2007, 2008, 2009 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.
@@ -17,7 +17,10 @@
 import org.apache.commons.fileupload.FileItemFactory;
 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
 import org.apache.commons.io.FileCleaner;
-import org.apache.tapestry5.ioc.*;
+import org.apache.tapestry5.ioc.Configuration;
+import org.apache.tapestry5.ioc.MappedConfiguration;
+import org.apache.tapestry5.ioc.OrderedConfiguration;
+import org.apache.tapestry5.ioc.ScopeConstants;
 import org.apache.tapestry5.ioc.annotations.Autobuild;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.annotations.Scope;
@@ -88,8 +91,7 @@
      * upload exception event}.
      */
     public static void contributeComponentEventRequestHandler(
-            OrderedConfiguration<ComponentEventRequestFilter> configuration,
-            ObjectLocator locator)
+            OrderedConfiguration<ComponentEventRequestFilter> configuration)
     {
         configuration.addInstance("UploadException", 
UploadExceptionFilter.class, "after:Secure",
                                   "before:Ajax");


Reply via email to