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();
+    }
 }


Reply via email to