Author: hadrian Date: Mon Apr 23 03:04:24 2012 New Revision: 1329048 URL: http://svn.apache.org/viewvc?rev=1329048&view=rev Log: Backport r1243995. ZipDataFormat.marshal() should better ask for a mandatory conversion to avoid possible NPE.
Modified: camel/branches/camel-2.8.x/ (props changed) camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/impl/ZipDataFormat.java camel/branches/camel-2.8.x/camel-core/src/test/java/org/apache/camel/impl/ZipDataFormatTest.java Propchange: camel/branches/camel-2.8.x/ ------------------------------------------------------------------------------ svn:mergeinfo = /camel/branches/camel-2.9.x:1307865 Propchange: camel/branches/camel-2.8.x/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/impl/ZipDataFormat.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/impl/ZipDataFormat.java?rev=1329048&r1=1329047&r2=1329048&view=diff ============================================================================== --- camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/impl/ZipDataFormat.java (original) +++ camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/impl/ZipDataFormat.java Mon Apr 23 03:04:24 2012 @@ -40,7 +40,8 @@ public class ZipDataFormat implements Da } public void marshal(Exchange exchange, Object graph, OutputStream stream) throws Exception { - InputStream is = exchange.getContext().getTypeConverter().convertTo(InputStream.class, graph); + // ask for a mandatoy type converter to avoid a possible NPE beforehand as we do copy from the InputStream + InputStream is = exchange.getContext().getTypeConverter().mandatoryConvertTo(InputStream.class, graph); DeflaterOutputStream zipOutput = new DeflaterOutputStream(stream, new Deflater(compressionLevel)); try { Modified: camel/branches/camel-2.8.x/camel-core/src/test/java/org/apache/camel/impl/ZipDataFormatTest.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/camel-core/src/test/java/org/apache/camel/impl/ZipDataFormatTest.java?rev=1329048&r1=1329047&r2=1329048&view=diff ============================================================================== --- camel/branches/camel-2.8.x/camel-core/src/test/java/org/apache/camel/impl/ZipDataFormatTest.java (original) +++ camel/branches/camel-2.8.x/camel-core/src/test/java/org/apache/camel/impl/ZipDataFormatTest.java Mon Apr 23 03:04:24 2012 @@ -23,9 +23,11 @@ import java.util.zip.Inflater; import org.apache.camel.ContextTestSupport; import org.apache.camel.Exchange; import org.apache.camel.Message; +import org.apache.camel.NoTypeConversionAvailableException; import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; +import org.apache.camel.spi.DataFormat; /** * Unit test of the zip data format. @@ -50,6 +52,17 @@ public class ZipDataFormatTest extends C return false; } + public void testMarshalMandatoryConversionFailed() throws Exception { + DataFormat dataFormat = new ZipDataFormat(); + + try { + dataFormat.marshal(new DefaultExchange(new DefaultCamelContext()), new Object(), new ByteArrayOutputStream()); + fail("Should have thrown an exception"); + } catch (NoTypeConversionAvailableException e) { + // expected + } + } + private void sendText() throws Exception { template.send("direct:start", new Processor() { public void process(Exchange exchange) throws Exception {