com.sun.enterprise.deployment.MailConfiguration Maven / Gradle / Ivy
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common Development
* and Distribution License("CDDL") (collectively, the "License"). You
* may not use this file except in compliance with the License. You can
* obtain a copy of the License at
* https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
* or packager/legal/LICENSE.txt. See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at packager/legal/LICENSE.txt.
*
* GPL Classpath Exception:
* Oracle designates this particular file as subject to the "Classpath"
* exception as provided by Oracle in the GPL Version 2 section of the License
* file that accompanied this code.
*
* Modifications:
* If applicable, add the following below the License Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyright [year] [name of copyright owner]"
*
* Contributor(s):
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding "[Contributor]
* elects to include this software in this distribution under the [CDDL or GPL
* Version 2] license." If you don't indicate a single choice of license, a
* recipient has the option to distribute your version of this file under
* either the CDDL, the GPL Version 2 or to extend the choice of license to
* its licensees as provided above. However, if you add GPL Version 2 code
* and therefore, elected the GPL Version 2 license, then the option applies
* only if the new code is made subject to such option by the copyright
* holder.
*/
package com.sun.enterprise.deployment;
import com.sun.enterprise.deployment.interfaces.MailResourceIntf;
import com.sun.enterprise.deployment.util.DOLUtils;
import com.sun.enterprise.repository.ResourceProperty;
import java.io.Serializable;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Properties;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* This class represent the configuration information of the JavaMail
* Session object within J2EE.
*/
public class MailConfiguration implements Serializable {
/* IASRI 4629057
private String username = "";
private String mailFrom = "";
private String mailHost = "";
private static String MAIL_FROM = "mail.from";
private static String MAIL_USER = "mail.user";
private static String MAIL_HOST = "mail.host";
*/
// START OF IASRI 4629057
private static String PROTOCOL_TYPE_IMAP = "imap";
private static String PROTOCOL_TYPE_POP3 = "pop3";
private static String PROTOCOL_TYPE_SMTP = "smtp";
private static String PROP_NAME_PREFIX_LEGACY = "mail-";
private static char PROP_NAME_DELIM_LEGACY = '-';
private static String DEF_VAL_STORE_PROTOCOL = PROTOCOL_TYPE_IMAP;
private static String DEF_VAL_STORE_PROTOCOL_CLASS =
"com.sun.mail.imap.IMAPStore";
private static String DEF_VAL_TRANSPORT_PROTOCOL = PROTOCOL_TYPE_SMTP;
private static String DEF_VAL_TRANSPORT_PROTOCOL_CLASS =
"com.sun.mail.smtp.SMTPTransport";
private static String DEF_VAL_HOST = "localhost";
private static String DEF_VAL_USER = "user.name";
private static String DEF_VAL_FROM = "username@host";
private static boolean DEF_VAL_DEBUG = false;
private static String MAIL_STORE_PROTOCOL = "mail.store.protocol";
private static String MAIL_TRANSPORT_PROTOCOL = "mail.transport.protocol";
private static String MAIL_HOST = "mail.host";
private static String MAIL_USER = "mail.user";
private static String MAIL_FROM = "mail.from";
private static String MAIL_DEBUG = "mail.debug";
private static String MAIL_PREFIX = "mail.";
private static String MAIL_SUFFIX_CLASS = ".class";
private static String MAIL_SUFFIX_HOST = ".host";
private static String MAIL_SUFFIX_USER = ".user";
private static char MAIL_DELIM = '.';
/**
* Mail resource attributes
*/
private String description = "";
private String jndiName = "";
private boolean enabled = false;
private String storeProtocol = DEF_VAL_STORE_PROTOCOL;
private String storeProtocolClass = DEF_VAL_STORE_PROTOCOL_CLASS;
private String transportProtocol = DEF_VAL_TRANSPORT_PROTOCOL;
private String transportProtocolClass = DEF_VAL_TRANSPORT_PROTOCOL_CLASS;
private String mailHost = DEF_VAL_HOST;
private String username = DEF_VAL_USER;
private String mailFrom = DEF_VAL_FROM;
private boolean debug = DEF_VAL_DEBUG;
private Properties mailProperties = new Properties();
// END OF IASRI 4629057
// Create logger object per Java SDK 1.4 to log messages
// introduced Santanu De, Sun Microsystems, March 2002
static Logger _logger = DOLUtils.getDefaultLogger();
/**
* This constructs the mail configuration based on the username and
* the from address. This constructor is deprecated.
* @param the username
* @param the from address
* @deprecated
*/
public MailConfiguration(String username, String mailFrom) {
this.username = username;
this.mailFrom = mailFrom;
this.mailHost = "";
mailProperties.put(MAIL_FROM, this.getMailFrom());
mailProperties.put(MAIL_USER, this.getUsername());
mailProperties.put(MAIL_HOST, this.getMailHost());
}
/**
* Construct a specification of mail configuration with the given username,
* Mail From Address and mail hostname.
* @param the username.
* @param the from address.
* @param the mail hostname.
*/
public MailConfiguration(String username,
String mailFrom,
String mailHost) {
this.username = username;
this.mailFrom = mailFrom;
this.mailHost = mailHost;
mailProperties.put(MAIL_FROM, this.getMailFrom());
mailProperties.put(MAIL_USER, this.getUsername());
mailProperties.put(MAIL_HOST, this.getMailHost());
}
// START OF IASRI 4629057
// START OF IASRI 4650786
/**
* Construct a specification of mail configuration.
*/
public MailConfiguration(MailResourceIntf mailRes) {
try {
loadMailResources(mailRes);
}
catch (Exception ce) {
_logger.log(Level.INFO,"enterprise.deployment_mail_cfgexcp",ce);
}
}
/**
* Load all configuration information from the mail resource node in
* server.xml for the JavaMail Session object within J2EE.
*/
private void loadMailResources(MailResourceIntf mailResource) throws Exception {
if (mailResource == null) {
_logger.log(Level.FINE,
"MailConfiguration: no MailResource object. mailResource=" +
mailResource);
return;
}
jndiName = mailResource.getName();
description = mailResource.getDescription();
enabled = mailResource.isEnabled();
storeProtocol = mailResource.getStoreProtocol();
storeProtocolClass = mailResource.getStoreProtocolClass();
transportProtocol = mailResource.getTransportProtocol();
transportProtocolClass = mailResource.getTransportProtocolClass();
mailHost = mailResource.getMailHost();
username = mailResource.getUsername();
mailFrom = mailResource.getMailFrom();
debug = mailResource.isDebug();
// Save to Property list
String storeProtocolClassName = MAIL_PREFIX + storeProtocol +
MAIL_SUFFIX_CLASS;
String transportProtocolClassName = MAIL_PREFIX + transportProtocol +
MAIL_SUFFIX_CLASS;
mailProperties.put(MAIL_STORE_PROTOCOL, storeProtocol);
mailProperties.put(MAIL_TRANSPORT_PROTOCOL, transportProtocol);
mailProperties.put(storeProtocolClassName, storeProtocolClass);
mailProperties.put(transportProtocolClassName, transportProtocolClass);
mailProperties.put(MAIL_FROM, mailFrom);
mailProperties.put(MAIL_DEBUG, (debug ? "true" : "false"));
// Get the properties and save to Property list
Set properties = mailResource.getProperties();
ResourceProperty property = null;
String name = null;
String value = null;
String protRelatedHostName = MAIL_PREFIX + storeProtocol +
MAIL_SUFFIX_HOST;
String protRelatedUserName = MAIL_PREFIX + storeProtocol +
MAIL_SUFFIX_USER;
for (Iterator it = properties.iterator(); it.hasNext();) {
property = (ResourceProperty)it.next();
name = property.getName();
value = (String)property.getValue();
if(name.startsWith(PROP_NAME_PREFIX_LEGACY)) {
name = name.replace(PROP_NAME_DELIM_LEGACY, MAIL_DELIM);
}
if(name.startsWith(MAIL_PREFIX)) {
if(name.equals(protRelatedHostName)) {
mailHost = value;
} else if(name.equals(protRelatedUserName)) {
username = value;
}
mailProperties.put(name, value);
}
}
// Save mail.host and mail.user to Property list
mailProperties.put(MAIL_HOST, mailHost);
mailProperties.put(MAIL_USER, username);
}
// END OF IASRI 4650786
// END OF IASRI 4629057
/**
* Get the username for the mail session the server will provide.
* @return the username.
*/
public String getUsername() {
return this.username;
}
/**
* Get the mail from address for the mail session the server will provide.
* @return the from address.
*/
public String getMailFrom() {
return this.mailFrom;
}
/**
* Get the mail hostname for the mail session the server will provide.
* @return the hostname of the mail server.
*/
public String getMailHost() {
return this.mailHost;
}
// START OF IASRI 4629057
/**
* Get the default Message Access Protocol for the mail session the server
* will provide.
* @return the store protocol of the mail server.
*/
public String getMailStoreProtocol() {
return this.storeProtocol;
}
/**
* Get the default Transport Protocol for the mail session the server will
* provide.
* @return the transport protocol of the mail server.
*/
public String getMailTransportProtocol() {
return this.transportProtocol;
}
/**
* Get the default Message Access Protocol class for the mail session the
* server will provide.
* @return the store protocol of the mail server.
*/
public String getMailStoreProtocolClass() {
return this.storeProtocolClass;
}
/**
* Get the default Transport Protocol class for the mail session the server
* will provide.
* @return the transport protocol of the mail server.
*/
public String getMailTransportProtocolClass() {
return this.transportProtocolClass;
}
/**
* Get the mail debug flag for the mail session the server will provide.
* @return the debug flag of the mail server.
*/
public boolean getMailDebug() {
return this.debug;
}
/**
* Get the mail description for the mail session the server will provide.
* @return the description of the mail server.
*/
public String getDescription() {
return this.description;
}
/**
* Get the mail JNDI name for the mail session the server will provide.
* @return the JNDI name of the mail server.
*/
public String getJndiName() {
return this.jndiName;
}
/**
* Get the mail enable flag for the mail session the server will provide.
* @return the enable flag of the mail server.
*/
public boolean getEnabled() {
return this.enabled;
}
// END OF IASRI 4629057
/**
* Get the mail session properties as per JavaMail.
* @return the mail session properties.
*/
public Properties getMailProperties() {
/* IASRI 4629057
Properties mailProperties = new Properties();
mailProperties.put(MAIL_FROM, this.getMailFrom());
mailProperties.put(MAIL_USER, this.getUsername());
mailProperties.put(MAIL_HOST, this.getMailHost());
*/
return mailProperties;
}
/**
* A formatted representation of my state.
*/
public void print(StringBuffer toStringBuffer) {
/* IASRI 4629057
return "MailConfiguration: [" + username + "," + mailFrom + "," +
mailHost + "]";
*/
// START OF IASRI 4629057
toStringBuffer.append("MailConfiguration: [");
toStringBuffer.append("description=").append(description);
toStringBuffer.append( ", jndiName=").append(jndiName);
toStringBuffer.append( ", enabled=").append(enabled);
toStringBuffer.append( ", storeProtocol=").append(storeProtocol);
toStringBuffer.append( ", transportProtocol=").append(transportProtocol);
toStringBuffer.append( ", storeProtocolClass=").append(storeProtocolClass);
toStringBuffer.append( ", transportProtocolClass=").append(transportProtocolClass);
toStringBuffer.append( ", mailHost=").append(mailHost);
toStringBuffer.append( ", username=").append(username);
toStringBuffer.append( ", mailFrom=").append(mailFrom);
toStringBuffer.append( ", debug=").append(debug);
toStringBuffer.append( ", mailProperties: [");
Enumeration e = mailProperties.propertyNames();
String name;
String value;
boolean isFirst = true;
while (e.hasMoreElements()) {
name = (String)e.nextElement();
value = mailProperties.getProperty(name);
if (isFirst) {
toStringBuffer.append(name).append("=").append(value);
isFirst = false;
}
else {
toStringBuffer.append( ", ").append(name).append("=").append(value);
}
}
toStringBuffer.append( "]]");
// END OF IASRI 4629057
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy