Author: mgrigorov
Date: Fri Dec 16 14:52:25 2011
New Revision: 1215164

URL: http://svn.apache.org/viewvc?rev=1215164&view=rev
Log:
WICKET-4301
ByteArrayResource throws error if data is null


Modified:
    
wicket/branches/wicket-1.5.x/wicket-core/src/main/java/org/apache/wicket/request/resource/ByteArrayResource.java
    
wicket/branches/wicket-1.5.x/wicket-core/src/main/java/org/apache/wicket/request/resource/DynamicImageResource.java
    
wicket/branches/wicket-1.5.x/wicket-core/src/test/java/org/apache/wicket/request/resource/ByteArrayResourceTest.java

Modified: 
wicket/branches/wicket-1.5.x/wicket-core/src/main/java/org/apache/wicket/request/resource/ByteArrayResource.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.5.x/wicket-core/src/main/java/org/apache/wicket/request/resource/ByteArrayResource.java?rev=1215164&r1=1215163&r2=1215164&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.5.x/wicket-core/src/main/java/org/apache/wicket/request/resource/ByteArrayResource.java
 (original)
+++ 
wicket/branches/wicket-1.5.x/wicket-core/src/main/java/org/apache/wicket/request/resource/ByteArrayResource.java
 Fri Dec 16 14:52:25 2011
@@ -21,6 +21,8 @@ import java.net.URLConnection;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.util.time.Time;
 
+import javax.servlet.http.HttpServletResponse;
+
 /**
  * An {@link IResource} for byte arrays. The byte array can be static - passed 
to the constructor,
  * or dynamic - by overriding
@@ -119,32 +121,35 @@ public class ByteArrayResource extends A
                final byte[] data = getData(attributes);
                if (data == null)
                {
-                       throw new WicketRuntimeException("ByteArrayResource's 
data cannot be 'null'.");
+                       response.setError(HttpServletResponse.SC_NOT_FOUND);
                }
-               response.setContentLength(data.length);
-
-               if (response.dataNeedsToBeWritten(attributes))
+               else
                {
-                       if (filename != null)
-                       {
-                               response.setFileName(filename);
-                               
response.setContentDisposition(ContentDisposition.ATTACHMENT);
-                       }
-                       else
-                       {
-                               
response.setContentDisposition(ContentDisposition.INLINE);
-                       }
+                       response.setContentLength(data.length);
 
-                       response.setWriteCallback(new WriteCallback()
+                       if (response.dataNeedsToBeWritten(attributes))
                        {
-                               @Override
-                               public void writeData(final Attributes 
attributes)
+                               if (filename != null)
+                               {
+                                       response.setFileName(filename);
+                                       
response.setContentDisposition(ContentDisposition.ATTACHMENT);
+                               }
+                               else
                                {
-                                       attributes.getResponse().write(data);
+                                       
response.setContentDisposition(ContentDisposition.INLINE);
                                }
-                       });
 
-                       configureResponse(response, attributes);
+                               response.setWriteCallback(new WriteCallback()
+                               {
+                                       @Override
+                                       public void writeData(final Attributes 
attributes)
+                                       {
+                                               
attributes.getResponse().write(data);
+                                       }
+                               });
+
+                               configureResponse(response, attributes);
+                       }
                }
 
                return response;

Modified: 
wicket/branches/wicket-1.5.x/wicket-core/src/main/java/org/apache/wicket/request/resource/DynamicImageResource.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.5.x/wicket-core/src/main/java/org/apache/wicket/request/resource/DynamicImageResource.java?rev=1215164&r1=1215163&r2=1215164&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.5.x/wicket-core/src/main/java/org/apache/wicket/request/resource/DynamicImageResource.java
 (original)
+++ 
wicket/branches/wicket-1.5.x/wicket-core/src/main/java/org/apache/wicket/request/resource/DynamicImageResource.java
 Fri Dec 16 14:52:25 2011
@@ -167,8 +167,9 @@ public abstract class DynamicImageResour
                                                
attributes.getResponse().write(imageData);
                                        }
                                });
+
+                               configureResponse(response, attributes);
                        }
-                       configureResponse(response, attributes);
                }
 
                return response;

Modified: 
wicket/branches/wicket-1.5.x/wicket-core/src/test/java/org/apache/wicket/request/resource/ByteArrayResourceTest.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.5.x/wicket-core/src/test/java/org/apache/wicket/request/resource/ByteArrayResourceTest.java?rev=1215164&r1=1215163&r2=1215164&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.5.x/wicket-core/src/test/java/org/apache/wicket/request/resource/ByteArrayResourceTest.java
 (original)
+++ 
wicket/branches/wicket-1.5.x/wicket-core/src/test/java/org/apache/wicket/request/resource/ByteArrayResourceTest.java
 Fri Dec 16 14:52:25 2011
@@ -27,6 +27,8 @@ import org.apache.wicket.request.http.We
 import org.apache.wicket.request.resource.IResource.Attributes;
 import org.junit.Test;
 
+import javax.servlet.http.HttpServletResponse;
+
 /**
  * Unit tests for {@link ByteArrayResource}
  */
@@ -131,4 +133,18 @@ public class ByteArrayResourceTest exten
                tester.startResource(finalResortOctetStream);
                assertEquals("application/octet-stream", 
tester.getLastResponse().getContentType());
        }
+
+       /**
+        * https://issues.apache.org/jira/browse/WICKET-4301
+        *
+        * Verify that HttpServletResponse#SC_NOT_FOUND is returned if there is 
no data.
+        */
+       @Test
+       public void noData() {
+               ByteArrayResource resource = new 
ByteArrayResource("text/plain");
+               tester.startResource(resource);
+
+               assertEquals(HttpServletResponse.SC_NOT_FOUND, 
tester.getLastResponse().getStatus());
+               assertEquals(0, 
tester.getLastResponse().getBinaryContent().length);
+       }
 }


Reply via email to