001: /**
002: * EasyBeans
003: * Copyright (C) 2007 Bull S.A.S.
004: * Contact: easybeans@ow2.org
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation; either
009: * version 2.1 of the License, or any later version.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: * You should have received a copy of the GNU Lesser General Public
017: * License along with this library; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
019: * USA
020: *
021: * --------------------------------------------------------------------------
022: * $Id: AbsJavaMailRef.java 1970 2007-10-16 11:49:25Z benoitf $
023: * --------------------------------------------------------------------------
024: */package org.ow2.easybeans.component.mail.factory;
025:
026: import java.io.IOException;
027: import java.io.Serializable;
028: import java.util.Properties;
029:
030: import javax.naming.BinaryRefAddr;
031: import javax.naming.NamingException;
032: import javax.naming.Reference;
033: import javax.naming.Referenceable;
034: import javax.naming.StringRefAddr;
035:
036: import org.ow2.easybeans.util.marshalling.Serialization;
037:
038: /**
039: * Abstract referenceable object used to bind JavaMail factories.
040: * @author Florent BENOIT
041: */
042: public abstract class AbsJavaMailRef implements Referenceable {
043:
044: /**
045: * Name of the factory.
046: */
047: private String name = null;
048:
049: /**
050: * JNDI name of the factory.
051: */
052: private String jndiName = null;
053:
054: /**
055: * Mail Properties.
056: */
057: private Properties properties = null;
058:
059: /**
060: * Username for authentication.
061: */
062: private String authName = null;
063:
064: /**
065: * Password for authentication.
066: */
067: private String authPass = null;
068:
069: /**
070: * Build a new javamail reference.
071: */
072: public AbsJavaMailRef() {
073: }
074:
075: /**
076: * @return the name of the factory.
077: */
078: public String getName() {
079: return name;
080: }
081:
082: /**
083: * Set the name of this factory.
084: * @param name the name of this factory
085: */
086: public void setName(final String name) {
087: this .name = name;
088: }
089:
090: /**
091: * @return the JNDI name of the factory.
092: */
093: public String getJNDIName() {
094: return jndiName;
095: }
096:
097: /**
098: * Set the JNDI name of this factory.
099: * @param jndiName the JNDI name of this factory
100: */
101: public void setJNDIName(final String jndiName) {
102: this .jndiName = jndiName;
103: }
104:
105: /**
106: * @return the authentication name of the factory.
107: */
108: public String getAuthName() {
109: return authName;
110: }
111:
112: /**
113: * Set the authentication name of this factory.
114: * @param authName the authentication name of this factory
115: */
116: public void setAuthName(final String authName) {
117: this .authName = authName;
118: }
119:
120: /**
121: * @return the authentication password of the factory.
122: */
123: public String getAuthPass() {
124: return authPass;
125: }
126:
127: /**
128: * Set the authentication password of this factory.
129: * @param authPass the authentication password of this factory
130: */
131: public void setAuthPass(final String authPass) {
132: this .authPass = authPass;
133: }
134:
135: /**
136: * @return the properties used by the factory.
137: */
138: public Properties getProperties() {
139: return properties;
140: }
141:
142: /**
143: * Sets the session properties.
144: * @param properties the session properties.
145: */
146: public void setProperties(final Properties properties) {
147: this .properties = properties;
148: }
149:
150: /**
151: * Adds some settings to the reference.
152: * @param reference the reference to configure
153: * @throws NamingException if something goes wrong
154: */
155: protected void updateRefAddr(final Reference reference)
156: throws NamingException {
157: // Add the mail properties
158: putObject(reference, AbsJavaMailFactory.MAIL_PROPERTIES,
159: properties);
160:
161: // And then the authentication
162: reference.add(new StringRefAddr(
163: AbsJavaMailFactory.AUTHENTICATION_USERNAME, authName));
164: reference.add(new StringRefAddr(
165: AbsJavaMailFactory.AUTHENTICATION_PASSWORD, authPass));
166: }
167:
168: /**
169: * Put the given object in the reference with the given property name.
170: * @param reference the given reference
171: * @param propertyName the given property
172: * @param o the object to add
173: * @throws NamingException if object is not put.
174: */
175: public void putObject(final Reference reference,
176: final String propertyName, final Serializable o)
177: throws NamingException {
178: try {
179: reference.add(new BinaryRefAddr(propertyName, Serialization
180: .storeObject(o)));
181: } catch (IOException e) {
182: NamingException ne = new NamingException(
183: "Cannot get bytes from the to recipients object");
184: ne.initCause(e);
185: throw ne;
186: }
187: }
188:
189: /**
190: * Retrieves the Reference of this object.
191: * @return The non-null Reference of this object.
192: * @exception NamingException If a naming exception was encountered while
193: * retrieving the reference.
194: */
195: public abstract Reference getReference() throws NamingException;
196:
197: /**
198: * Return the type of the factory.
199: * @return the type of the mail factory
200: */
201: public abstract String getType();
202:
203: }
|