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 1any 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: JavaMailResource.java 9118 2006-07-05 13:23:44Z sauthieg $
023: * --------------------------------------------------------------------------
024: */package org.objectweb.jonas.mail.factory;
025:
026: import java.util.Properties;
027:
028: import org.objectweb.jonas.management.ReconfiguredProp;
029: import org.objectweb.jonas.management.j2eemanagement.J2EEResource;
030:
031: /**
032: * @author Adriana Danes
033: *
034: * JavaMail resource implementation.
035: */
036: public abstract class JavaMailResource extends J2EEResource {
037:
038: JavaMail mailFactory = null;
039:
040: /**
041: * JavaMail resource constructor.
042: * @param objectName MBean ObjectName
043: * @param stateManageable
044: * @param statisticsProvider
045: * @param eventProvider
046: * @param mailFactory
047: */
048: public JavaMailResource(String objectName, boolean stateManageable,
049: boolean statisticsProvider, boolean eventProvider,
050: JavaMail mailFactory) {
051: super (objectName, stateManageable, statisticsProvider,
052: eventProvider);
053: this .mailFactory = mailFactory;
054: }
055:
056: /**
057: * Get the name of the factory.
058: * @return the name of the mail factory (the resource name as defined in jonas.properties)
059: */
060: public String getFactoryName() {
061: return mailFactory.getFactoryName();
062: }
063:
064: /**
065: * Get the name of the factory.
066: * @return name of the mail factory.
067: */
068: public String getName() {
069: return mailFactory.getName();
070: }
071:
072: /**
073: * Set the name of the factory.
074: * @param name name of the mail factory.
075: */
076: public void setName(String name) {
077: mailFactory.setName(name);
078: }
079:
080: /**
081: * Get the type of the factory.
082: * @return type of the mail factory.
083: */
084: public String getFactoryType() {
085: return mailFactory.getType();
086: }
087:
088: /**
089: * Get the authentication properties.
090: * @return properties of the authentication.
091: */
092: public Properties getAuthenticationProperties() {
093: return mailFactory.getAuthenticationProperties();
094: }
095:
096: /**
097: * Set the authentication properties.
098: * @param props the authentication properties.
099: */
100: public void setAuthenticationProperties(Properties props) {
101: mailFactory.setAuthenticationProperties(props);
102: notifyReconfiguration(props);
103: }
104:
105: /**
106: * Get the session properties.
107: * @return the properties of Session.
108: */
109: public Properties getSessionProperties() {
110: return mailFactory.getSessionProperties();
111: }
112:
113: /**
114: * Set the session properties.
115: * @param props the Session properties.
116: */
117: public void setSessionProperties(Properties props) {
118: mailFactory.setSessionProperties(props);
119: notifyReconfiguration(props);
120: }
121:
122: /**
123: * Save updated configuration
124: */
125: public void saveConfig() {
126: sendSaveNotification(getSequenceNumber(), getFactoryName());
127: }
128:
129: /**
130: * Gets the sequence number for MBeans operations
131: * @return the sequence number for MBeans operations
132: */
133: protected abstract long getSequenceNumber();
134:
135: protected void notifyReconfiguration(Properties props) {
136: // Here we do not reconfigure a sole property, but a group of properties in props
137: ReconfiguredProp reconfiguredProp = new ReconfiguredProp("",
138: null);
139: reconfiguredProp.setProps(props);
140: // Send a reconfiguration notification to the listner MBean
141: sendReconfigNotification(getSequenceNumber(), getFactoryName(),
142: reconfiguredProp);
143: }
144: }
|