View Javadoc

1   /* ***** BEGIN LICENSE BLOCK *****
2    * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3    *
4    * The contents of this file are subject to the Mozilla Public License Version
5    * 1.1 (the "License"); you may not use this file except in compliance with
6    * the License. You may obtain a copy of the License at
7    * http://www.mozilla.org/MPL/
8    *
9    * Software distributed under the License is distributed on an "AS IS" basis,
10   * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11   * for the specific language governing rights and limitations under the
12   * License.
13   *
14   * The Original Code is "SMS Library for the Java platform".
15   *
16   * The Initial Developer of the Original Code is Markus Eriksson.
17   * Portions created by the Initial Developer are Copyright (C) 2002
18   * the Initial Developer. All Rights Reserved.
19   *
20   * Contributor(s):
21   *
22   * Alternatively, the contents of this file may be used under the terms of
23   * either the GNU General Public License Version 2 or later (the "GPL"), or
24   * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
25   * in which case the provisions of the GPL or the LGPL are applicable instead
26   * of those above. If you wish to allow use of your version of this file only
27   * under the terms of either the GPL or the LGPL, and not to allow others to
28   * use your version of this file under the terms of the MPL, indicate your
29   * decision by deleting the provisions above and replace them with the notice
30   * and other provisions required by the GPL or the LGPL. If you do not delete
31   * the provisions above, a recipient may use your version of this file under
32   * the terms of any one of the MPL, the GPL or the LGPL.
33   *
34   * ***** END LICENSE BLOCK ***** */
35  package org.marre.sms.transport;
36  
37  import java.util.Properties;
38  
39  import org.marre.sms.SmsException;
40  
41  /***
42   * SMS Transport Manager.
43   * 
44   * Contains methods to manage the different transports.
45   * 
46   * @author Markus Eriksson
47   * @version $Id: SmsTransportManager.java,v 1.8 2005/04/26 16:59:11 c95men Exp $
48   */
49  public final class SmsTransportManager
50  {
51      private SmsTransportManager()
52      {
53          // This is a static class
54      }
55  
56      /***
57       * Dynamically instantiates and initializes an SmsTransport.
58       * 
59       * @param theClassname
60       *            Full classname of the transport. E.g.
61       *            "org.marre.sms.transport.gsm.GsmTransport"
62       * @param theProps
63       *            Properties to initialize the transport with.
64       * @return An initialized SmsTransport object
65       * @throws SmsException
66       *             If we failed to load the requested transport
67       */
68      public static SmsTransport getTransport(String theClassname, Properties theProps) throws SmsException
69      {
70          SmsTransport transport = null;
71  
72          try
73          {
74              // Try to find and instanciate the transport
75              Class clazz = Class.forName(theClassname);
76              Object obj = clazz.newInstance();
77  
78              // No promblems so far. Initialize the transport
79              transport = (SmsTransport) obj;
80              transport.init(theProps);
81  
82              return (SmsTransport) obj;
83          }
84          catch (ClassCastException ex)
85          {
86              throw new SmsException(theClassname + "is not an SmsTransport.", ex);
87          }
88          catch (ClassNotFoundException ex)
89          {
90              throw new SmsException("Couldn't find " + theClassname + ". Please check your classpath.", ex);
91          }
92          catch (InstantiationException ex)
93          {
94              throw new SmsException("Couldn't create " + theClassname + ". Please check your classpath.", ex);
95          }
96          catch (IllegalAccessException ex)
97          {
98              throw new SmsException("Couldn't create " + theClassname + ". Please check your classpath.", ex);
99          }
100     }
101 }