001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 */ 019 020 package org.apache.geronimo.mail.util; 021 022 import java.security.Security; 023 024 import javax.mail.Session; 025 026 /** 027 * Simple utility class for managing session properties. 028 */ 029 public class SessionUtil { 030 031 /** 032 * Get a property associated with this mail session. Returns 033 * the provided default if it doesn't exist. 034 * 035 * @param session The attached session. 036 * @param name The name of the property. 037 * 038 * @return The property value (returns null if the property has not been set). 039 */ 040 static public String getProperty(Session session, String name) { 041 // occasionally, we get called with a null session if an object is not attached to 042 // a session. In that case, treat this like an unknown parameter. 043 if (session == null) { 044 return null; 045 } 046 047 return session.getProperty(name); 048 } 049 050 051 /** 052 * Get a property associated with this mail session. Returns 053 * the provided default if it doesn't exist. 054 * 055 * @param session The attached session. 056 * @param name The name of the property. 057 * @param defaultValue 058 * The default value to return if the property doesn't exist. 059 * 060 * @return The property value (returns defaultValue if the property has not been set). 061 */ 062 static public String getProperty(Session session, String name, String defaultValue) { 063 String result = getProperty(session, name); 064 if (result == null) { 065 return defaultValue; 066 } 067 return result; 068 } 069 070 071 /** 072 * Process a session property as a boolean value, returning 073 * either true or false. 074 * 075 * @param session The source session. 076 * @param name 077 * 078 * @return True if the property value is "true". Returns false for any 079 * other value (including null). 080 */ 081 static public boolean isPropertyTrue(Session session, String name) { 082 String property = getProperty(session, name); 083 if (property != null) { 084 return property.equals("true"); 085 } 086 return false; 087 } 088 089 /** 090 * Process a session property as a boolean value, returning 091 * either true or false. 092 * 093 * @param session The source session. 094 * @param name 095 * 096 * @return True if the property value is "false". Returns false for 097 * other value (including null). 098 */ 099 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 }