1 /**
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18 package org.apache.geronimo.javamail.util;
19
20 import java.util.Properties;
21
22 import javax.mail.Session;
23
24 /**
25 * Interface for providing access to protocol specific properties to
26 * utility classes.
27 */
28 public class ProtocolProperties {
29 // the protocol we're working with.
30 protected String protocol;
31 // a preconstructed prefix string to reduce concatenation operations.
32 protected String protocolPrefix;
33 // the Session that's the source of all of the properties
34 protected Session session;
35 // the sslConnection property. This indicates this protocol is to use SSL for
36 // all communications with the server.
37 protected boolean sslConnection;
38 // the default port property. The default port differs with the protocol
39 // and the sslConnection property.
40 protected int defaultPort;
41
42
43 public ProtocolProperties(Session session, String protocol, boolean sslConnection, int defaultPort) {
44 this.session = session;
45 this.protocol = protocol;
46 this.sslConnection = sslConnection;
47 this.defaultPort = defaultPort;
48 // this helps avoid a lot of concatentates when retrieving properties.
49 protocolPrefix = "mail." + protocol + ".";
50 }
51
52
53 /**
54 * Retrieve the Session associated with this property bundle instance.
55 *
56 * @return A Session object that's the source of the accessed properties.
57 */
58 public Session getSession() {
59 return session;
60 }
61
62
63 /**
64 * Retrieve the name of the protocol used to access properties.
65 *
66 * @return The protocol String name.
67 */
68 public String getProtocol() {
69 return protocol;
70 }
71
72
73 /**
74 * Retrieve the SSL Connection flag for this protocol;
75 *
76 * @return true if an SSL connection is required, false otherwise.
77 */
78 public boolean getSSLConnection() {
79 return sslConnection;
80 }
81
82
83 /**
84 * Return the default port to use with this connection.
85 *
86 * @return The default port value.
87 */
88 public int getDefaultPort() {
89 return defaultPort;
90 }
91
92
93 /**
94 * Get a property associated with this mail protocol.
95 *
96 * @param name The name of the property.
97 *
98 * @return The property value (returns null if the property has not been set).
99 */
100 public String getProperty(String name) {
101 // the name we're given is the least qualified part of the name.
102 // We construct the full property name
103 // using the protocol
104 String fullName = protocolPrefix + name;
105 return session.getProperty(fullName);
106 }
107
108 /**
109 * Get a property associated with this mail session. Returns
110 * the provided default if it doesn't exist.
111 *
112 * @param name The name of the property.
113 * @param defaultValue
114 * The default value to return if the property doesn't exist.
115 *
116 * @return The property value (returns defaultValue if the property has not been set).
117 */
118 public String getProperty(String name, String defaultValue) {
119 // the name we're given is the least qualified part of the name.
120 // We construct the full property name
121 // using the protocol
122 String fullName = protocolPrefix + name;
123 String value = session.getProperty(fullName);
124 if (value == null) {
125 value = defaultValue;
126 }
127 return value;
128 }
129
130
131 /**
132 * Get a property associated with this mail session as an integer value. Returns
133 * the default value if the property doesn't exist or it doesn't have a valid int value.
134 *
135 * @param name The name of the property.
136 * @param defaultValue
137 * The default value to return if the property doesn't exist.
138 *
139 * @return The property value converted to an int.
140 */
141 public int getIntProperty(String name, int defaultValue)
142 {
143 // retrieve the property
144 String value = getProperty(name);
145 // return the default value if not set.
146 if (value == null) {
147 return defaultValue;
148 }
149 return Integer.parseInt(value);
150 }
151
152
153 /**
154 * Get a property associated with this mail session as an boolean value. Returns
155 * the default value if the property doesn't exist or it doesn't have a valid int value.
156 *
157 * @param name The name of the property.
158 * @param defaultValue
159 * The default value to return if the property doesn't exist.
160 *
161 * @return The property value converted to a boolean
162 */
163 public boolean getBooleanProperty(String name, boolean defaultValue)
164 {
165 // retrieve the property
166 String value = getProperty(name);
167 // return the default value if not set.
168 if (value == null) {
169 return defaultValue;
170 }
171 // just do a single test for true.
172 if ("true".equals(value)) {
173 return true;
174 }
175 // return false for anything other than true
176 return false;
177 }
178
179
180 /**
181 * Get a property associated with this mail session. Session
182 * properties all begin with "mail."
183 *
184 * @param name The name of the property.
185 *
186 * @return The property value (returns null if the property has not been set).
187 */
188 public String getSessionProperty(String name) {
189 // the name we're given is the least qualified part of the name.
190 // We construct the full property name
191 // using the protocol
192 String fullName = "mail." + name;
193 return session.getProperty(fullName);
194 }
195
196 /**
197 * Get a property associated with this mail session. Returns
198 * the provided default if it doesn't exist.
199 *
200 * @param name The name of the property.
201 * @param defaultValue
202 * The default value to return if the property doesn't exist.
203 *
204 * @return The property value (returns defaultValue if the property has not been set).
205 */
206 public String getSessionProperty(String name, String defaultValue) {
207 // the name we're given is the least qualified part of the name.
208 // We construct the full property name
209 // using the protocol
210 String fullName = "mail." + name;
211 String value = session.getProperty(fullName);
212 if (value == null) {
213 value = defaultValue;
214 }
215 return value;
216 }
217
218
219 /**
220 * Get a property associated with this mail session as an integer value. Returns
221 * the default value if the property doesn't exist or it doesn't have a valid int value.
222 *
223 * @param name The name of the property.
224 * @param defaultValue
225 * The default value to return if the property doesn't exist.
226 *
227 * @return The property value converted to an int.
228 */
229 public int getIntSessionProperty(String name, int defaultValue)
230 {
231 // retrieve the property
232 String value = getSessionProperty(name);
233 // return the default value if not set.
234 if (value == null) {
235 return defaultValue;
236 }
237 return Integer.parseInt(value);
238 }
239
240
241 /**
242 * Get a property associated with this mail session as an boolean value. Returns
243 * the default value if the property doesn't exist or it doesn't have a valid int value.
244 *
245 * @param name The name of the property.
246 * @param defaultValue
247 * The default value to return if the property doesn't exist.
248 *
249 * @return The property value converted to a boolean
250 */
251 public boolean getBooleanSessionProperty(String name, boolean defaultValue)
252 {
253 // retrieve the property
254 String value = getSessionProperty(name);
255 // return the default value if not set.
256 if (value == null) {
257 return defaultValue;
258 }
259 // just do a single test for true.
260 if ("true".equals(value)) {
261 return true;
262 }
263 // return false for anything other than true
264 return false;
265 }
266
267 /**
268 * Get the complete set of properties associated with this Session.
269 *
270 * @return The Session properties bundle.
271 */
272 public Properties getProperties() {
273 return session.getProperties();
274 }
275
276 }