alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Glassfish example source code file (MailConfiguration.java)

This example Glassfish source code file (MailConfiguration.java) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Glassfish tags/keywords

def_val_debug, def_val_from, def_val_host, io, log, logging, mail_delim, mail_prefix, mail_prefix, mail_suffix_class, mail_suffix_class, mail_suffix_host, mailconfiguration, mailconfiguration, properties, string, string, util

The Glassfish MailConfiguration.java source code

/*
 * 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
    }
}

Other Glassfish examples (source code examples)

Here is a short list of links related to this Glassfish MailConfiguration.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.