001: /*
002: * Copyright (c) 2001 - 2005 ivata limited.
003: * All rights reserved.
004: * -----------------------------------------------------------------------------
005: * ivata groupware may be redistributed under the GNU General Public
006: * License as published by the Free Software Foundation;
007: * version 2 of the License.
008: *
009: * These programs are free software; you can redistribute them and/or
010: * modify them under the terms of the GNU General Public License
011: * as published by the Free Software Foundation; version 2 of the License.
012: *
013: * These programs are distributed in the hope that they will be useful,
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
016: *
017: * See the GNU General Public License in the file LICENSE.txt for more
018: * details.
019: *
020: * If you would like a copy of the GNU General Public License write to
021: *
022: * Free Software Foundation, Inc.
023: * 59 Temple Place - Suite 330
024: * Boston, MA 02111-1307, USA.
025: *
026: *
027: * To arrange commercial support and licensing, contact ivata at
028: * http://www.ivata.com/contact.jsp
029: * -----------------------------------------------------------------------------
030: * $Log: MailAuthenticator.java,v $
031: * Revision 1.4 2005/10/02 14:08:59 colinmacleod
032: * Added/improved log4j logging.
033: *
034: * Revision 1.3 2005/09/14 16:16:52 colinmacleod
035: * Removed unused local and class variables.
036: * Added serialVersionUID.
037: *
038: * Revision 1.2 2005/04/09 17:20:01 colinmacleod
039: * Changed copyright text to GPL v2 explicitly.
040: *
041: * Revision 1.1.1.1 2005/03/10 17:51:16 colinmacleod
042: * Restructured ivata op around Hibernate/PicoContainer.
043: * Renamed ivata groupware.
044: *
045: * Revision 1.4 2004/07/13 19:48:12 colinmacleod
046: * Moved project to POJOs from EJBs.
047: * Applied PicoContainer to services layer (replacing session EJBs).
048: * Applied Hibernate to persistence layer (replacing entity EJBs).
049: *
050: * Revision 1.3 2004/03/21 21:16:39 colinmacleod
051: * Shortened name to ivata op.
052: *
053: * Revision 1.2 2004/02/01 22:07:32 colinmacleod
054: * Added full names to author tags
055: *
056: * Revision 1.1.1.1 2004/01/27 20:59:58 colinmacleod
057: * Moved ivata openportal to SourceForge..
058: *
059: * Revision 1.2 2003/10/15 14:11:33 colin
060: * fixing for XDoclet
061: *
062: * Revision 1.1 2003/02/24 19:09:24 colin
063: * moved to business
064: *
065: * Revision 1.3 2003/02/04 17:39:22 colin
066: * copyright notice
067: *
068: * Revision 1.2 2002/09/09 11:00:38 colin
069: * made session classes serializable :-)
070: *
071: * Revision 1.3 2002/09/09 08:44:52 colin
072: * made new mail session class to abstract the non-serializable JavaMail session
073: *
074: * Revision 1.1 2002/09/09 08:25:50 colin
075: * moved authenticator to session subpackage
076: *
077: * Revision 1.2 2002/08/30 14:20:36 peter
078: * fixed the previous state
079: *
080: * Revision 1.1 2002/08/30 09:18:22 colin
081: * added to repository late - sorry peter
082: *
083: * Revision 1.1 2002/07/15 07:51:04 colin
084: * added new Mail EJB and local interface to settings
085: *
086: * Revision 1.2 2002/07/01 10:24:07 colin
087: * improved documentation and added imports
088: * -----------------------------------------------------------------------------
089: */
090: package com.ivata.groupware.business.mail.session;
091:
092: import org.apache.log4j.Logger;
093:
094: import java.io.IOException;
095: import java.io.ObjectInputStream;
096: import java.io.ObjectOutputStream;
097: import java.io.Serializable;
098:
099: import javax.mail.Authenticator;
100: import javax.mail.PasswordAuthentication;
101:
102: /**
103: * <p>Handles email authentication within the {@link
104: * com.ivata.groupware.web.tag.LoginTag LoginTag}.</p>
105: *
106: * @since 2001-09-08
107: * @author Colin MacLeod
108: * <a href='mailto:colin.macleod@ivata.com'>colin.macleod@ivata.com</a>
109: * @version $Revision: 1.4 $
110: */
111: public class MailAuthenticator extends Authenticator implements
112: Serializable {
113: /**
114: * Logger for this class.
115: */
116: private static final Logger logger = Logger
117: .getLogger(MailAuthenticator.class);
118:
119: /**
120: * Serialization version (for <code>Serializable</code> interface).
121: */
122: private static final long serialVersionUID = 1L;
123:
124: /**
125: * <p>This username will be used to log into the mail account.</p>
126: */
127: String userName;
128:
129: /**
130: * <p>Password used to check user against mail account.</p>
131: */
132: String password;
133:
134: /**
135: * <p>Construct an Authenticator with the given username and
136: * password.</p>
137: *
138: * @param userName username used to create a password authentication
139: * in
140: * <code>getPasswordAuthentication</code>
141: * @param password username used to create a password
142: * authentication in <code>getPasswordAuthentication</code>
143: * @see #getPasswordAuthentication( )
144: *
145: */
146: public MailAuthenticator(String userName, String password) {
147: this .userName = userName;
148: this .password = password;
149: }
150:
151: /**
152: * <p>Return a PasswordAuthentication for the username and password
153: * given in
154: * the constructor.</p>
155: *
156: * @return PasswordAuthentication instantiated using the username and
157: * password given in the constructor
158: *
159: */
160: public PasswordAuthentication getPasswordAuthentication() {
161: if (logger.isDebugEnabled()) {
162: logger.debug("getPasswordAuthentication() - start");
163: }
164:
165: PasswordAuthentication returnPasswordAuthentication = new PasswordAuthentication(
166: userName, password);
167: if (logger.isDebugEnabled()) {
168: logger
169: .debug("getPasswordAuthentication() - end - return value = "
170: + returnPasswordAuthentication);
171: }
172: return returnPasswordAuthentication;
173: }
174:
175: /**
176: * <p>Serialize the object to the output stream provided.</p>
177: * @exception IOException thrown by
178: * <code>ObjectOutputStream.defaultWriteObject( )</code>
179: * @param oos the output stream to serialize the object to
180: *
181: */
182: private void writeObject(final ObjectOutputStream oos)
183: throws IOException {
184: if (logger.isDebugEnabled()) {
185: logger.debug("writeObject(ObjectOutputStream oos = " + oos
186: + ") - start");
187: }
188:
189: oos.defaultWriteObject();
190:
191: if (logger.isDebugEnabled()) {
192: logger.debug("writeObject(ObjectOutputStream) - end");
193: }
194: }
195:
196: /**
197: * <p>Serialize the object from the input stream provided.</p>
198: * @exception ClassNotFoundException thrown by
199: * <code>ObjectInputStream.defaultReadObject( )</code>.
200: * @exception IOException thrown by
201: * <code>ObjectInputStream.defaultReadObject( )</code>.
202: * @param ois the input stream to serialize the object from
203: *
204: */
205: private void readObject(final ObjectInputStream ois)
206: throws ClassNotFoundException, IOException {
207: if (logger.isDebugEnabled()) {
208: logger.debug("readObject(ObjectInputStream ois = " + ois
209: + ") - start");
210: }
211:
212: ois.defaultReadObject();
213:
214: if (logger.isDebugEnabled()) {
215: logger.debug("readObject(ObjectInputStream) - end");
216: }
217: }
218: }
|