1 /******************************************************************************** 2 * $Id: ThreadSafeJob.java 98 2008-02-27 06:11:26Z sjardine $ 3 * 4 * Copyright 2003 Innovation Software Group, LLC - http://www.innovationsw.com 5 * Copyright 2003 Joe Phillips <jaiger@innovationsw.com> 6 * Copyright 2008 Steven Jardine, MJN Services, Inc. <steve@mjnservices.com> 7 * 8 * All rights reserved. This program and the accompanying materials are made 9 * available under the terms of the GNU Lesser Public License v2.1 which 10 * accompanies this distribution, and is available at 11 * http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html 12 * 13 * For more information on the HylaFAX Fax Server please see 14 * HylaFAX - http://www.hylafax.org or 15 * Hylafax+ - http://hylafax.sourceforge.net 16 * 17 * Contributors: 18 * Joe Phillips - Initial API and implementation 19 * Steven Jardine - Code formatting, rework of license header, javadoc 20 ******************************************************************************/ 21 package gnu.hylafax.job; 22 23 import gnu.hylafax.Client; 24 import gnu.inet.ftp.ServerResponseException; 25 26 import java.io.IOException; 27 28 /*** 29 * This is a thread-safe implementation of the gnu.hylafax.Job interface. 30 * 31 * @see gnu.hylafax.ClientProtocol 32 * @see gnu.hylafax.Client 33 */ 34 public class ThreadSafeJob extends Job { 35 36 /*** 37 * Default constructor. 38 * 39 * @param c 40 * HylaFAX client to use for the job. 41 * @throws ServerResponseException 42 * @throws IOException 43 */ 44 public ThreadSafeJob(Client c) throws ServerResponseException, IOException { 45 super(c); 46 } 47 48 /*** 49 * Default constructor. 50 * 51 * @param c 52 * HylaFAX client to use for the job. 53 * @param id 54 * Job id 55 * @throws ServerResponseException 56 * @throws IOException 57 */ 58 public ThreadSafeJob(Client c, long id) throws ServerResponseException, 59 IOException { 60 super(c, id); 61 } 62 63 /*** 64 * Get the value for an arbitrary property for this job. Developers using 65 * this method should be familiar with the HylaFAX client protocol in order 66 * to provide the correct key values and how to interpret the values 67 * returned. This method is thread-safe. 68 * 69 * @exception ServerResponseException 70 * the server responded with an error. This is likely due 71 * to a protocol error. 72 * @exception IOException 73 * an i/o error occured 74 * @return a String value for the given property key 75 */ 76 public String getProperty(String key) throws ServerResponseException, 77 IOException { 78 synchronized (client) { 79 long j = client.job(); 80 client.job(getId()); 81 String tmp = super.getProperty(key); 82 client.job(j); 83 return tmp; 84 } 85 } 86 87 /*** 88 * Set any arbitrary property on this job. In order to use this method, 89 * developers should be familiar with the HylaFAX client protocol. This 90 * method is thread-safe. 91 * 92 * @exception ServerResponseException 93 * the server responded with an error code. This is 94 * likely a protocol violation. 95 * @exception IOException 96 * an i/o error occured 97 */ 98 public void setProperty(String parameter, String value) 99 throws ServerResponseException, IOException { 100 synchronized (client) { 101 long j = client.job(); 102 client.job(getId()); 103 super.setProperty(parameter, value); 104 client.job(j); 105 } 106 } 107 108 }