/* * JBoss, Home of Professional Open Source. * Copyright 2011, Red Hat, Inc., 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.as.connector.subsystems.resourceadapters; import java.util.Collections; import java.util.Iterator; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import org.jboss.jca.common.api.metadata.common.Pool; import org.jboss.jca.common.api.metadata.common.Recovery; import org.jboss.jca.common.api.metadata.common.Security; import org.jboss.jca.common.api.metadata.common.TimeOut; import org.jboss.jca.common.api.metadata.common.Validation; import org.jboss.jca.common.api.metadata.common.XaPool; import org.jboss.jca.common.api.metadata.resourceadapter.ConnectionDefinition; import org.jboss.jca.common.api.validator.ValidateException; public class ModifiableConnDef implements ConnectionDefinition { /** * The serialVersionUID */ private static final long serialVersionUID = -7109775624169563102L; private final ConcurrentHashMap<String, String> configProperties; private final String className; private final String jndiName; private final String poolName; private final Boolean enabled; private final Boolean useJavaContext; private final Boolean useCcm; private final Pool pool; private final TimeOut timeOut; private final Validation validation; private final Security security; private final Recovery recovery; private final Boolean sharable; private final Boolean enlistment; private final Boolean connectable; private final Boolean tracking; private final Boolean enlistmentTrace; private final String mcp; /** * Create a new ConnectionDefinition. * * @param configProperties configProperties * @param className className * @param jndiName jndiName * @param poolName poolName * @param enabled enabled * @param useJavaContext useJavaContext * @param useCcm useCcm * @param pool pool * @param timeOut timeOut * @param validation validation * @param security security * @param recovery recovery */ public ModifiableConnDef(Map<String, String> configProperties, String className, String jndiName, String poolName, Boolean enabled, Boolean useJavaContext, Boolean useCcm, Pool pool, TimeOut timeOut, Validation validation, Security security, Recovery recovery, Boolean sharable, Boolean enlistment, final Boolean connectable, final Boolean tracking, final String mcp, Boolean enlistmentTrace) throws ValidateException { super(); if (configProperties != null) { this.configProperties = new ConcurrentHashMap<String, String>(configProperties.size()); this.configProperties.putAll(configProperties); } else { this.configProperties = new ConcurrentHashMap<String, String>(0); } this.className = className; this.jndiName = jndiName; this.poolName = poolName; this.enabled = enabled; this.useJavaContext = useJavaContext; this.useCcm = useCcm; this.pool = pool; this.timeOut = timeOut; this.validation = validation; this.security = security; this.recovery = recovery; this.sharable = sharable; this.enlistment = enlistment; this.connectable = connectable; this.tracking = tracking; this.mcp = mcp; this.enlistmentTrace = enlistmentTrace; } /** * Get the configProperties. * * @return the configProperties. */ @Override public final Map<String, String> getConfigProperties() { return Collections.unmodifiableMap(configProperties); } public String addConfigProperty(String key, String value) { return configProperties.put(key, value); } /** * Get the className. * * @return the className. */ @Override public final String getClassName() { return className; } /** * Get the jndiName. * * @return the jndiName. */ @Override public final String getJndiName() { return jndiName; } /** * Get the poolName. * * @return the poolName. */ @Override public final String getPoolName() { return poolName; } /** * Get the enabled. * * @return the enabled. */ @Override public final Boolean isEnabled() { return enabled; } /** * Get the useJavaContext. * * @return the useJavaContext. */ @Override public final Boolean isUseJavaContext() { return useJavaContext; } /** * Get the useCcm. * * @return the useCcm. */ @Override public final Boolean isUseCcm() { return useCcm; } /** * Get the pool. * * @return the pool. */ @Override public final Pool getPool() { return pool; } /** * Get the timeOut. * * @return the timeOut. */ @Override public final TimeOut getTimeOut() { return timeOut; } /** * Get the validation. * * @return the validation. */ @Override public final Validation getValidation() { return validation; } /** * Get the security. * * @return the security. */ @Override public final Security getSecurity() { return security; } @Override public final Boolean isXa() { return (pool instanceof XaPool); } /** * Get the recovery. * * @return the recovery. */ @Override public final Recovery getRecovery() { return recovery; } @Override public Boolean isSharable() { return sharable; } @Override public Boolean isEnlistment() { return enlistment; } @Override public Boolean isConnectable() { return connectable; } @Override public Boolean isTracking() { return tracking; } @Override public String getMcp() { return mcp; } @Override public Boolean isEnlistmentTrace() { return enlistmentTrace; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((className == null) ? 0 : className.hashCode()); result = prime * result + ((configProperties == null) ? 0 : configProperties.hashCode()); result = prime * result + ((enabled == null) ? 0 : enabled.hashCode()); result = prime * result + ((jndiName == null) ? 0 : jndiName.hashCode()); result = prime * result + ((pool == null) ? 0 : pool.hashCode()); result = prime * result + ((poolName == null) ? 0 : poolName.hashCode()); result = prime * result + ((recovery == null) ? 0 : recovery.hashCode()); result = prime * result + ((security == null) ? 0 : security.hashCode()); result = prime * result + ((timeOut == null) ? 0 : timeOut.hashCode()); result = prime * result + ((useJavaContext == null) ? 0 : useJavaContext.hashCode()); result = prime * result + ((useCcm == null) ? 0 : useCcm.hashCode()); result = prime * result + ((validation == null) ? 0 : validation.hashCode()); result = prime * result + ((isXa() == null) ? 0 : isXa().hashCode()); result = prime * result + ((sharable == null) ? 0 : sharable.hashCode()); result = prime * result + ((enlistment == null) ? 0 : enlistment.hashCode()); result = prime * result + ((connectable == null) ? 0 : connectable.hashCode()); result = prime * result + ((tracking == null) ? 0 : tracking.hashCode()); result = prime * result + ((mcp == null) ? 0 : mcp.hashCode()); result = prime * result + ((enlistmentTrace == null) ? 0 : enlistmentTrace.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof ModifiableConnDef)) return false; ModifiableConnDef other = (ModifiableConnDef) obj; if (className == null) { if (other.className != null) return false; } else if (!className.equals(other.className)) return false; if (configProperties == null) { if (other.configProperties != null) return false; } else if (!configProperties.equals(other.configProperties)) return false; if (enabled == null) { if (other.enabled != null) return false; } else if (!enabled.equals(other.enabled)) return false; if (jndiName == null) { if (other.jndiName != null) return false; } else if (!jndiName.equals(other.jndiName)) return false; if (pool == null) { if (other.pool != null) return false; } else if (!pool.equals(other.pool)) return false; if (poolName == null) { if (other.poolName != null) return false; } else if (!poolName.equals(other.poolName)) return false; if (recovery == null) { if (other.recovery != null) return false; } else if (!recovery.equals(other.recovery)) return false; if (security == null) { if (other.security != null) return false; } else if (!security.equals(other.security)) return false; if (timeOut == null) { if (other.timeOut != null) return false; } else if (!timeOut.equals(other.timeOut)) return false; if (useJavaContext == null) { if (other.useJavaContext != null) return false; } else if (!useJavaContext.equals(other.useJavaContext)) return false; if (useCcm == null) { if (other.useCcm != null) return false; } else if (!useCcm.equals(other.useCcm)) return false; if (validation == null) { if (other.validation != null) return false; } else if (!validation.equals(other.validation)) return false; if (isXa() == null) { if (other.isXa() != null) return false; } else if (!isXa().equals(other.isXa())) return false; if (sharable == null) { if (other.sharable != null) return false; } else if (!sharable.equals(other.sharable)) return false; if (enlistment == null) { if (other.enlistment != null) return false; } else if (!enlistment.equals(other.enlistment)) return false; if (connectable == null) { if (other.connectable != null) return false; } else if (!connectable.equals(other.connectable)) return false; if (tracking == null) { if (other.tracking != null) return false; } else if (!tracking.equals(other.tracking)) return false; if (mcp == null) { if (other.mcp != null) return false; } else if (!mcp.equals(other.mcp)) return false; if (enlistmentTrace == null) { if (other.enlistmentTrace != null) return false; } else if (!enlistmentTrace.equals(other.enlistmentTrace)) return false; return true; } @Override public String toString() { StringBuilder sb = new StringBuilder(1024); sb.append("<connection-definition"); if (className != null) sb.append(" ").append(ConnectionDefinition.Attribute.CLASS_NAME).append("=\"").append(className).append("\""); if (jndiName != null) sb.append(" ").append(ConnectionDefinition.Attribute.JNDI_NAME).append("=\"").append(jndiName).append("\""); if (enabled != null) sb.append(" ").append(ConnectionDefinition.Attribute.ENABLED).append("=\"").append(enabled).append("\""); if (useJavaContext != null) { sb.append(" ").append(ConnectionDefinition.Attribute.USE_JAVA_CONTEXT); sb.append("=\"").append(useJavaContext).append("\""); } if (poolName != null) sb.append(" ").append(ConnectionDefinition.Attribute.POOL_NAME).append("=\"").append(poolName).append("\""); if (useCcm != null) sb.append(" ").append(ConnectionDefinition.Attribute.USE_CCM).append("=\"").append(useCcm).append("\""); if (sharable != null) sb.append(" ").append(ConnectionDefinition.Attribute.SHARABLE).append("=\"").append(sharable).append("\""); if (enlistment != null) sb.append(" ").append(ConnectionDefinition.Attribute.ENLISTMENT).append("=\"").append(enlistment).append("\""); if (connectable != null) sb.append(" ").append(ConnectionDefinition.Attribute.CONNECTABLE).append("=\""). append(connectable).append("\""); if (tracking != null) sb.append(" ").append(ConnectionDefinition.Attribute.TRACKING).append("=\"").append(tracking).append("\""); if (mcp != null) sb.append(" ").append(ConnectionDefinition.Attribute.MCP).append("=\"").append(mcp).append("\""); if (enlistmentTrace != null) sb.append(" ").append(ConnectionDefinition.Attribute.ENLISTMENT_TRACE).append("=\"") .append(enlistmentTrace).append("\""); sb.append(">"); if (configProperties != null && configProperties.size() > 0) { Iterator<Map.Entry<String, String>> it = configProperties.entrySet().iterator(); while (it.hasNext()) { Map.Entry<String, String> entry = it.next(); sb.append("<").append(ConnectionDefinition.Tag.CONFIG_PROPERTY); sb.append(" name=\"").append(entry.getKey()).append("\">"); sb.append(entry.getValue()); sb.append("</").append(ConnectionDefinition.Tag.CONFIG_PROPERTY).append(">"); } } if (pool != null) sb.append(pool); if (security != null) sb.append(security); if (timeOut != null) sb.append(timeOut); if (validation != null) sb.append(validation); if (recovery != null) sb.append(recovery); sb.append("</connection-definition>"); return sb.toString(); } }