mulemanagedconnectionfactory.java

来自「提供ESB 应用mule源代码 提供ESB 应用mule源代码」· Java 代码 · 共 315 行

JAVA
315
字号
/* * $Id: MuleManagedConnectionFactory.java 10670 2008-02-01 17:12:38Z romikk $ * -------------------------------------------------------------------------------------- * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com * * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */package org.mule.module.jca;import java.beans.PropertyChangeListener;import java.beans.PropertyChangeSupport;import java.io.IOException;import java.io.ObjectInputStream;import java.io.PrintWriter;import java.util.Iterator;import java.util.Set;import javax.resource.ResourceException;import javax.resource.spi.ConnectionManager;import javax.resource.spi.ConnectionRequestInfo;import javax.resource.spi.ManagedConnection;import javax.resource.spi.ManagedConnectionFactory;import javax.resource.spi.security.PasswordCredential;import javax.security.auth.Subject;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;/** * <code>MuleManagedConnectionFactory</code> TODO */public class MuleManagedConnectionFactory implements ManagedConnectionFactory{    /**     * Serial version     */    private static final long serialVersionUID = -1460847590293644271L;    private transient PrintWriter out;    private transient PropertyChangeSupport changes = new PropertyChangeSupport(this);    // userName property value    private String username = null;    // password property value    private String password = null;    /**     * logger used by this class     */    protected transient Log logger = LogFactory.getLog(this.getClass());    public MuleManagedConnectionFactory()    {        super();    }    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException    {        in.defaultReadObject();        this.logger = LogFactory.getLog(this.getClass());        this.changes = new PropertyChangeSupport(this);        this.out = null;    }    public int hashCode()    {        final int PRIME = 31;        int result = 1;        result = PRIME * result + ((password == null) ? 0 : password.hashCode());        return PRIME * result + ((username == null) ? 0 : username.hashCode());    }    public boolean equals(Object obj)    {        if (this == obj)        {            return true;        }        if (obj == null)        {            return false;        }        if (this.getClass() != obj.getClass())        {            return false;        }        final MuleManagedConnectionFactory other = (MuleManagedConnectionFactory)obj;        if (password == null)        {            if (other.password != null)            {                return false;            }        }        else if (!password.equals(other.password))        {            return false;        }        if (username == null)        {            if (other.username != null)            {                return false;            }        }        else if (!username.equals(other.username))        {            return false;        }        return true;    }    /**     * Creates a Connection Factory instance. The ConnectionFactory instance is     * initialized with the passed ConnectionManager. In the managed scenario,     * ConnectionManager is provided by the application server.     *      * @param cxManager ConnectionManager to be associated with created EIS     *            connection factory instance     * @return EIS-specific Connection Factory instance     * @throws javax.resource.ResourceException if the attempt to create a connection     *             factory fails     */    public Object createConnectionFactory(ConnectionManager cxManager) throws ResourceException    {        try        {            return new DefaultMuleConnectionFactory(this, cxManager, null);        }        catch (Exception e)        {            throw new ResourceException(e);        }    }    /**     * Creates a Connection Factory instance. The Connection Factory instance is     * initialized with a default ConnectionManager. In the non-managed scenario, the     * ConnectionManager is provided by the resource adapter.     *      * @return EIS-specific Connection Factory instance     * @throws ResourceException if the attempt to create a connection factory fails     */    public Object createConnectionFactory() throws ResourceException    {        return new DefaultMuleConnectionFactory(this, null, null);    }    /**     * ManagedConnectionFactory uses the security information (passed as Subject) and     * additional ConnectionRequestInfo (which is specific to ResourceAdapter and     * opaque to application server) to create this new connection.     *      * @param subject caller's security information     * @param cxRequestInfo additional resource adapter specific connection request     *            information     * @return ManagedConnection instance     * @throws ResourceException if the attempt to create a connection fails     */    public ManagedConnection createManagedConnection(Subject subject, ConnectionRequestInfo cxRequestInfo)        throws ResourceException    {        return new MuleManagedConnection(this, subject, cxRequestInfo);    }    /**     * Returns a matched managed connection from the candidate set of connections.     * ManagedConnectionFactory uses the security info (as in Subject) and     * information provided through ConnectionRequestInfo and additional Resource     * Adapter specific criteria to do matching. A MC that has the requested store is     * returned as a match     *      * @param connectionSet candidate connection set     * @param subject caller's security information     * @param cxRequestInfo additional resource adapter specific connection request     *            information     * @return ManagedConnection if resource adapter finds an acceptable match,     *         otherwise null     * @throws ResourceException if the match fails     */    public ManagedConnection matchManagedConnections(Set connectionSet,                                                     Subject subject,                                                     ConnectionRequestInfo cxRequestInfo)        throws ResourceException    {        PasswordCredential pc = RaHelper.getPasswordCredential(this, subject, cxRequestInfo);        Iterator it = connectionSet.iterator();        while (it.hasNext())        {            Object obj = it.next();            if (obj instanceof MuleManagedConnection)            {                MuleManagedConnection mc = (MuleManagedConnection)obj;                PasswordCredential mcpc = mc.getPasswordCredential();                if (mcpc != null && pc != null && mcpc.equals(pc))                {                    return mc;                }            }        }        return null;    }    /**     * Sets the log writer for this ManagedConnectionFactory instance. The log writer     * is a character output stream to which all logging and tracing messages for     * this ManagedConnectionfactory instance will be printed.     *      * @param out an output stream for error logging and tracing     * @throws ResourceException if the method fails     */    public void setLogWriter(PrintWriter out) throws ResourceException    {        this.out = out;    }    /**     * Gets the log writer for this ManagedConnectionFactory instance.     *      * @return PrintWriter an output stream for error logging and tracing     * @throws ResourceException if the method fails     */    public PrintWriter getLogWriter() throws ResourceException    {        return this.out;    }    /**     * Associate PropertyChangeListener with the ManagedConnectionFactory, in order     * to notify about properties changes.     *      * @param lis the PropertyChangeListener to be associated with the     *            ManagedConnectionFactory     */    public void addPropertyChangeListener(PropertyChangeListener lis)    {        changes.addPropertyChangeListener(lis);    }    /**     * Delete association of PropertyChangeListener with the     * ManagedConnectionFactory.     *      * @param lis the PropertyChangeListener to be removed     */    public void removePropertyChangeListener(PropertyChangeListener lis)    {        changes.removePropertyChangeListener(lis);    }    /**     * Returns the value of the userName property.     *      * @return the value of the userName property     */    public String getUsername()    {        return this.username;    }    /**     * Sets the value of the userName property.     *      * @param username String containing the value to be assigned to userName     */    public void setUsername(String username)    {        this.username = username;    }    /**     * Returns the value of the password property.     *      * @return the value of the password property     */    public String getPassword()    {        return this.password;    }    /**     * Sets the value of the password property.     *      * @param password String containing the value to be assigned to password     */    public void setPassword(String password)    {        this.password = password;    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?