001 /**
002 *
003 * Copyright 2003-2006 The Apache Software Foundation
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 package org.apache.geronimo.mail.util;
019
020 import java.security.Security;
021
022 import javax.mail.Session;
023
024 /**
025 * Simple utility class for managing session properties.
026 */
027 public class SessionUtil {
028
029 /**
030 * Get a property associated with this mail session. Returns
031 * the provided default if it doesn't exist.
032 *
033 * @param session The attached session.
034 * @param name The name of the property.
035 *
036 * @return The property value (returns null if the property has not been set).
037 */
038 static public String getProperty(Session session, String name) {
039 // occasionally, we get called with a null session if an object is not attached to
040 // a session. In that case, treat this like an unknown parameter.
041 if (session == null) {
042 return null;
043 }
044
045 return session.getProperty(name);
046 }
047
048
049 /**
050 * Get a property associated with this mail session. Returns
051 * the provided default if it doesn't exist.
052 *
053 * @param session The attached session.
054 * @param name The name of the property.
055 * @param defaultValue
056 * The default value to return if the property doesn't exist.
057 *
058 * @return The property value (returns defaultValue if the property has not been set).
059 */
060 static public String getProperty(Session session, String name, String defaultValue) {
061 String result = getProperty(session, name);
062 if (result == null) {
063 return defaultValue;
064 }
065 return result;
066 }
067
068
069 /**
070 * Process a session property as a boolean value, returning
071 * either true or false.
072 *
073 * @param session The source session.
074 * @param name
075 *
076 * @return True if the property value is "true". Returns false for any
077 * other value (including null).
078 */
079 static public boolean isPropertyTrue(Session session, String name) {
080 String property = getProperty(session, name);
081 if (property != null) {
082 return property.equals("true");
083 }
084 return false;
085 }
086
087 /**
088 * Process a session property as a boolean value, returning
089 * either true or false.
090 *
091 * @param session The source session.
092 * @param name
093 *
094 * @return True if the property value is "false". Returns false for
095 * other value (including null).
096 */
097 static public boolean isPropertyFalse(Session session, String name) {
098 String property = getProperty(session, name);
099 if (property != null) {
100 return property.equals("false");
101 }
102 return false;
103 }
104
105 /**
106 * Get a property associated with this mail session as an integer value. Returns
107 * the default value if the property doesn't exist or it doesn't have a valid int value.
108 *
109 * @param session The source session.
110 * @param name The name of the property.
111 * @param defaultValue
112 * The default value to return if the property doesn't exist.
113 *
114 * @return The property value converted to an int.
115 */
116 static public int getIntProperty(Session session, String name, int defaultValue) {
117 String result = getProperty(session, name);
118 if (result != null) {
119 try {
120 // convert into an int value.
121 return Integer.parseInt(result);
122 } catch (NumberFormatException e) {
123 }
124 }
125 // return default value if it doesn't exist is isn't convertable.
126 return defaultValue;
127 }
128
129
130 /**
131 * Get a property associated with this mail session as a boolean value. Returns
132 * the default value if the property doesn't exist or it doesn't have a valid boolean value.
133 *
134 * @param session The source session.
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 a boolean.
140 */
141 static public boolean getBooleanProperty(Session session, String name, boolean defaultValue) {
142 String result = getProperty(session, name);
143 if (result != null) {
144 return Boolean.valueOf(result).booleanValue();
145 }
146 // return default value if it doesn't exist is isn't convertable.
147 return defaultValue;
148 }
149
150
151 /**
152 * Get a system property associated with this mail session as a boolean value. Returns
153 * the default value if the property doesn't exist or it doesn't have a valid boolean value.
154 *
155 * @param name The name of the property.
156 * @param defaultValue
157 * The default value to return if the property doesn't exist.
158 *
159 * @return The property value converted to a boolean.
160 */
161 static public boolean getBooleanProperty(String name, boolean defaultValue) {
162 try {
163 String result = System.getProperty(name);
164 if (result != null) {
165 return Boolean.valueOf(result).booleanValue();
166 }
167 } catch (SecurityException e) {
168 // we can't access the property, so for all intents, it doesn't exist.
169 }
170 // return default value if it doesn't exist is isn't convertable.
171 return defaultValue;
172 }
173
174
175 /**
176 * Get a system property associated with this mail session as a boolean value. Returns
177 * the default value if the property doesn't exist.
178 *
179 * @param name The name of the property.
180 * @param defaultValue
181 * The default value to return if the property doesn't exist.
182 *
183 * @return The property value
184 */
185 static public String getProperty(String name, String defaultValue) {
186 try {
187 String result = System.getProperty(name);
188 if (result != null) {
189 return result;
190 }
191 } catch (SecurityException e) {
192 // we can't access the property, so for all intents, it doesn't exist.
193 }
194 // return default value if it doesn't exist is isn't convertable.
195 return defaultValue;
196 }
197
198
199 /**
200 * Get a system property associated with this mail session as a boolean value. Returns
201 * the default value if the property doesn't exist.
202 *
203 * @param name The name of the property.
204 *
205 * @return The property value
206 */
207 static public String getProperty(String name) {
208 try {
209 return System.getProperty(name);
210 } catch (SecurityException e) {
211 // we can't access the property, so for all intents, it doesn't exist.
212 }
213 // return null if we got an exception.
214 return null;
215 }
216 }