1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, 13 * software distributed under the License is distributed on an 14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 * KIND, either express or implied. See the License for the 16 * specific language governing permissions and limitations 17 * under the License. 18 */ 19 20 package org.apache.geronimo.mail.util; 21 22 import java.security.Security; 23 24 import javax.mail.Session; 25 26 /** 27 * Simple utility class for managing session properties. 28 */ 29 public class SessionUtil { 30 31 /** 32 * Get a property associated with this mail session. Returns 33 * the provided default if it doesn't exist. 34 * 35 * @param session The attached session. 36 * @param name The name of the property. 37 * 38 * @return The property value (returns null if the property has not been set). 39 */ 40 static public String getProperty(Session session, String name) { 41 // occasionally, we get called with a null session if an object is not attached to 42 // a session. In that case, treat this like an unknown parameter. 43 if (session == null) { 44 return null; 45 } 46 47 return session.getProperty(name); 48 } 49 50 51 /** 52 * Get a property associated with this mail session. Returns 53 * the provided default if it doesn't exist. 54 * 55 * @param session The attached session. 56 * @param name The name of the property. 57 * @param defaultValue 58 * The default value to return if the property doesn't exist. 59 * 60 * @return The property value (returns defaultValue if the property has not been set). 61 */ 62 static public String getProperty(Session session, String name, String defaultValue) { 63 String result = getProperty(session, name); 64 if (result == null) { 65 return defaultValue; 66 } 67 return result; 68 } 69 70 71 /** 72 * Process a session property as a boolean value, returning 73 * either true or false. 74 * 75 * @param session The source session. 76 * @param name 77 * 78 * @return True if the property value is "true". Returns false for any 79 * other value (including null). 80 */ 81 static public boolean isPropertyTrue(Session session, String name) { 82 String property = getProperty(session, name); 83 if (property != null) { 84 return property.equals("true"); 85 } 86 return false; 87 } 88 89 /** 90 * Process a session property as a boolean value, returning 91 * either true or false. 92 * 93 * @param session The source session. 94 * @param name 95 * 96 * @return True if the property value is "false". Returns false for 97 * other value (including null). 98 */ 99 static public boolean isPropertyFalse(Session session, String name) { 100 String property = getProperty(session, name); 101 if (property != null) { 102 return property.equals("false"); 103 } 104 return false; 105 } 106 107 /** 108 * Get a property associated with this mail session as an integer value. Returns 109 * the default value if the property doesn't exist or it doesn't have a valid int value. 110 * 111 * @param session The source session. 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 converted to an int. 117 */ 118 static public int getIntProperty(Session session, String name, int defaultValue) { 119 String result = getProperty(session, name); 120 if (result != null) { 121 try { 122 // convert into an int value. 123 return Integer.parseInt(result); 124 } catch (NumberFormatException e) { 125 } 126 } 127 // return default value if it doesn't exist is isn't convertable. 128 return defaultValue; 129 } 130 131 132 /** 133 * Get a property associated with this mail session as a boolean value. Returns 134 * the default value if the property doesn't exist or it doesn't have a valid boolean value. 135 * 136 * @param session The source session. 137 * @param name The name of the property. 138 * @param defaultValue 139 * The default value to return if the property doesn't exist. 140 * 141 * @return The property value converted to a boolean. 142 */ 143 static public boolean getBooleanProperty(Session session, String name, boolean defaultValue) { 144 String result = getProperty(session, name); 145 if (result != null) { 146 return Boolean.valueOf(result).booleanValue(); 147 } 148 // return default value if it doesn't exist is isn't convertable. 149 return defaultValue; 150 } 151 152 153 /** 154 * Get a system property associated with this mail session as a boolean value. Returns 155 * the default value if the property doesn't exist or it doesn't have a valid boolean 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 static public boolean getBooleanProperty(String name, boolean defaultValue) { 164 try { 165 String result = System.getProperty(name); 166 if (result != null) { 167 return Boolean.valueOf(result).booleanValue(); 168 } 169 } catch (SecurityException e) { 170 // we can't access the property, so for all intents, it doesn't exist. 171 } 172 // return default value if it doesn't exist is isn't convertable. 173 return defaultValue; 174 } 175 176 177 /** 178 * Get a system property associated with this mail session as a boolean value. Returns 179 * the default value if the property doesn't exist. 180 * 181 * @param name The name of the property. 182 * @param defaultValue 183 * The default value to return if the property doesn't exist. 184 * 185 * @return The property value 186 */ 187 static public String getProperty(String name, String defaultValue) { 188 try { 189 String result = System.getProperty(name); 190 if (result != null) { 191 return result; 192 } 193 } catch (SecurityException e) { 194 // we can't access the property, so for all intents, it doesn't exist. 195 } 196 // return default value if it doesn't exist is isn't convertable. 197 return defaultValue; 198 } 199 200 201 /** 202 * Get a system property associated with this mail session as a boolean value. Returns 203 * the default value if the property doesn't exist. 204 * 205 * @param name The name of the property. 206 * 207 * @return The property value 208 */ 209 static public String getProperty(String name) { 210 try { 211 return System.getProperty(name); 212 } catch (SecurityException e) { 213 // we can't access the property, so for all intents, it doesn't exist. 214 } 215 // return null if we got an exception. 216 return null; 217 } 218 }