001: /**
002: * JOnAS: Java(TM) Open Application Server
003: * Copyright (C) 1999 Bull S.A.
004: * Contact: jonas-team@objectweb.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: * Initial developer(s): Florent BENOIT & Ludovic BERT
022: * --------------------------------------------------------------------------
023: * $Id: JavaMailMimePartDS.java 6661 2005-04-28 08:43:27Z benoitf $
024: * --------------------------------------------------------------------------
025: */package org.objectweb.jonas.mail.factory;
026:
027: //import java
028: import java.util.Properties;
029:
030: import javax.naming.BinaryRefAddr;
031: import javax.naming.NamingException;
032: import javax.naming.Reference;
033:
034: import org.objectweb.jonas.common.PropDump;
035: import org.objectweb.jonas.common.JNDIUtils;
036: import org.objectweb.jonas.mail.MailService;
037: import org.objectweb.jonas.service.ServiceManager;
038: import org.objectweb.util.monolog.api.BasicLevel;
039:
040: /**
041: * This class provides a way for referencing mail session.
042: * @author Florent Benoit
043: * @author Ludovic Bert
044: */
045: public class JavaMailMimePartDS extends JavaMail {
046:
047: /**
048: * Type of the factory
049: */
050: private static final String FACTORY_TYPE = "javax.mail.internet.MimePartDataSource";
051:
052: /**
053: * Properties for the javax.mail.MimeMessage object.
054: */
055: private Properties messageProperties = null;
056:
057: /**
058: * JOnAS-specific property for Mime Messages configuration (mail.to)
059: */
060: protected static final String MIMEMESSAGE_TO = "mail.to";
061:
062: /**
063: * JOnAS-specific property for Mime Messages configuration (mail.cc)
064: */
065:
066: protected static final String MIMEMESSAGE_CC = "mail.cc";
067:
068: /**
069: * JOnAS-specific property for Mime Messages configuration (mail.bcc)
070: */
071: protected static final String MIMEMESSAGE_BCC = "mail.bcc";
072:
073: /**
074: * JOnAS-specific property for Mime Messages configuration (mail.subject)
075: */
076: protected static final String MIMEMESSAGE_SUBJECT = "mail.subject";
077:
078: /**
079: * Value used as sequence number by reconfiguration notifications
080: */
081: //protected long sequenceNumber = 0;
082: /**
083: * Return the type of the factory
084: * @return the type of the mail factory
085: */
086: public String getType() {
087: return FACTORY_TYPE;
088: }
089:
090: /**
091: * Constructor of a JavaMailMimePartDS Object
092: * @param factoryName the name of the factory.
093: * @param name the name of this object.
094: * @param mailProperties properties for configuring this object.
095: */
096: public JavaMailMimePartDS(String factoryName, String name,
097: Properties mailProperties) {
098: super (factoryName, name, mailProperties);
099:
100: PropDump.print("Received props:", mailProperties, getLogger(),
101: BasicLevel.DEBUG);
102:
103: //Get the message properties
104: messageProperties = new Properties();
105: String propValue = null;
106: propValue = (String) getMailSessionProperties().remove(
107: MIMEMESSAGE_TO);
108: if (propValue != null) {
109: messageProperties.setProperty(MIMEMESSAGE_TO, propValue);
110: }
111: propValue = (String) getMailSessionProperties().remove(
112: MIMEMESSAGE_CC);
113: if (propValue != null) {
114: messageProperties.setProperty(MIMEMESSAGE_CC, propValue);
115: }
116: propValue = (String) getMailSessionProperties().remove(
117: MIMEMESSAGE_BCC);
118: if (propValue != null) {
119: messageProperties.setProperty(MIMEMESSAGE_BCC, propValue);
120: }
121: propValue = (String) getMailSessionProperties().remove(
122: MIMEMESSAGE_SUBJECT);
123: if (propValue != null) {
124: messageProperties.setProperty(MIMEMESSAGE_SUBJECT,
125: propValue);
126: }
127:
128: if (getLogger().isLoggable(BasicLevel.DEBUG)) {
129: PropDump.print("Message props:", messageProperties,
130: getLogger(), BasicLevel.DEBUG);
131: }
132: }
133:
134: /**
135: * Retrieves the mimeMessage properties of this object.
136: * @return the mimeMessage properties of this object.
137: */
138: Properties getMimeMessageProperties() {
139: return messageProperties;
140: }
141:
142: /**
143: * Set the mimeMessage properties of this object.
144: * @param props the mimeMessage properties
145: */
146: void setMimeMessageProperties(Properties props) {
147: this .messageProperties = props;
148: try {
149: ((MailService) ServiceManager.getInstance()
150: .getMailService()).recreateJavaMailFactory(this );
151: } catch (Exception e) {
152: // should never occurs
153: }
154: //notifyReconfiguration(props);
155: if (getLogger().isLoggable(BasicLevel.DEBUG)) {
156: PropDump.print("These are the udated message props",
157: this .messageProperties, getLogger(),
158: BasicLevel.DEBUG);
159: }
160: }
161:
162: /**
163: * Retrieves the Reference of the javax.mail.MimePartDataSource object.
164: * The Reference contains the factory used to create this object
165: * (that is the JavaMimePartDSFactory) and the optional parameters used to
166: * configure the factory.
167: * @return the non-null Reference of the javax.mail.MimePartDataSource
168: * object.
169: * @throws NamingException if a naming exception was encountered while
170: * retrieving the reference.
171: */
172: public Reference getReference() throws NamingException {
173:
174: //Build the reference to the factory JMailSessionFactory
175: Reference reference = new Reference(
176: FACTORY_TYPE,
177: "org.objectweb.jonas.mail.factory.JavaMailMimePartDSFactory",
178: null);
179: byte[] bytes = null;
180:
181: //Give the session properties
182: bytes = JNDIUtils
183: .getBytesFromObject(getMailSessionProperties());
184: if (bytes != null) {
185: reference.add(new BinaryRefAddr(
186: "javaxmailSession.properties", bytes));
187: }
188:
189: //Give the mime message properties
190: bytes = JNDIUtils.getBytesFromObject(messageProperties);
191: if (bytes != null) {
192: reference.add(new BinaryRefAddr(
193: "javaxInternetMimeMessage.properties", bytes));
194: }
195:
196: //Give the authentication properties
197: bytes = JNDIUtils
198: .getBytesFromObject(getAuthenticationProperties());
199: if (bytes != null) {
200: reference.add(new BinaryRefAddr(
201: "authentication.properties", bytes));
202: }
203:
204: return reference;
205:
206: }
207: }
|