Return-Path: X-Original-To: apmail-camel-commits-archive@www.apache.org Delivered-To: apmail-camel-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 3069FD5C3 for ; Wed, 25 Jul 2012 13:22:49 +0000 (UTC) Received: (qmail 53043 invoked by uid 500); 25 Jul 2012 13:22:49 -0000 Delivered-To: apmail-camel-commits-archive@camel.apache.org Received: (qmail 52901 invoked by uid 500); 25 Jul 2012 13:22:45 -0000 Mailing-List: contact commits-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@camel.apache.org Delivered-To: mailing list commits@camel.apache.org Received: (qmail 52872 invoked by uid 99); 25 Jul 2012 13:22:44 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 25 Jul 2012 13:22:44 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 25 Jul 2012 13:22:41 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id DD39623888E4; Wed, 25 Jul 2012 13:21:56 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1365568 - in /camel/trunk/components/camel-printer/src: main/java/org/apache/camel/component/printer/ test/java/org/apache/camel/component/printer/ Date: Wed, 25 Jul 2012 13:21:56 -0000 To: commits@camel.apache.org From: ningjiang@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120725132156.DD39623888E4@eris.apache.org> Author: ningjiang Date: Wed Jul 25 13:21:56 2012 New Revision: 1365568 URL: http://svn.apache.org/viewvc?rev=1365568&view=rev Log: CAMEL-5462 Adding tray support to camel-print Modified: camel/trunk/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterConfiguration.java camel/trunk/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterProducer.java camel/trunk/components/camel-printer/src/test/java/org/apache/camel/component/printer/PrinterPrintTest.java 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=1365568&r1=1365567&r2=1365568&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 Wed Jul 25 13:21:56 2012 @@ -40,6 +40,7 @@ public class PrinterConfiguration { private String sides; private Sides internalSides; private boolean sendToPrinter = true; + private String mediaTray; public PrinterConfiguration() { } @@ -82,6 +83,10 @@ public class PrinterConfiguration { setSendToPrinter(false); } } + + if (printSettings.containsKey("mediaTray")) { + setMediaTray((String) printSettings.get("mediaTray")); + } } private DocFlavor assignDocFlavor(String flavor, String mimeType) throws Exception { @@ -294,4 +299,11 @@ public class PrinterConfiguration { this.sendToPrinter = sendToPrinter; } + public String getMediaTray() { + return mediaTray; + } + + public void setMediaTray(String mediaTray) { + this.mediaTray = mediaTray; + } } Modified: camel/trunk/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterProducer.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterProducer.java?rev=1365568&r1=1365567&r2=1365568&view=diff ============================================================================== --- camel/trunk/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterProducer.java (original) +++ camel/trunk/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterProducer.java Wed Jul 25 13:21:56 2012 @@ -25,6 +25,8 @@ import javax.print.PrintServiceLookup; import javax.print.attribute.HashPrintRequestAttributeSet; import javax.print.attribute.PrintRequestAttributeSet; import javax.print.attribute.standard.Copies; +import javax.print.attribute.standard.Media; +import javax.print.attribute.standard.MediaTray; import org.apache.camel.Endpoint; import org.apache.camel.Exchange; @@ -70,9 +72,41 @@ public class PrinterProducer extends Def printRequestAttributeSet.add(config.getMediaSizeName()); printRequestAttributeSet.add(config.getInternalSides()); + if (config.getMediaTray() != null) { + MediaTray mediaTray = resolveMediaTray(config.getMediaTray()); + + if (mediaTray == null) { + throw new PrintException("mediatray not found " + config.getMediaTray()); + } + + printRequestAttributeSet.add(mediaTray); + } + return printRequestAttributeSet; } + private MediaTray resolveMediaTray(String tray) { + Media medias[] = (Media[]) getPrintService().getSupportedAttributeValues(Media.class, null, null); + + if (medias == null) { + return null; + } else { + for (Media media : medias) { + if (media instanceof MediaTray) { + MediaTray mediaTray = (MediaTray) media; + String trayName = mediaTray.toString().trim(); + if (trayName.contains(" ")) { + trayName = trayName.replace(' ', '_'); + } + if (trayName.equals(tray)) { + return mediaTray; + } + } + } + return null; + } + } + private PrintService assignPrintService() throws PrintException { PrintService printService; 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=1365568&r1=1365567&r2=1365568&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 Wed Jul 25 13:21:56 2012 @@ -25,7 +25,12 @@ import javax.print.DocFlavor; import javax.print.DocPrintJob; import javax.print.PrintService; import javax.print.PrintServiceLookup; +import javax.print.attribute.Attribute; import javax.print.attribute.PrintRequestAttributeSet; +import javax.print.attribute.standard.Media; +import javax.print.attribute.standard.MediaSizeName; +import javax.print.attribute.standard.MediaTray; +import javax.print.attribute.standard.Sides; import org.apache.camel.Endpoint; import org.apache.camel.Exchange; @@ -271,6 +276,29 @@ public class PrinterPrintTest extends Ca context.stop(); assertMockEndpointsSatisfied(); } + + @Test + public void printToMiddleTray() throws Exception { + PrinterEndpoint endpoint = new PrinterEndpoint(); + PrinterConfiguration configuration = new PrinterConfiguration(); + configuration.setHostname("localhost"); + configuration.setPort(631); + configuration.setPrintername("DefaultPrinter"); + configuration.setMediaSizeName(MediaSizeName.ISO_A4); + configuration.setInternalSides(Sides.ONE_SIDED); + configuration.setMediaTray("middle"); + + PrinterProducer producer = new PrinterProducer(endpoint, configuration); + producer.start(); + PrinterOperations printerOperations = producer.getPrinterOperations(); + PrintRequestAttributeSet attributeSet = printerOperations.getPrintRequestAttributeSet(); + + Attribute attribute = attributeSet.get(javax.print.attribute.standard.Media.class); + assertNotNull(attribute); + assertTrue(attribute instanceof MediaTray); + MediaTray mediaTray = (MediaTray) attribute; + assertEquals("middle", mediaTray.toString()); + } protected void setupJavaPrint() { // "install" another default printer @@ -282,6 +310,12 @@ public class PrinterPrintTest extends Ca when(psLookup.getDefaultPrintService()).thenReturn(psDefault); DocPrintJob docPrintJob = mock(DocPrintJob.class); when(psDefault.createPrintJob()).thenReturn(docPrintJob); + MediaTray[] trays = new MediaTray[]{ + MediaTray.TOP, + MediaTray.MIDDLE, + MediaTray.BOTTOM + }; + when(psDefault.getSupportedAttributeValues(Media.class, null, null)).thenReturn(trays); PrintServiceLookup.registerServiceProvider(psLookup); } }