KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > exolab > jms > net > util > SSLProperties


1 /**
2  * Redistribution and use of this software and associated documentation
3  * ("Software"), with or without modification, are permitted provided
4  * that the following conditions are met:
5  *
6  * 1. Redistributions of source code must retain copyright
7  * statements and notices. Redistributions must also contain a
8  * copy of this document.
9  *
10  * 2. Redistributions in binary form must reproduce the
11  * above copyright notice, this list of conditions and the
12  * following disclaimer in the documentation and/or other
13  * materials provided with the distribution.
14  *
15  * 3. The name "Exolab" must not be used to endorse or promote
16  * products derived from this Software without prior written
17  * permission of Exoffice Technologies. For written permission,
18  * please contact info@exolab.org.
19  *
20  * 4. Products derived from this Software may not be called "Exolab"
21  * nor may "Exolab" appear in their names without prior written
22  * permission of Exoffice Technologies. Exolab is a registered
23  * trademark of Exoffice Technologies.
24  *
25  * 5. Due credit should be given to the Exolab Project
26  * (http://www.exolab.org/).
27  *
28  * THIS SOFTWARE IS PROVIDED BY EXOFFICE TECHNOLOGIES AND CONTRIBUTORS
29  * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
30  * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
31  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
32  * EXOFFICE TECHNOLOGIES OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
33  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
34  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
35  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
37  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
38  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
39  * OF THE POSSIBILITY OF SUCH DAMAGE.
40  *
41  * Copyright 2005 (C) Exoffice Technologies Inc. All Rights Reserved.
42  *
43  * $Id: SSLProperties.java,v 1.4 2005/05/03 13:45:59 tanderson Exp $
44  */

45 package org.exolab.jms.net.util;
46
47 import org.exolab.jms.net.connector.ResourceException;
48
49
50 /**
51  * Helper class to hold the SSL properties (used by TPCS & HTTPS connectors).
52  *
53  * @author <a HREF="mailto:daniel.otero@mac.com">Daniel Otero</a>
54  * @author <a HREF="mailto:tma@netspace.net.au">Tim Anderson</a>
55  * @version $Revision: 1.4 $
56  */

57 public final class SSLProperties {
58
59     /**
60      * The keystore to use. If <code>null</code>, indicates to use the default
61      * keystore.
62      */

63     private String JavaDoc _keyStore;
64
65     /**
66      * The keystore password. If <code>null</code>, indicates to use the default
67      * password.
68      */

69     private String JavaDoc _keyStorePassword;
70
71     /**
72      * The keystore type. If <code>null</code>, indicates to use the default
73      * type.
74      */

75     private String JavaDoc _keyStoreType;
76
77     /**
78      * The truststore to use. If <code>null</code>, indicates to use the default
79      * truststore.
80      */

81     private String JavaDoc _trustStore;
82
83     /**
84      * The truststore password. If <code>null</code>, indicates to use the
85      * default password.
86      */

87     private String JavaDoc _trustStorePassword;
88
89     /**
90      * The truststore type. If <code>null</code>, indicates to use the default
91      * type.
92      */

93     private String JavaDoc _trustStoreType;
94
95     /**
96      * Connection property to indicate the keystore to use.
97      */

98     private static final String JavaDoc KEY_STORE = "keyStore";
99
100     /**
101      * Connection property to indicate the keystore password.
102      */

103     private static final String JavaDoc KEY_STORE_PASSWORD = "keyStorePassword";
104
105     /**
106      * Connection property to indicate the keystore type.
107      */

108     private static final String JavaDoc KEY_STORE_TYPE = "keyStoreType";
109
110     /**
111      * Connection property to indicate the truststore to use.
112      */

113     private static final String JavaDoc TRUST_STORE = "trustStore";
114
115     /**
116      * Connection property to indicate the truststore password.
117      */

118     private static final String JavaDoc TRUST_STORE_PASSWORD = "trustStorePassword";
119
120     /**
121      * Connection property to indicate the truststore type.
122      */

123     private static final String JavaDoc TRUST_STORE_TYPE = "trustStoreType";
124
125     /**
126      * Construct a new <code>SSLProperties</code>.
127      */

128     public SSLProperties() {
129     }
130
131     /**
132      * Construct a new <code>SSLProperties</code>.
133      *
134      * @param properties the properties to populate this from
135      * @throws ResourceException if any of the properties are invalid
136      */

137     public SSLProperties(Properties properties) throws ResourceException {
138         setKeyStore(properties.get(KEY_STORE));
139         setKeyStorePassword(properties.get(KEY_STORE_PASSWORD));
140         setKeyStoreType(properties.get(KEY_STORE_TYPE));
141         setTrustStore(properties.get(TRUST_STORE));
142         setTrustStorePassword(properties.get(TRUST_STORE_PASSWORD));
143         setTrustStoreType(properties.get(TRUST_STORE_TYPE));
144     }
145
146     /**
147      * Returns the keystore.
148      *
149      * @return the keystore, or <code>null</code> if unset
150      */

151     public String JavaDoc getKeyStore() {
152         return _keyStore;
153     }
154
155     /**
156      * Sets the keystore..
157      *
158      * @param store the keystore
159      */

160     public void setKeyStore(String JavaDoc store) {
161         _keyStore = store;
162     }
163
164     /**
165      * Returns the keystore password.
166      *
167      * @return the keystore password, or <code>null</code> if unset
168      */

169     public String JavaDoc getKeyStorePassword() {
170         return _keyStorePassword;
171     }
172
173     /**
174      * Sets the keystore password.
175      *
176      * @param password the keystore password
177      */

178     public void setKeyStorePassword(String JavaDoc password) {
179         _keyStorePassword = password;
180     }
181
182     /**
183      * Returns the keystore type.
184      *
185      * @return the keystore type, or <code>null</code> if unset
186      */

187     public String JavaDoc getKeyStoreType() {
188         return _keyStoreType;
189     }
190
191     /**
192      * Sets the keystore type.
193      *
194      * @param type the the keystore type
195      */

196     public void setKeyStoreType(String JavaDoc type) {
197         _keyStoreType = type;
198     }
199
200     /**
201      * Returns the truststore.
202      *
203      * @return the truststore, or <code>null</code> if unset
204      */

205     public String JavaDoc getTrustStore() {
206         return _trustStore;
207     }
208
209     /**
210      * Sets the truststore.
211      *
212      * @param store the truststore
213      */

214     public void setTrustStore(String JavaDoc store) {
215         _trustStore = store;
216     }
217
218     /**
219      * Returns the truststore password.
220      *
221      * @return the truststore passowrd, or <code>null</code> if unset
222      */

223     public String JavaDoc getTrustStorePassword() {
224         return _trustStorePassword;
225     }
226
227     /**
228      * Sets the truststore password.
229      *
230      * @param password the truststore password
231      */

232     public void setTrustStorePassword(String JavaDoc password) {
233         _trustStorePassword = password;
234     }
235
236     /**
237      * Returns the truststore type.
238      *
239      * @return the truststore type, or <code>null</code> if unset
240      */

241     public String JavaDoc getTrustStoreType() {
242         return _trustStoreType;
243     }
244
245     /**
246      * Sets the truststore type.
247      *
248      * @param type the the trusstore type
249      */

250     public void setTrustStoreType(String JavaDoc type) {
251         _trustStoreType = type;
252     }
253
254     /**
255      * Test to see if this instance has been populated.
256      *
257      * @return <code>true</code> if this hasn't been populated
258      */

259     public boolean isEmpty() {
260         return _keyStore == null && _keyStorePassword == null
261                 && _keyStoreType == null && _trustStore == null
262                 && _trustStorePassword == null && _trustStoreType == null;
263     }
264
265     /**
266      * Checks whether this instance is equal to another.
267      *
268      * @param other the object to compare
269      * @return <code>true</code> if the two instances are equal; otherwise
270      * <code>false</code>
271      */

272     public boolean equals(Object JavaDoc other) {
273         boolean equal = (this == other);
274         if (!equal) {
275             if (other instanceof SSLProperties) {
276                 SSLProperties props = (SSLProperties) other;
277                 if (equals(_keyStore, props._keyStore)
278                         && equals(_keyStorePassword, props._keyStorePassword)
279                         && equals(_keyStoreType, props._keyStoreType)
280                         && equals(_trustStore, props._trustStore)
281                         && equals(_trustStorePassword,
282                                   props._trustStorePassword)
283                         && equals(_trustStoreType, props._trustStoreType)) {
284                     equal = true;
285                 }
286             } else {
287                 equal = false;
288             }
289         }
290         return equal;
291     }
292
293     /**
294      * Helper to export this to a {@link Properties} instance.
295      *
296      * @param properties the properties to export to.
297      */

298     public void export(Properties properties) {
299         properties.setNonNull(KEY_STORE, getKeyStore());
300         properties.setNonNull(KEY_STORE_PASSWORD, getKeyStorePassword());
301         properties.setNonNull(KEY_STORE_TYPE, getKeyStoreType());
302         properties.setNonNull(TRUST_STORE, getTrustStore());
303         properties.setNonNull(TRUST_STORE_PASSWORD, getTrustStorePassword());
304         properties.setNonNull(TRUST_STORE_TYPE, getTrustStoreType());
305     }
306
307     /**
308      * Helper to compare two objects for equality.
309      *
310      * @param o1 the first object to compare
311      * @param o2 the second object to compare
312      * @return <code>true</code> if the objects are equal, otherwise
313      * <code>false</code>
314      */

315     private boolean equals(Object JavaDoc o1, Object JavaDoc o2) {
316         boolean equal = (o1 == null && o2 == null);
317         if (!equal) {
318             if (o1 != null && o1.equals(o2)) {
319                 equal = true;
320             }
321         }
322         return equal;
323     }
324
325 }
326
Popular Tags