Author: davsclaus Date: Mon Dec 20 14:13:12 2010 New Revision: 1051116 URL: http://svn.apache.org/viewvc?rev=1051116&view=rev Log: CAMEL-3446: camel-printer uses defaults if no option configured for media size and slides. Thanks to Torsten for patch.
Modified: camel/trunk/components/camel-printer/ (props changed) camel/trunk/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterConfiguration.java camel/trunk/components/camel-printer/src/test/java/org/apache/camel/component/printer/PrinterPrintTest.java Propchange: camel/trunk/components/camel-printer/ ------------------------------------------------------------------------------ --- svn:ignore (original) +++ svn:ignore Mon Dec 20 14:13:12 2010 @@ -1,7 +1,9 @@ -.project .checkstyle .pmd -.classpath target -.settings eclipse-classes +.classpath +.project +.settings +res +*.i?? Modified: camel/trunk/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterConfiguration.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterConfiguration.java?rev=1051116&r1=1051115&r2=1051116&view=diff ============================================================================== --- camel/trunk/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterConfiguration.java (original) +++ camel/trunk/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterConfiguration.java Mon Dec 20 14:13:12 2010 @@ -19,7 +19,6 @@ package org.apache.camel.component.print import java.net.URI; import java.net.URISyntaxException; import java.util.Map; - import javax.print.DocFlavor; import javax.print.attribute.standard.MediaSizeName; import javax.print.attribute.standard.Sides; @@ -43,8 +42,7 @@ public class PrinterConfiguration { private String sides; private Sides internalSides; private boolean sendToPrinter = true; - private Map printSettings; - + public PrinterConfiguration() { } @@ -58,13 +56,13 @@ public class PrinterConfiguration { if (!protocol.equalsIgnoreCase("lpr")) { throw new IllegalArgumentException("Unrecognized Print protocol: " + protocol + " for uri: " + uri); } + setUri(uri); setHostname(uri.getHost()); setPort(uri.getPort()); - LOG.info("URI Path = " + uri.getPath()); setPrintername(uri.getPath()); - printSettings = URISupport.parseParameters(uri); + Map printSettings = URISupport.parseParameters(uri); setFlavor((String)printSettings.get("flavor")); setMimeType((String)printSettings.get("mimeType")); setDocFlavor(assignDocFlavor(flavor, mimeType)); @@ -83,19 +81,16 @@ public class PrinterConfiguration { } } - - private DocFlavor assignDocFlavor(String flavor, String mimeType) - throws Exception { - DocFlavor d = DocFlavor.BYTE_ARRAY.AUTOSENSE; - + private DocFlavor assignDocFlavor(String flavor, String mimeType) throws Exception { + // defaults if (mimeType == null) { mimeType = "AUTOSENSE"; } - if (flavor == null) { flavor = "DocFlavor.BYTE_ARRAY"; } + DocFlavor d = DocFlavor.BYTE_ARRAY.AUTOSENSE; DocFlavorAssigner docFlavorAssigner = new DocFlavorAssigner(); if (mimeType.equalsIgnoreCase("AUTOSENSE")) { d = docFlavorAssigner.forMimeTypeAUTOSENSE(flavor); @@ -149,40 +144,47 @@ public class PrinterConfiguration { } private MediaSizeName assignMediaSize(String size) { - MediaSizeName mediaSizeName = null; - MediaSizeAssigner mediaSizeAssigner = new MediaSizeAssigner(); - if (size.startsWith("iso")) { - mediaSizeName = mediaSizeAssigner.selectMediaSizeNameISO(size); + + MediaSizeName answer; + + if (size == null) { + // default to NA letter if no size configured + answer = MediaSizeName.NA_LETTER; + } else if (size.toLowerCase().startsWith("iso")) { + answer = mediaSizeAssigner.selectMediaSizeNameISO(size); } else if (size.startsWith("jis")) { - mediaSizeName = mediaSizeAssigner.selectMediaSizeNameJIS(size); + answer = mediaSizeAssigner.selectMediaSizeNameJIS(size); } else if (size.startsWith("na")) { - mediaSizeName = mediaSizeAssigner.selectMediaSizeNameNA(size); + answer = mediaSizeAssigner.selectMediaSizeNameNA(size); } else { - mediaSizeName = mediaSizeAssigner.selectMediaSizeNameOther(size); + answer = mediaSizeAssigner.selectMediaSizeNameOther(size); } - return mediaSizeName; + return answer; } public Sides assignSides(String sidesString) { - Sides ret = null; - - if (sidesString.equalsIgnoreCase("one-sided")) { - ret = Sides.ONE_SIDED; + Sides answer; + + if (sidesString == null) { + // default to one side if no slides configured + answer = Sides.ONE_SIDED; + } else if (sidesString.equalsIgnoreCase("one-sided")) { + answer = Sides.ONE_SIDED; } else if (sidesString.equalsIgnoreCase("duplex")) { - ret = Sides.DUPLEX; + answer = Sides.DUPLEX; } else if (sidesString.equalsIgnoreCase("tumble")) { - ret = Sides.TUMBLE; + answer = Sides.TUMBLE; } else if (sidesString.equalsIgnoreCase("two-sided-short-edge")) { - ret = Sides.TWO_SIDED_SHORT_EDGE; + answer = Sides.TWO_SIDED_SHORT_EDGE; } else if (sidesString.equalsIgnoreCase("two-sided-long-edge")) { - ret = Sides.TWO_SIDED_LONG_EDGE; + answer = Sides.TWO_SIDED_LONG_EDGE; } else { - ret = Sides.ONE_SIDED; + answer = Sides.ONE_SIDED; } - return ret; + return answer; } public URI getUri() { Modified: camel/trunk/components/camel-printer/src/test/java/org/apache/camel/component/printer/PrinterPrintTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-printer/src/test/java/org/apache/camel/component/printer/PrinterPrintTest.java?rev=1051116&r1=1051115&r2=1051116&view=diff ============================================================================== --- camel/trunk/components/camel-printer/src/test/java/org/apache/camel/component/printer/PrinterPrintTest.java (original) +++ camel/trunk/components/camel-printer/src/test/java/org/apache/camel/component/printer/PrinterPrintTest.java Mon Dec 20 14:13:12 2010 @@ -34,7 +34,7 @@ public class PrinterPrintTest extends Ca public boolean isUseRouteBuilder() { return false; } - + // Check if there is an awt library private boolean isAwtHeadless() { return Boolean.getBoolean("java.awt.headless"); @@ -43,14 +43,14 @@ public class PrinterPrintTest extends Ca private void sendFile() throws Exception { template.send("direct:start", new Processor() { public void process(Exchange exchange) throws Exception { - // Read from an input stream + // Read from an input stream InputStream is = new BufferedInputStream( - new FileInputStream("./src/test/resources/test.txt")); + new FileInputStream("./src/test/resources/test.txt")); byte buffer[] = new byte[is.available()]; int n = is.available(); for (int i = 0; i < n; i++) { - buffer[i] = (byte)is.read(); + buffer[i] = (byte) is.read(); } is.close(); @@ -58,53 +58,53 @@ public class PrinterPrintTest extends Ca exchange.setProperty(Exchange.CHARSET_NAME, "UTF-8"); Message in = exchange.getIn(); in.setBody(buffer); - } - }); + } + }); } - + private void sendGIF() throws Exception { template.send("direct:start", new Processor() { public void process(Exchange exchange) throws Exception { - // Read from an input stream + // Read from an input stream InputStream is = new BufferedInputStream( - new FileInputStream("./src/test/resources/asf-logo.gif")); + new FileInputStream("./src/test/resources/asf-logo.gif")); byte buffer[] = new byte[is.available()]; int n = is.available(); for (int i = 0; i < n; i++) { - buffer[i] = (byte)is.read(); + buffer[i] = (byte) is.read(); } - + is.close(); // Set the property of the charset encoding exchange.setProperty(Exchange.CHARSET_NAME, "UTF-8"); Message in = exchange.getIn(); in.setBody(buffer); - } - }); + } + }); } - + private void sendJPEG() throws Exception { template.send("direct:start", new Processor() { public void process(Exchange exchange) throws Exception { - // Read from an input stream + // Read from an input stream InputStream is = new BufferedInputStream( - new FileInputStream("./src/test/resources/asf-logo.JPG")); + new FileInputStream("./src/test/resources/asf-logo.JPG")); byte buffer[] = new byte[is.available()]; int n = is.available(); for (int i = 0; i < n; i++) { - buffer[i] = (byte)is.read(); + buffer[i] = (byte) is.read(); } - + is.close(); - + // Set the property of the charset encoding exchange.setProperty(Exchange.CHARSET_NAME, "UTF-8"); Message in = exchange.getIn(); in.setBody(buffer); - } - }); + } + }); } @Test @@ -116,14 +116,14 @@ public class PrinterPrintTest extends Ca context.addRoutes(new RouteBuilder() { public void configure() { from("direct:start"). - to("lpr://localhost/default?copies=1&flavor=DocFlavor.BYTE_ARRAY&mimeType=AUTOSENSE&mediaSize=na-letter&sides=one-sided&sendToPrinter=false"); + to("lpr://localhost/default?copies=1&flavor=DocFlavor.BYTE_ARRAY&mimeType=AUTOSENSE&mediaSize=na-letter&sides=one-sided&sendToPrinter=false"); } }); context.start(); sendFile(); } - + @Test @Ignore public void testSendingGIFToPrinter() throws Exception { @@ -133,14 +133,14 @@ public class PrinterPrintTest extends Ca context.addRoutes(new RouteBuilder() { public void configure() { from("direct:start"). - to("lpr://localhost/default?flavor=DocFlavor.INPUT_STREAM&mimeType=GIF&mediaSize=na-letter&sides=one-sided&sendToPrinter=false"); + to("lpr://localhost/default?flavor=DocFlavor.INPUT_STREAM&mimeType=GIF&mediaSize=na-letter&sides=one-sided&sendToPrinter=false"); } }); context.start(); sendGIF(); } - + @Test @Ignore public void testSendingJPEGToPrinter() throws Exception { @@ -149,8 +149,8 @@ public class PrinterPrintTest extends Ca } context.addRoutes(new RouteBuilder() { public void configure() { - from("direct:start"). - to("lpr://localhost/default?copies=2&flavor=DocFlavor.INPUT_STREAM&mimeType=JPEG&mediaSize=na-letter&sides=one-sided&sendToPrinter=false"); + from("direct:start").to("lpr://localhost/default?copies=2&flavor=DocFlavor.INPUT_STREAM" + + "&mimeType=JPEG&mediaSize=na-letter&sides=one-sided&sendToPrinter=false"); } }); context.start(); @@ -158,4 +158,21 @@ public class PrinterPrintTest extends Ca sendJPEG(); } + /** + * Test for resolution of bug CAMEL-3446. + * Not specifying mediaSize nor sides attributes make it use + * default values when starting the route. + */ + @Test + public void testDefaultPrinterConfiguration() throws Exception { + if (isAwtHeadless()) { + return; + } + context.addRoutes(new RouteBuilder() { + public void configure() { + from("direct:start").to("lpr://localhost/default?sendToPrinter=false"); + } + }); + context.start(); + } }