KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > exolab > jms > net > tcp > TCPSRequestInfo


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: TCPSRequestInfo.java,v 1.1 2005/05/03 13:45:59 tanderson Exp $
44  */

45 package org.exolab.jms.net.tcp;
46
47 import org.exolab.jms.net.socket.SocketRequestInfo;
48 import org.exolab.jms.net.util.SSLProperties;
49 import org.exolab.jms.net.util.Properties;
50 import org.exolab.jms.net.connector.ResourceException;
51 import org.exolab.jms.net.uri.URI;
52
53
54 /**
55  * Implementation of the {@link org.exolab.jms.net.connector.ConnectionRequestInfo}
56  * interface that enables the TCPS connector to pass data across the
57  * connection request flow.
58  *
59  * @author <a HREF="mailto:tma@netspace.net.au">Tim Anderson</a>
60  * @version $Revision: 1.1 $ $Date: 2005/05/03 13:45:59 $
61  */

62 public class TCPSRequestInfo extends SocketRequestInfo {
63
64     /**
65      * Properties to configure the secure socket layer. May be
66      * <code>null</code>.
67      */

68     private SSLProperties _sslProperties = null;
69
70     /**
71      * Determines if connections which are accepted must include client
72      * authentication. By default, clients do not need to provide
73      * authentication information.
74      */

75     private boolean _needCientAuth = false;
76
77     /**
78      * Connection property to indicate if clients must authentication
79      * themselves on connection.
80      */

81     private static final String JavaDoc NEED_CLIENT_AUTH = "needClientAuth";
82
83
84     /**
85      * Construct a new <code>TCPSRequestInfo</code>.
86      *
87      * @param uri the URI
88      */

89     public TCPSRequestInfo(URI uri) {
90         super(uri);
91     }
92
93     /**
94      * Construct a new <code>TCPSRequestInfo</code>.
95      *
96      * @param uri the URI
97      * @param properties the properties to populate this from
98      * @throws ResourceException if any of the properties are invalid
99      */

100     public TCPSRequestInfo(URI uri, Properties properties)
101             throws ResourceException {
102         super(uri, properties);
103         SSLProperties ssl = new SSLProperties(properties);
104         if (!ssl.isEmpty()) {
105             setSSLProperties(ssl);
106         }
107         setNeedClientAuth(
108                 properties.getBoolean(NEED_CLIENT_AUTH, _needCientAuth));
109     }
110
111     /**
112      * Returns the properties used to configure the secure socket layer (SSL).
113      *
114      * @return the SSL configuration properties, or <code>null</code> if unset
115      */

116     public SSLProperties getSSLProperties() {
117         return _sslProperties;
118     }
119
120     /**
121      * Sets the properties used to configure the secure socket layer (SSL).
122      *
123      * @param properties the SSL configuration properties
124      */

125     public void setSSLProperties(SSLProperties properties) {
126         _sslProperties = properties;
127     }
128
129     /**
130      * Sets if clients must authenticate themselves on connection.
131      *
132      * @param required if <code>true</code>, the clients must authenticate
133      * themselves.
134      */

135     public void setNeedClientAuth(boolean required) {
136         _needCientAuth = required;
137     }
138
139     /**
140      * Determines if clients must authenticate themselves on connection.
141      *
142      * @return <code>true</code> if clients must authenticate themselves.
143      */

144     public boolean getNeedClientAuth() {
145         return _needCientAuth;
146     }
147
148     /**
149      * Helper to export this to a {@link Properties} instance.
150      *
151      * @param properties the properties to export to.
152      */

153     public void export(Properties properties) {
154         super.export(properties);
155         SSLProperties ssl = getSSLProperties();
156         if (ssl != null) {
157             ssl.export(properties);
158         }
159         properties.set(NEED_CLIENT_AUTH, getNeedClientAuth());
160     }
161
162     /**
163      * Checks whether this instance is equal to another.
164      *
165      * @param other the object to compare
166      * @return <code>true</code> if the two instances are equal; otherwise
167      * <code>false</code>
168      */

169     public boolean equals(Object JavaDoc other) {
170         boolean equal = false;
171         if (other instanceof TCPSRequestInfo && super.equals(other)) {
172             TCPSRequestInfo info = (TCPSRequestInfo) other;
173             if (_needCientAuth == info._needCientAuth
174                 && equals(_sslProperties, info._sslProperties)) {
175                 equal = true;
176             }
177         }
178         return equal;
179     }
180
181 }
182
Popular Tags