You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by mu...@apache.org on 2009/09/21 18:55:10 UTC

svn commit: r817318 - in /struts/struts2/trunk/plugins/jfreechart: pom.xml src/main/java/org/apache/struts2/dispatcher/ChartResult.java src/test/java/org/apache/struts2/dispatcher/ChartResultTest.java

Author: musachy
Date: Mon Sep 21 16:55:09 2009
New Revision: 817318

URL: http://svn.apache.org/viewvc?rev=817318&view=rev
Log:
WW-3210 JFreeChart plugin not setting correct mime type

Modified:
    struts/struts2/trunk/plugins/jfreechart/pom.xml
    struts/struts2/trunk/plugins/jfreechart/src/main/java/org/apache/struts2/dispatcher/ChartResult.java
    struts/struts2/trunk/plugins/jfreechart/src/test/java/org/apache/struts2/dispatcher/ChartResultTest.java

Modified: struts/struts2/trunk/plugins/jfreechart/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/jfreechart/pom.xml?rev=817318&r1=817317&r2=817318&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/jfreechart/pom.xml (original)
+++ struts/struts2/trunk/plugins/jfreechart/pom.xml Mon Sep 21 16:55:09 2009
@@ -65,12 +65,6 @@
             </exclusions>
         </dependency>
         <dependency>
-            <groupId>mockobjects</groupId>
-            <artifactId>mockobjects-core</artifactId>
-            <version>0.09</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>org.apache.struts</groupId>
             <artifactId>struts2-core</artifactId>
             <scope>compile</scope>
@@ -88,14 +82,18 @@
             <version>2.4</version>
             <scope>provided</scope>
         </dependency>
-
         <dependency>
             <groupId>javax.servlet</groupId>
             <artifactId>jsp-api</artifactId>
             <version>2.0</version>
             <scope>provided</scope>
         </dependency>
-
+ 		<dependency>
+            <groupId>org.easymock</groupId>
+            <artifactId>easymock</artifactId>
+            <version>2.3</version>
+            <scope>test</scope>
+        </dependency>
 
     </dependencies>
 </project>

Modified: struts/struts2/trunk/plugins/jfreechart/src/main/java/org/apache/struts2/dispatcher/ChartResult.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/jfreechart/src/main/java/org/apache/struts2/dispatcher/ChartResult.java?rev=817318&r1=817317&r2=817318&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/jfreechart/src/main/java/org/apache/struts2/dispatcher/ChartResult.java (original)
+++ struts/struts2/trunk/plugins/jfreechart/src/main/java/org/apache/struts2/dispatcher/ChartResult.java Mon Sep 21 16:55:09 2009
@@ -30,6 +30,8 @@
 
 import java.io.OutputStream;
 
+import javax.servlet.http.HttpServletResponse;
+
 /**
  * <!-- START SNIPPET: description -->
  * <p/>
@@ -192,13 +194,18 @@
             throw new NullPointerException("No width parameter was given.");
 
         // get a reference to the servlet output stream to write our chart image to
-        OutputStream os = ServletActionContext.getResponse().getOutputStream();
+        HttpServletResponse response = ServletActionContext.getResponse();
+        OutputStream os = response.getOutputStream();
         try {
             // check the type to see what kind of output we have to produce
-            if ("png".equalsIgnoreCase(type))
+            if ("png".equalsIgnoreCase(type)) {
+                response.setContentType("image/png");
                 ChartUtilities.writeChartAsPNG(os, chart, getIntValueFromString(width), getIntValueFromString(height));
-            else if ("jpg".equalsIgnoreCase(type) || "jpeg".equalsIgnoreCase(type))
+            }
+            else if ("jpg".equalsIgnoreCase(type) || "jpeg".equalsIgnoreCase(type)) {
+                response.setContentType("image/jpg");
                 ChartUtilities.writeChartAsJPEG(os, chart, getIntValueFromString(width), getIntValueFromString(height));
+            }
             else
                 throw new IllegalArgumentException(type + " is not a supported render type (only JPG and PNG are).");
         } finally {

Modified: struts/struts2/trunk/plugins/jfreechart/src/test/java/org/apache/struts2/dispatcher/ChartResultTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/jfreechart/src/test/java/org/apache/struts2/dispatcher/ChartResultTest.java?rev=817318&r1=817317&r2=817318&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/jfreechart/src/test/java/org/apache/struts2/dispatcher/ChartResultTest.java (original)
+++ struts/struts2/trunk/plugins/jfreechart/src/test/java/org/apache/struts2/dispatcher/ChartResultTest.java Mon Sep 21 16:55:09 2009
@@ -21,9 +21,10 @@
 
 package org.apache.struts2.dispatcher;
 
-import com.mockobjects.dynamic.Mock;
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.StrutsTestCase;
+import org.easymock.EasyMock;
+
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.ActionProxy;
@@ -43,30 +44,67 @@
 
     private ActionInvocation actionInvocation;
     private JFreeChart mockChart;
-    private Mock responseMock;
-    private Mock mockActionProxy;
     private MockServletOutputStream os;
     private ValueStack stack;
+    private ActionProxy mockActionProxy;
+    private HttpServletResponse responseMock;
 
 
     public void testChart() throws Exception {
-        responseMock.expectAndReturn("getOutputStream", os);
+        EasyMock.expect(responseMock.getOutputStream()).andReturn(os);
+        EasyMock.replay(responseMock, mockActionProxy, actionInvocation);
+        
+        ChartResult result = new ChartResult();
+
+        result.setChart(mockChart);
+
+        result.setHeight("10");
+        result.setWidth("10");
+        result.execute(actionInvocation);
+
+        EasyMock.verify(responseMock);
+        assertTrue(os.isWritten());
+    }
+    
+    public void testContentTypePng() throws Exception {
+        EasyMock.expect(responseMock.getOutputStream()).andReturn(os);
+        responseMock.setContentType("image/png");
+        EasyMock.replay(responseMock, mockActionProxy, actionInvocation);
+        ChartResult result = new ChartResult();
+
+        result.setChart(mockChart);
+
+        result.setHeight("10");
+        result.setWidth("10");
+        result.setType("png");
+        result.execute(actionInvocation);
 
+        EasyMock.verify(responseMock);
+        assertTrue(os.isWritten());
+    }
+    
+    public void testContentTypeJpg() throws Exception {
+        EasyMock.expect(responseMock.getOutputStream()).andReturn(os);
+        responseMock.setContentType("image/jpg");
+        EasyMock.replay(responseMock, mockActionProxy, actionInvocation);
         ChartResult result = new ChartResult();
 
         result.setChart(mockChart);
 
         result.setHeight("10");
         result.setWidth("10");
+        result.setType("jpg");
         result.execute(actionInvocation);
 
-        responseMock.verify();
+        EasyMock.verify(responseMock);
         assertTrue(os.isWritten());
     }
 
+
     public void testChartNotSet() {
         ChartResult result = new ChartResult();
-
+        EasyMock.replay(responseMock, mockActionProxy, actionInvocation);
+        
         // expect exception if chart not set.
         result.setChart(null);
 
@@ -76,13 +114,14 @@
         } catch (Exception e) {
         }
 
-        responseMock.verify();
+        EasyMock.verify(responseMock);
         assertFalse(os.isWritten());
     }
 
 
     public void testChartWithOGNLProperties() throws Exception {
-        responseMock.expectAndReturn("getOutputStream", os);
+        EasyMock.expect(responseMock.getOutputStream()).andReturn(os);
+        EasyMock.replay(responseMock, mockActionProxy, actionInvocation);
 
 
         ChartResult result = new ChartResult();
@@ -98,7 +137,7 @@
 
         result.execute(actionInvocation);
 
-        responseMock.verify();
+        EasyMock.verify(responseMock);
         assertEquals(result.getHeight(), stack.findValue("myHeight").toString());
         assertEquals(result.getWidth(), stack.findValue("myWidth").toString());
         assertEquals("250", result.getHeight().toString());
@@ -120,20 +159,18 @@
         ActionContext.getContext().setValueStack(stack);
 
 
-        mockActionProxy = new Mock(ActionProxy.class);
-        mockActionProxy.expectAndReturn("getNamespace", "/html");
+        mockActionProxy = EasyMock.createNiceMock(ActionProxy.class);
+        EasyMock.expect(mockActionProxy.getNamespace()).andReturn("/html");
 
-        Mock mockActionInvocation = new Mock(ActionInvocation.class);
+        actionInvocation = EasyMock.createMock(ActionInvocation.class);
 
-        mockActionInvocation.matchAndReturn("getStack", stack);
-//        mockActionInvocation.expectAndReturn("getProxy", mockActionProxy.proxy());
+        EasyMock.expect(actionInvocation.getStack()).andReturn(stack).anyTimes();
         
-        actionInvocation = (ActionInvocation) mockActionInvocation.proxy();
         
         os = new MockServletOutputStream();
-        responseMock = new Mock(HttpServletResponse.class);
+        responseMock = EasyMock.createNiceMock(HttpServletResponse.class);
 
-        ServletActionContext.setResponse((HttpServletResponse) responseMock.proxy());
+        ServletActionContext.setResponse((HttpServletResponse) responseMock);
     }
 
     protected void tearDown() throws Exception {