org.jboss.as.ee.metadata.EJBClientDescriptorMetaData Maven / Gradle / Ivy
/*
* JBoss, Home of Professional Open Source.
* Copyright 2014, 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.ee.metadata;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
/**
* Metadata for configurations contained in jboss-ejb-client.xml descriptor
*
* @author Jaikiran Pai
* @author Tomasz Adamski
*/
public class EJBClientDescriptorMetaData {
private Boolean excludeLocalReceiver;
private Boolean localReceiverPassByValue;
private long invocationTimeout;
private String deploymentNodeSelector;
private String profile;
private Map remotingReceiverConfigurations = new HashMap();
private Set clusterConfigs = new HashSet();
/**
* Adds an outbound connection reference used by a remoting receiver in the client context represented
* by this {@link EJBClientDescriptorMetaData}
*
* @param outboundConnectionRef The name of the outbound connection. Cannot be null or empty string.
*/
public RemotingReceiverConfiguration addRemotingReceiverConnectionRef(final String outboundConnectionRef) {
if (outboundConnectionRef == null || outboundConnectionRef.trim().isEmpty()) {
throw new IllegalArgumentException("Cannot add a remoting receiver which references a null/empty outbound connection");
}
final RemotingReceiverConfiguration remotingReceiverConfiguration = new RemotingReceiverConfiguration(outboundConnectionRef);
this.remotingReceiverConfigurations.put(outboundConnectionRef, remotingReceiverConfiguration);
return remotingReceiverConfiguration;
}
/**
* Returns a collection of outbound connection references that are used by the remoting receivers
* configured in the client context of this {@link EJBClientDescriptorMetaData}
*
* @return
*/
public Collection getRemotingReceiverConfigurations() {
return this.remotingReceiverConfigurations.values();
}
/**
* Set the pass-by-value semantics for the local receiver belonging to the EJB client context
* represented by this metadata
*
* @param passByValue True if pass-by-value. False otherwise.
*/
public void setLocalReceiverPassByValue(final Boolean passByValue) {
this.localReceiverPassByValue = passByValue;
}
/**
* If pass-by-value semantics for the local EJB receiver has been explicitly set, then returns that value.
* Else returns null.
*
* @return
*/
public Boolean isLocalReceiverPassByValue() {
return this.localReceiverPassByValue;
}
/**
* Exclude/include the local receiver in the EJB client context represented by this metadata.
*
* @param excludeLocalReceiver True if local receiver has to be excluded in the EJB client context. False otherwise.
*/
public void setExcludeLocalReceiver(final Boolean excludeLocalReceiver) {
this.excludeLocalReceiver = excludeLocalReceiver;
}
/**
* Returns true if the local receiver is disabled in the EJB client context represented by this metadata.
* Else returns false.
*
* @return
*/
public Boolean isLocalReceiverExcluded() {
return this.excludeLocalReceiver;
}
public Collection getClusterConfigs() {
return Collections.unmodifiableSet(this.clusterConfigs);
}
public ClusterConfig newClusterConfig(final String clusterName) {
final ClusterConfig clusterConfig = new ClusterConfig(clusterName);
this.clusterConfigs.add(clusterConfig);
return clusterConfig;
}
public long getInvocationTimeout() {
return this.invocationTimeout;
}
public void setInvocationTimeout(final long invocationTimeout) {
this.invocationTimeout = invocationTimeout;
}
public String getDeploymentNodeSelector() {
return this.deploymentNodeSelector;
}
public void setDeploymentNodeSelector(final String selector) {
this.deploymentNodeSelector = selector;
}
public String getProfile() {
return this.profile;
}
public void setProfile(String profile) {
this.profile = profile;
}
public class ClusterConfig extends CommonConnectionConfig {
private final String clusterName;
private final Set nodes = new HashSet();
private long maxAllowedConnectedNodes;
private String nodeSelector;
ClusterConfig(final String clusterName) {
this.clusterName = clusterName;
}
public ClusterNodeConfig newClusterNode(final String nodeName) {
final ClusterNodeConfig node = new ClusterNodeConfig(nodeName);
this.nodes.add(node);
return node;
}
public Collection getClusterNodeConfigs() {
return Collections.unmodifiableSet(this.nodes);
}
public String getClusterName() {
return this.clusterName;
}
public long getMaxAllowedConnectedNodes() {
return this.maxAllowedConnectedNodes;
}
public void setMaxAllowedConnectedNodes(final long maxAllowedConnectedNodes) {
this.maxAllowedConnectedNodes = maxAllowedConnectedNodes;
}
public void setNodeSelector(final String nodeSelector) {
this.nodeSelector = nodeSelector;
}
public String getNodeSelector() {
return this.nodeSelector;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ClusterConfig that = (ClusterConfig) o;
if (!clusterName.equals(that.clusterName)) return false;
return true;
}
@Override
public int hashCode() {
return clusterName.hashCode();
}
}
public class ClusterNodeConfig extends CommonConnectionConfig {
private final String nodeName;
ClusterNodeConfig(final String nodeName) {
this.nodeName = nodeName;
}
public String getNodeName() {
return this.nodeName;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ClusterNodeConfig that = (ClusterNodeConfig) o;
if (!nodeName.equals(that.nodeName)) return false;
return true;
}
@Override
public int hashCode() {
return nodeName.hashCode();
}
}
private class CommonConnectionConfig {
private Properties connectionOptions;
private Properties channelCreationOptions;
private long connectTimeout;
private String userName;
private String securityRealm;
public void setConnectionOptions(final Properties connectionOptions) {
this.connectionOptions = connectionOptions;
}
public void setChannelCreationOptions(final Properties channelCreationOptions) {
this.channelCreationOptions = channelCreationOptions;
}
public long getConnectTimeout() {
return this.connectTimeout;
}
public void setConnectTimeout(final long timeout) {
this.connectTimeout = timeout;
}
public Properties getConnectionOptions() {
return this.connectionOptions;
}
public Properties getChannelCreationOptions() {
return this.channelCreationOptions;
}
public void setUserName(final String userName) {
this.userName = userName;
}
public String getUserName() {
return this.userName;
}
public void setSecurityRealm(final String realm) {
this.securityRealm = realm;
}
public String getSecurityRealm() {
return this.securityRealm;
}
}
public class RemotingReceiverConfiguration {
private final String outboundConnectionRef;
private Properties channelCreationOptions;
private long connectionTimeout;
RemotingReceiverConfiguration(final String outboundConnectionRef) {
this.outboundConnectionRef = outboundConnectionRef;
}
/**
* Sets the channel creation options for this remoting receiver configuration
*
* @param channelCreationOpts The channel creation options
*/
public void setChannelCreationOptions(final Properties channelCreationOpts) {
this.channelCreationOptions = channelCreationOpts;
}
public Properties getChannelCreationOptions() {
return this.channelCreationOptions;
}
public void setConnectionTimeout(final long timeout) {
this.connectionTimeout = timeout;
}
public long getConnectionTimeout() {
return this.connectionTimeout;
}
public String getOutboundConnectionRef() {
return this.outboundConnectionRef;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
RemotingReceiverConfiguration that = (RemotingReceiverConfiguration) o;
if (outboundConnectionRef != null ? !outboundConnectionRef.equals(that.outboundConnectionRef) : that.outboundConnectionRef != null)
return false;
return true;
}
@Override
public int hashCode() {
return outboundConnectionRef != null ? outboundConnectionRef.hashCode() : 0;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy