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: JavaMailSession.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
031: import javax.naming.BinaryRefAddr;
032: import javax.naming.NamingException;
033: import javax.naming.Reference;
034:
035: //import objectweb.util
036: import org.objectweb.util.monolog.api.BasicLevel;
037:
038: //import jonas
039: import org.objectweb.jonas.common.PropDump;
040: import org.objectweb.jonas.common.JNDIUtils;
041:
042: /**
043: * This class provides a way for referencing mail session.
044: * @author Florent Benoit
045: * @author Ludovic Bert
046: */
047: public class JavaMailSession extends JavaMail {
048:
049: /**
050: * Type of the factory
051: */
052: private static final String FACTORY_TYPE = "javax.mail.Session";
053:
054: /**
055: * Constructor of a JMailSession Object.
056: * @param factoryName the name of the factory.
057: * @param name the jndi name
058: * @param mailProperties properties for configuring this object.
059: */
060: public JavaMailSession(String factoryName, String name,
061: Properties mailProperties) {
062: super (factoryName, name, mailProperties);
063: }
064:
065: /**
066: * Return the type of the factory
067: * @return the type of the mail factory
068: */
069: public String getType() {
070: return FACTORY_TYPE;
071: }
072:
073: /**
074: * Retrieves the Reference of the javax.mail.Session object.
075: * The Reference contains the factory used to create this object
076: * (that is the JavaMailSessionFactory) and the optional parameters used to
077: * configure the factory.
078: * @return the non-null Reference of the javax.mail.Session object.
079: * @throws NamingException if a naming exception was encountered while
080: * retrieving the reference.
081: */
082: public Reference getReference() throws NamingException {
083:
084: //Build the reference to the factory JMailSessionFactory
085: Reference reference = new Reference(
086: FACTORY_TYPE,
087: "org.objectweb.jonas.mail.factory.JavaMailSessionFactory",
088: null);
089: if (getLogger().isLoggable(BasicLevel.DEBUG)) {
090: PropDump.print("Here are these properties:",
091: getMailSessionProperties(), getLogger(),
092: BasicLevel.DEBUG);
093: }
094:
095: //Give the session properties
096: byte[] bytes = JNDIUtils
097: .getBytesFromObject(getMailSessionProperties());
098: if (bytes != null) {
099: reference.add(new BinaryRefAddr(
100: "javaxmailSession.properties", bytes));
101: }
102:
103: //Give the authentication properties
104: bytes = JNDIUtils
105: .getBytesFromObject(getAuthenticationProperties());
106: if (bytes != null) {
107: reference.add(new BinaryRefAddr(
108: "authentication.properties", bytes));
109: }
110:
111: return reference;
112:
113: }
114:
115: }
|