/*
* JBoss, Home of Professional Open Source.
* Copyright 2006, Red Hat Middleware LLC, and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.resource.metadata;
import java.net.URL;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Locale;
import java.util.concurrent.ConcurrentHashMap;
/**
* Connector meta data
*
* @author <a href="mailto:adrian@jboss.com">Adrian Brock</a>
* @version $Revision: 84262 $
*/
public class ConnectorMetaData extends ConfigPropertyMetaDataContainer
{
private static final long serialVersionUID = -3049391010669865389L;
/** The url TODO move to RARDeploymentMetaData */
private URL url;
/** The version */
private String version = "1.0";
/** The vendor name */
private String vendorName;
/** The eis type */
private String eisType;
/** The resource adapter version */
private String raVersion;
/** The resource adapter class */
private String raClass;
/** Reauthentication support */
private boolean reauthenticationSupport;
/** The license */
private LicenseMetaData lmd = new LicenseMetaData();
/** The descriptions */
private ConcurrentHashMap descriptions = new ConcurrentHashMap();
/** The connection definitions */
private HashSet connectionDefinitions = new HashSet();
/** The transaction support meta data */
private TransactionSupportMetaData tsmd = new TransactionSupportMetaData();
/** The authentication mechanism meta data */
private AuthenticationMechanismMetaData ammd = new AuthenticationMechanismMetaData();
/** The message listeners */
private HashSet listeners = new HashSet();
/** The admin objects */
private HashSet adminObjects = new HashSet();
/** The security permissions */
private HashSet securityPermissions = new HashSet();
public ConnectorMetaData()
{
DescriptionGroupMetaData dmd = new DescriptionGroupMetaData();
descriptions.put(dmd.getLanguage(), dmd);
}
/**
* Get the url.
*
* @return the url.
*/
public URL getURL()
{
return url;
}
/**
* Set the url.
*
* @param url the url.
*/
public void setURL(URL url)
{
this.url = url;
}
/**
* Get the connector version
*
* @return the connector version
*/
public String getVersion()
{
return version;
}
/**
* Set the connector version
*
* @param version the connector version
*/
public void setVersion(String version)
{
this.version = version;
}
/**
* Get the vendor name
*
* @return the vendor name
*/
public String getVendorName()
{
return vendorName;
}
/**
* Set the vendor name
*
* @param vendorName the vendor name
*/
public void setVendorName(String vendorName)
{
this.vendorName = vendorName;
}
/**
* Get the eis type
*
* @return the eis type
*/
public String getEISType()
{
return eisType;
}
/**
* Set the eis Type
*
* @param eisType the eis type
*/
public void setEISType(String eisType)
{
this.eisType = eisType;
}
/**
* Get the resource adapter version
*
* @return the resource adapter version
*/
public String getRAVersion()
{
return raVersion;
}
/**
* Set the resource adapter version
*
* @param version the resource adapter version
*/
public void setRAVersion(String version)
{
this.raVersion = version;
}
/**
* Get the resource adapter class
*
* @return the resource adapter class
*/
public String getRAClass()
{
return raClass;
}
/**
* Set the resource adapter class
*
* @param raClass the resource adapter class
*/
public void setRAClass(String raClass)
{
this.raClass = raClass;
}
/**
* Get the reauthentication support
*
* @return the reauthentication support
*/
public boolean getReauthenticationSupport()
{
return reauthenticationSupport;
}
/**
* Set the reauthentication support
*
* @param reauthenticationSupport true for support, false otherwise
*/
public void setReauthenticationSupport(boolean reauthenticationSupport)
{
this.reauthenticationSupport = reauthenticationSupport;
}
/**
* Get the license
*
* @return the license
*/
public LicenseMetaData getLicense()
{
return lmd;
}
/**
* Get the description for the default language
*
* @return the description for the default langugage
*/
public DescriptionGroupMetaData getDescription()
{
DescriptionGroupMetaData dgmd = (DescriptionGroupMetaData) descriptions.get(Locale.getDefault().getLanguage());
// No description using the default locale, just use the first
if (dgmd == null)
{
for (Iterator i = descriptions.values().iterator(); i.hasNext();)
{
dgmd = (DescriptionGroupMetaData) i.next();
break;
}
}
return dgmd;
}
/**
* Get the description for the give language
*
* @param lang the language
* @return the description
*/
public DescriptionGroupMetaData getDescription(String lang)
{
return (DescriptionGroupMetaData) descriptions.get(lang);
}
/**
* Add a description
*
* @param dmd the description
*/
public void addDescription(DescriptionGroupMetaData dmd)
{
descriptions.put(dmd.getLanguage(), dmd);
}
/**
* Get the transaction support
*
* @return the transaction support
*/
public TransactionSupportMetaData getTransactionSupport()
{
return tsmd;
}
/**
* Set the transaction support
*
* @param tsmd the transaction support
*/
public void setTransactionSupport(TransactionSupportMetaData tsmd)
{
this.tsmd = tsmd;
}
/**
* Get the authentication mechanism
*
* @return the authentication mechanism
*/
public AuthenticationMechanismMetaData getAuthenticationMechanism()
{
return ammd;
}
/**
* Set the authentication mechansim
*
* @param ammd the authentication mechansim
*/
public void setAuthenticationMechansim(AuthenticationMechanismMetaData ammd)
{
this.ammd = ammd;
}
/**
* Add a connection definition
*
* @param cdmd the connection definition
*/
public void addConnectionDefinition(ConnectionDefinitionMetaData cdmd)
{
connectionDefinitions.add(cdmd);
}
/**
* Get the connection definition
*
* @param connectionDefinition the idenitifying factory
* @return the metadata or null if there isn't one
*/
public ConnectionDefinitionMetaData getConnectionDefinition(String connectionDefinition)
{
for (Iterator i = connectionDefinitions.iterator(); i.hasNext();)
{
ConnectionDefinitionMetaData cdmd = (ConnectionDefinitionMetaData) i.next();
if (cdmd.getConnectionFactoryInterfaceClass().equals(connectionDefinition))
return cdmd;
}
return null;
}
/**
* Add a message listener
*
* @param mlmd the message listener
*/
public void addMessageListener(MessageListenerMetaData mlmd)
{
listeners.add(mlmd);
}
/**
* Get the message listener
*
* @param messagingType the identifying listener interface
* @return the metadata or null if there isn't one
*/
public MessageListenerMetaData getMessageListener(String messagingType)
{
for (Iterator i = listeners.iterator(); i.hasNext();)
{
MessageListenerMetaData mlmd = (MessageListenerMetaData) i.next();
if (mlmd.getType().equals(messagingType))
return mlmd;
}
return null;
}
/**
* Add an administered object
*
* @param aomd the administered object
*/
public void addAdminObject(AdminObjectMetaData aomd)
{
adminObjects.add(aomd);
}
/**
* Get the admin object
*
* @param interfaceName the identifying admin object interface
* @return the metadata or null if there isn't one
*/
public AdminObjectMetaData getAdminObject(String interfaceName)
{
for (Iterator i = adminObjects.iterator(); i.hasNext();)
{
AdminObjectMetaData aomd = (AdminObjectMetaData) i.next();
if (aomd.getAdminObjectInterfaceClass().equals(interfaceName))
return aomd;
}
return null;
}
public Collection getAdminObjects()
{
return adminObjects;
}
/**
* Add a security permission
*
* @param spmd the security permission
*/
public void addSecurityPermission(SecurityPermissionMetaData spmd)
{
securityPermissions.add(spmd);
}
public String toString()
{
StringBuffer buffer = new StringBuffer();
buffer.append("ConnectorMetaData").append('@');
buffer.append(Integer.toHexString(System.identityHashCode(this)));
buffer.append("[version=").append(version);
buffer.append(" vendorName=").append(vendorName);
buffer.append(" eisType=").append(eisType);
buffer.append(" resourceAdapterVersion=").append(raVersion);
buffer.append(" resourceAdapterClass=").append(raClass);
buffer.append(" license=").append(lmd);
buffer.append(" properties=").append(getProperties());
buffer.append(" descriptions=").append(descriptions.values());
buffer.append(" connectionDefinitions=").append(connectionDefinitions);
buffer.append(" transactionSupport=").append(tsmd);
buffer.append(" authenticationMechanism=").append(ammd);
buffer.append(" reauthenticationSupport=").append(reauthenticationSupport);
buffer.append(" messageListeners=").append(listeners);
buffer.append(" adminobjects=").append(adminObjects);
buffer.append(" securityPermissions=").append(securityPermissions);
buffer.append(']');
return buffer.toString();
}
}