| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| package org.apache.tuscany.sca.binding.jms; |
| |
| import java.util.ArrayList; |
| import java.util.HashMap; |
| import java.util.Iterator; |
| import java.util.List; |
| import java.util.Map; |
| import java.util.Set; |
| import java.util.TreeSet; |
| |
| import javax.xml.namespace.QName; |
| |
| import org.apache.tuscany.sca.assembly.Binding; |
| import org.apache.tuscany.sca.assembly.ConfiguredOperation; |
| import org.apache.tuscany.sca.assembly.OperationSelector; |
| import org.apache.tuscany.sca.assembly.OperationsConfigurator; |
| import org.apache.tuscany.sca.assembly.WireFormat; |
| import org.apache.tuscany.sca.policy.ExtensionType; |
| import org.apache.tuscany.sca.policy.Intent; |
| import org.apache.tuscany.sca.policy.PolicySet; |
| import org.apache.tuscany.sca.policy.PolicySubject; |
| |
| /** |
| * Models a binding to a JMS resource. |
| * |
| * @version $Rev$ $Date$ |
| */ |
| |
| //public class JMSBinding implements BindingRRB, PolicySubject, OperationsConfigurator, DefinitionElement { |
| public class JMSBinding implements Binding, PolicySubject, OperationsConfigurator { |
| QName TYPE = new QName(SCA11_NS, "binding.jms"); |
| |
| @Override |
| public Object clone() throws CloneNotSupportedException { |
| return super.clone(); |
| } |
| |
| // properties required to implement the Tuscany binding extension SPI |
| private String uri = null; |
| private String name = null; |
| private boolean unresolved = false; |
| private List<Object> extensions = new ArrayList<Object>(); |
| |
| // properties required by PolicySetAttachPoint |
| private List<PolicySet> policySets = new ArrayList<PolicySet>(); |
| private List<PolicySet> applicablePolicySets = new ArrayList<PolicySet>(); |
| |
| // properties required by IntentAttachPoint |
| private List<Intent> requiredIntents = new ArrayList<Intent>(); |
| |
| // properties required to describe configured operations |
| private List<ConfiguredOperation> configuredOperations = new ArrayList<ConfiguredOperation>(); |
| |
| // properties required by DefinitionElement @575803A |
| private String targetNamespace; |
| |
| // Properties required to describe the JMS binding model |
| |
| private String correlationScheme = JMSBindingConstants.CORRELATE_MSG_ID; |
| private String initialContextFactoryName; |
| private String jndiURL; |
| |
| private String destinationName = null; |
| private String destinationType = JMSBindingConstants.DESTINATION_TYPE_QUEUE; |
| private String destinationCreate = JMSBindingConstants.CREATE_IF_NOT_EXIST; |
| private Map<String, BindingProperty> destinationProperties = new HashMap<String, BindingProperty>(); |
| |
| private String connectionFactoryName = null; |
| private String connectionFactoryCreate = JMSBindingConstants.CREATE_IF_NOT_EXIST; |
| private Map<String, BindingProperty> connectionFactoryProperties = new HashMap<String, BindingProperty>(); |
| |
| private String activationSpecName = null; |
| private String activationSpecCreate = JMSBindingConstants.CREATE_IF_NOT_EXIST; |
| private Map<String, BindingProperty> activationSpecProperties = new HashMap<String, BindingProperty>(); |
| |
| private String resourceAdapterName;; |
| private Map<String, BindingProperty> resourceAdapterProperties = new HashMap<String, BindingProperty>(); |
| |
| private String responseActivationSpecName = null; |
| private String responseActivationSpecCreate = JMSBindingConstants.CREATE_IF_NOT_EXIST; |
| private Map<String, BindingProperty> responseActivationSpecProperties = new HashMap<String, BindingProperty>(); |
| |
| private String responseDestinationName = null; |
| private String responseDestinationType = JMSBindingConstants.DESTINATION_TYPE_QUEUE; |
| private String responseDestinationCreate = JMSBindingConstants.CREATE_IF_NOT_EXIST; |
| private Map<String, BindingProperty> responseDestinationProperties = new HashMap<String, BindingProperty>(); |
| |
| private String responseConnectionFactoryName = null; |
| private String responseConnectionFactoryCreate = JMSBindingConstants.CREATE_IF_NOT_EXIST; |
| private Map<String, BindingProperty> responseConnectionFactoryProperties = new HashMap<String, BindingProperty>(); |
| |
| // Provides the name of the factory that interfaces to the JMS API for us. |
| private String jmsResourceFactoryName = JMSBindingConstants.DEFAULT_RF_CLASSNAME; |
| |
| // Message processors used to deal with the request and response messages |
| public String requestMessageProcessorName = JMSBindingConstants.DEFAULT_MP_CLASSNAME; |
| public String responseMessageProcessorName = JMSBindingConstants.DEFAULT_MP_CLASSNAME; |
| |
| // The JMS message property used to hold the name of the operation being called |
| private String operationSelectorPropertyName = JMSBindingConstants.DEFAULT_OPERATION_PROP_NAME; |
| |
| // If the operation selector is derived automatically from the service interface it's stored here |
| private String operationSelectorName = null; |
| |
| private boolean containsHeaders = false; |
| private String replyTo; |
| private String jmsCorrelationId; |
| |
| private Map<String, Object> properties = new HashMap<String, Object>(); |
| private Map<String, Map<String, Object>> operationProperties = new HashMap<String, Map<String,Object>>(); |
| private Map<String, String> nativeOperationNames = new HashMap<String, String>(); |
| private Map<String, String> operationJMSTypes = new HashMap<String, String>(); |
| private Map<String, String> operationJMSCorrelationIds = new HashMap<String, String>(); |
| private Map<String, Boolean> operationJMSDeliveryModes = new HashMap<String, Boolean>(); |
| private Map<String, Long> operationJMSTimeToLives = new HashMap<String, Long>(); |
| private Map<String, Integer> operationJMSPriorities = new HashMap<String, Integer>(); |
| private Map<String, Map<String, BindingProperty>> operationPropertiesProperties = new HashMap<String, Map<String,BindingProperty>>(); |
| |
| private String jmsSelector = null; |
| private String uriJmsSelector = null; |
| private QName requestConnectionName; |
| private QName responseConnectionName; |
| private QName operationPropertiesName; |
| private JMSBinding requestConnectionBinding; |
| private JMSBinding responseConnectionBinding; |
| private JMSBinding operationPropertiesBinding; |
| |
| private WireFormat requestWireFormat; |
| private WireFormat responseWireFormat; |
| private OperationSelector operationSelector; |
| private ExtensionType extensionType; |
| private String jmsURI; |
| |
| private String uriType; |
| private Boolean uriDeliveryMode; |
| private Integer uriJMSPriority; |
| private Long uriJMSTimeToLive; |
| |
| private String headerType; |
| private Boolean headerDeliveryMode; |
| private Integer headerPriority; |
| private Long headerTimeToLive; |
| |
| private final Integer defaultPriority = Integer.valueOf(4); |
| private final Boolean defaultDeliveryMode = true; |
| private final Long defaultJMSTimeToLive =Long.valueOf(0); |
| private boolean isDestinationSpecified = false; |
| |
| public JMSBinding() { |
| super(); |
| } |
| |
| // operations required by Binding |
| public String getURI() { |
| return this.uri; |
| } |
| |
| public void setURI(String uri) { |
| this.uri = uri; |
| } |
| |
| public String getName() { |
| return this.name; |
| } |
| |
| public void setName(String name) { |
| this.name = name; |
| } |
| |
| public boolean isUnresolved() { |
| return this.unresolved; |
| } |
| |
| public void setUnresolved(boolean unresolved) { |
| this.unresolved = unresolved; |
| } |
| |
| public List<Object> getExtensions() { |
| return extensions; |
| } |
| |
| public WireFormat getRequestWireFormat() { |
| return requestWireFormat; |
| } |
| |
| public void setRequestWireFormat(WireFormat wireFormat) { |
| this.requestWireFormat = wireFormat; |
| } |
| |
| public WireFormat getResponseWireFormat() { |
| return responseWireFormat; |
| } |
| |
| public void setResponseWireFormat(WireFormat wireFormat) { |
| this.responseWireFormat = wireFormat; |
| } |
| |
| public OperationSelector getOperationSelector() { |
| return operationSelector; |
| } |
| |
| public void setOperationSelector(OperationSelector operationSelector) { |
| this.operationSelector = operationSelector; |
| } |
| |
| // Methods for getting/setting JMS binding model information |
| // as derived from the XML of the binding.jms element |
| |
| public void setCorrelationScheme(String correlationScheme) { |
| this.correlationScheme = correlationScheme; |
| } |
| |
| public String getCorrelationScheme() { |
| return correlationScheme; |
| } |
| |
| public String getInitialContextFactoryName() { |
| return initialContextFactoryName; |
| } |
| |
| public void setInitialContextFactoryName(String initialContextFactoryName) { |
| this.initialContextFactoryName = initialContextFactoryName; |
| } |
| |
| public String getJndiURL() { |
| return this.jndiURL; |
| } |
| |
| public void setJndiURL(String jndiURL) { |
| this.jndiURL = jndiURL; |
| } |
| |
| public String getDestinationName() { |
| if (requestConnectionBinding != null && requestConnectionBinding.getDestinationName() != null) { |
| return requestConnectionBinding.getDestinationName(); |
| } else { |
| return destinationName; |
| } |
| } |
| |
| public void setDestinationName(String destinationName) { |
| this.destinationName = destinationName; |
| } |
| |
| public String getDestinationType() { |
| if (requestConnectionBinding != null && requestConnectionBinding.getDestinationType() != null) { |
| return requestConnectionBinding.getDestinationType(); |
| } else { |
| return destinationType; |
| } |
| } |
| |
| public void setDestinationType(String destinationType) { |
| this.destinationType = destinationType; |
| } |
| |
| public String getDestinationCreate() { |
| if (requestConnectionBinding != null && requestConnectionBinding.getDestinationCreate() != null) { |
| return requestConnectionBinding.getDestinationCreate(); |
| } else { |
| return this.destinationCreate; |
| } |
| } |
| |
| public void setDestinationCreate(String create) { |
| this.destinationCreate = create; |
| } |
| |
| public String getConnectionFactoryName() { |
| if (requestConnectionBinding != null && requestConnectionBinding.getConnectionFactoryName() != null) { |
| return requestConnectionBinding.getConnectionFactoryName(); |
| } else { |
| return connectionFactoryName; |
| } |
| } |
| |
| public void setConnectionFactoryName(String connectionFactoryName) { |
| this.connectionFactoryName = connectionFactoryName; |
| } |
| |
| public String getConnectionFactoryCreate() { |
| if (requestConnectionBinding != null && requestConnectionBinding.getConnectionFactoryCreate() != null) { |
| return requestConnectionBinding.getConnectionFactoryCreate(); |
| } else { |
| return this.connectionFactoryCreate; |
| } |
| } |
| |
| public void setConnectionFactoryCreate(String create) { |
| this.connectionFactoryCreate = create; |
| } |
| |
| public String getResourceAdapterName() { |
| return resourceAdapterName; |
| } |
| |
| public void setResourceAdapterName(String name) { |
| resourceAdapterName = name; |
| } |
| |
| public String getActivationSpecName() { |
| if (requestConnectionBinding != null && requestConnectionBinding.getActivationSpecName() != null) { |
| return requestConnectionBinding.getActivationSpecName(); |
| } else { |
| return activationSpecName; |
| } |
| } |
| |
| public void setActivationSpecName(String activationSpecName) { |
| this.activationSpecName = activationSpecName; |
| } |
| |
| public String getActivationSpecCreate() { |
| if (requestConnectionBinding != null && requestConnectionBinding.getActivationSpecCreate() != null) { |
| return requestConnectionBinding.getActivationSpecCreate(); |
| } else { |
| return this.activationSpecCreate; |
| } |
| } |
| |
| public void setActivationSpecCreate(String create) { |
| this.activationSpecCreate = create; |
| } |
| |
| public String getResponseDestinationName() { |
| if (requestConnectionBinding != null && requestConnectionBinding.getResponseDestinationName() != null) { |
| return requestConnectionBinding.getResponseDestinationName(); |
| } else { |
| return this.responseDestinationName; |
| } |
| } |
| |
| public void setResponseDestinationName(String name) { |
| this.responseDestinationName = name; |
| } |
| |
| public String getResponseDestinationType() { |
| if (requestConnectionBinding != null && requestConnectionBinding.getResponseDestinationType() != null) { |
| return requestConnectionBinding.getResponseDestinationType(); |
| } else { |
| return this.responseDestinationType; |
| } |
| } |
| |
| public void setResponseDestinationType(String type) { |
| this.responseDestinationType = type; |
| } |
| |
| public String getResponseDestinationCreate() { |
| if (requestConnectionBinding != null && requestConnectionBinding.getResponseDestinationCreate() != null) { |
| return requestConnectionBinding.getResponseDestinationCreate(); |
| } else { |
| return this.responseDestinationCreate; |
| } |
| } |
| |
| public void setResponseDestinationCreate(String create) { |
| this.responseDestinationCreate = create; |
| } |
| |
| public String getResponseConnectionFactoryName() { |
| if (requestConnectionBinding != null && requestConnectionBinding.getResponseConnectionFactoryName() != null) { |
| return requestConnectionBinding.getResponseConnectionFactoryName(); |
| } else { |
| return responseConnectionFactoryName; |
| } |
| } |
| |
| public void setResponseConnectionFactoryName(String connectionFactoryName) { |
| this.responseConnectionFactoryName = connectionFactoryName; |
| } |
| |
| public String getResponseConnectionFactoryCreate() { |
| if (requestConnectionBinding != null && requestConnectionBinding.getResponseConnectionFactoryCreate() != null) { |
| return requestConnectionBinding.getResponseConnectionFactoryCreate(); |
| } else { |
| return this.responseConnectionFactoryCreate; |
| } |
| } |
| |
| public void setResponseConnectionFactoryCreate(String create) { |
| this.responseConnectionFactoryCreate = create; |
| } |
| |
| public String getResponseActivationSpecName() { |
| if (requestConnectionBinding != null && requestConnectionBinding.getResponseActivationSpecName() != null) { |
| return requestConnectionBinding.getResponseActivationSpecName(); |
| } else { |
| return responseActivationSpecName; |
| } |
| } |
| |
| public void setResponseActivationSpecName(String activationSpecName) { |
| this.responseActivationSpecName = activationSpecName; |
| } |
| |
| public String getResponseActivationSpecCreate() { |
| if (requestConnectionBinding != null && requestConnectionBinding.getResponseActivationSpecCreate() != null) { |
| return requestConnectionBinding.getResponseActivationSpecCreate(); |
| } else { |
| return this.responseActivationSpecCreate; |
| } |
| } |
| |
| public void setResponseActivationSpecCreate(String create) { |
| this.responseActivationSpecCreate = create; |
| } |
| |
| public String getJmsResourceFactoryName() { |
| return jmsResourceFactoryName; |
| } |
| |
| public void setJmsResourceFactoryName(String jmsResourceFactoryName) { |
| this.jmsResourceFactoryName = jmsResourceFactoryName; |
| } |
| |
| public void setRequestMessageProcessorName(String name) { |
| this.requestMessageProcessorName = name; |
| } |
| |
| public String getRequestMessageProcessorName() { |
| return requestMessageProcessorName; |
| } |
| |
| public void setResponseMessageProcessorName(String name) { |
| this.responseMessageProcessorName = name; |
| } |
| |
| public String getResponseMessageProcessorName() { |
| return responseMessageProcessorName; |
| } |
| |
| public String getOperationSelectorPropertyName() { |
| return operationSelectorPropertyName; |
| } |
| |
| public void setOperationSelectorPropertyName(String operationSelectorPropertyName) { |
| this.operationSelectorPropertyName = operationSelectorPropertyName; |
| } |
| |
| public String getOperationSelectorName() { |
| return operationSelectorName; |
| } |
| |
| public void setOperationSelectorName(String operationSelectorName) { |
| this.operationSelectorName = operationSelectorName; |
| } |
| |
| public void setHeaders( boolean containsHeaders ) { |
| this.containsHeaders = containsHeaders; |
| } |
| |
| public boolean containsHeaders() { |
| return this.containsHeaders; |
| } |
| |
| public String getReplyTo() { |
| return replyTo; |
| } |
| |
| public void setReplyTo(String replyTo) { |
| this.replyTo = replyTo; |
| } |
| |
| // getEffective...() will return values based on the following priority |
| // 1. The value specified in the URI attribute |
| // 2. The value specified in the operationProperties/headers |
| // 3. The value specified in the headers element |
| // 4. The default value from the headers element |
| public String getEffectiveJMSType(String opName) { |
| if ( getJMSURIType() != null ) return getJMSURIType(); |
| else if ( getOperationJMSType(opName) != null ) return getOperationJMSType(opName); |
| else if ( getJMSHeaderType() != null ) return getJMSHeaderType(); |
| else return null; |
| } |
| |
| public Boolean getEffectiveJMSDeliveryMode(String opName) { |
| if ( getURIJMSDeliveryMode() != null ) return getURIJMSDeliveryMode(); |
| else if ( getOperationJMSDeliveryMode(opName) != null) return getOperationJMSDeliveryMode(opName); |
| else if ( getHeaderJMSDeliveryMode() != null) return getHeaderJMSDeliveryMode(); |
| else return getDefaultDeliveryMode(); |
| } |
| |
| public Long getEffectiveJMSTimeToLive(String opName) { |
| if ( getURIJMSTimeToLive() != null ) return getURIJMSTimeToLive(); |
| else if ( getOperationJMSTimeToLive(opName) != null) return getOperationJMSTimeToLive(opName); |
| else if ( getHeaderJMSTimeToLive() != null) return getHeaderJMSTimeToLive(); |
| else return getDefaultJMSTimeToLive(); |
| } |
| |
| public Integer getEffectiveJMSPriority(String operationName) { |
| if ( getURIJMSPriority() != null ) return getURIJMSPriority(); |
| else if ( getOperationJMSPriority(operationName)!= null) return getOperationJMSPriority(operationName); |
| else if ( getJMSHeaderPriority() != null ) return getJMSHeaderPriority(); |
| else return getDefaultJMSPriority(); |
| } |
| |
| |
| private Long getHeaderJMSTimeToLive() { |
| return this.headerTimeToLive; |
| } |
| |
| private Long getDefaultJMSTimeToLive() { |
| return this.defaultJMSTimeToLive; |
| } |
| |
| private Boolean getDefaultDeliveryMode() { |
| return this.defaultDeliveryMode; |
| } |
| |
| private Boolean getHeaderJMSDeliveryMode() { |
| return headerDeliveryMode; |
| } |
| |
| private Boolean getURIJMSDeliveryMode() { |
| return this.uriDeliveryMode; |
| } |
| |
| public String getJMSURIType() { |
| return uriType; |
| } |
| public void setJMSURIType(String type) { |
| this.uriType = type; |
| } |
| public String getJMSHeaderType() { |
| return headerType; |
| } |
| |
| public void setJMSHeaderType(String type) { |
| this.headerType = type; |
| } |
| |
| public String getJMSCorrelationId() { |
| return jmsCorrelationId; |
| } |
| |
| public void setJMSCorrelationId(String jmsCorrelationId) { |
| setHeaders( true ); |
| this.jmsCorrelationId = jmsCorrelationId; |
| } |
| |
| public Set<String> getPropertyNames() { |
| return properties.keySet(); |
| } |
| |
| public Object getProperty(String name) { |
| return properties.get(name); |
| } |
| |
| public void setProperty(String name, Object value) { |
| properties.put(name, value); |
| } |
| |
| protected Map<String, Object> getProperties() { |
| return properties; |
| } |
| |
| /** |
| * Adds an operationName to this binding. |
| * @param opName |
| */ |
| public void addOperationName(String opName) { |
| Map<String, Object> props = operationProperties.get(opName); |
| if (props == null) { |
| props = new HashMap<String, Object>(); |
| operationProperties.put(opName, props); |
| } |
| } |
| |
| /** |
| * Provides set of operation names in this binding. |
| * @return a Set<String> of operation names |
| */ |
| public Set<String> getOperationNames() { |
| if (operationPropertiesBinding != null) { |
| return operationPropertiesBinding.getOperationNames(); |
| } else { |
| // Make a defensive copy since key changes affect map, map changes affect keys. |
| Set<String> opNames = operationProperties.keySet(); |
| Set<String> opNamesCopy = new TreeSet<String>( opNames ); |
| return opNamesCopy; |
| } |
| } |
| |
| public Map<String, Object> getOperationProperties(String opName) { |
| if (operationPropertiesBinding != null) { |
| return operationPropertiesBinding.getOperationProperties(opName); |
| } else { |
| return operationProperties.get(opName); |
| } |
| } |
| |
| public void setOperationProperty(String opName, String propName, Object value) { |
| Map<String, Object> props = operationProperties.get(opName); |
| if (props == null) { |
| props = new HashMap<String, Object>(); |
| operationProperties.put(opName, props); |
| } |
| props.put(propName, value); |
| } |
| |
| /** |
| * Provides the value of a property for a given operation |
| * @param opName is the name of the operation in this binding. |
| * @param propName is the key name for the property |
| * @return Object representing the property value for this property name. Returns |
| * null for non existant operation name or property name. |
| */ |
| public Object getOperationProperty(String opName, String propName ) { |
| if (operationPropertiesBinding != null) { |
| return operationPropertiesBinding.getOperationProperty(opName, propName); |
| } else { |
| Map<String, Object> props = operationProperties.get(opName); |
| if (props == null) { |
| return null; |
| } |
| return props.get(propName); |
| } |
| } |
| |
| public boolean hasNativeOperationName(String opName) { |
| if (operationPropertiesBinding != null) { |
| return operationPropertiesBinding.hasNativeOperationName(opName); |
| } else { |
| return nativeOperationNames.containsKey(opName); |
| } |
| } |
| |
| public String getNativeOperationName(String opName) { |
| if (operationPropertiesBinding != null && operationPropertiesBinding.getNativeOperationName(opName) != null) { |
| return operationPropertiesBinding.getNativeOperationName(opName); |
| } else { |
| if (nativeOperationNames.containsKey(opName)) { |
| return nativeOperationNames.get(opName); |
| } else { |
| return opName; |
| } |
| } |
| } |
| |
| public void setNativeOperationName(String opName, String nativeOpName) { |
| this.nativeOperationNames .put(opName, nativeOpName); |
| } |
| |
| public Map<String, String> getNativeOperationNames() { |
| return nativeOperationNames; |
| } |
| |
| public String getOperationJMSType(String opName) { |
| if (operationPropertiesBinding != null && operationPropertiesBinding.getOperationJMSType(opName) != null) { |
| return operationPropertiesBinding.getOperationJMSType(opName); |
| } else { |
| if (operationJMSTypes.containsKey(opName)) { |
| return operationJMSTypes.get(opName); |
| } else { |
| return null; |
| } |
| } |
| } |
| public void setOperationJMSType(String opName, String jmsType) { |
| this.operationJMSTypes.put(opName, jmsType); |
| } |
| |
| public String getOperationJMSCorrelationId(String opName) { |
| if (operationPropertiesBinding != null) { |
| if (operationPropertiesBinding.getOperationJMSCorrelationId(opName) != null) { |
| return operationPropertiesBinding.getOperationJMSCorrelationId(opName); |
| } else { |
| return jmsCorrelationId; |
| } |
| } else { |
| if (operationJMSCorrelationIds.containsKey(opName)) { |
| return operationJMSCorrelationIds.get(opName); |
| } else { |
| return jmsCorrelationId; |
| } |
| } |
| } |
| public void setOperationJMSCorrelationId(String opName, String jmsCorrelationId) { |
| operationJMSCorrelationIds.put(opName, jmsCorrelationId); |
| } |
| |
| public Boolean getOperationJMSDeliveryMode(String opName) { |
| if (operationPropertiesBinding != null) { |
| if (operationPropertiesBinding.getOperationJMSDeliveryMode(opName) != null) { |
| return operationPropertiesBinding.getOperationJMSDeliveryMode(opName); |
| } else { |
| return null; |
| } |
| } else { |
| if (operationJMSDeliveryModes.containsKey(opName)) { |
| return operationJMSDeliveryModes.get(opName); |
| } else { |
| return null; |
| } |
| } |
| } |
| public void setOperationJMSDeliveryMode(String opName, boolean b) { |
| operationJMSDeliveryModes.put(opName, b); |
| } |
| |
| public Long getOperationJMSTimeToLive(String opName) { |
| if (operationPropertiesBinding != null) { |
| if (operationPropertiesBinding.getOperationJMSTimeToLive(opName) != null) { |
| return operationPropertiesBinding.getOperationJMSTimeToLive(opName); |
| } else { |
| return null; |
| } |
| } else { |
| if (operationJMSTimeToLives.containsKey(opName)) { |
| return operationJMSTimeToLives.get(opName); |
| } else { |
| return null; |
| } |
| } |
| } |
| public void setOperationJMSTimeToLive(String opName, Long ttl) { |
| operationJMSTimeToLives.put(opName, ttl); |
| } |
| |
| public Integer getOperationJMSPriority(String opName) { |
| if (operationPropertiesBinding != null) { |
| if (operationPropertiesBinding.getOperationJMSPriority(opName) != null) { |
| return operationPropertiesBinding.getOperationJMSPriority(opName); |
| } else { |
| return null; |
| } |
| } else { |
| if (operationJMSPriorities.containsKey(opName)) { |
| return operationJMSPriorities.get(opName); |
| } else { |
| return null; |
| } |
| } |
| } |
| public void setOperationJMSPriority(String opName, int p) { |
| operationJMSPriorities.put(opName, p); |
| } |
| |
| public String getJMSSelector() { |
| if ( this.uriJmsSelector != null ) |
| return this.uriJmsSelector; |
| else |
| return jmsSelector; |
| } |
| |
| public void setJMSSelector(String jmsSelector) { |
| this.jmsSelector = jmsSelector; |
| } |
| |
| public QName getRequestConnectionName() { |
| return requestConnectionName; |
| } |
| |
| public void setRequestConnectionName(QName requestConnectionName) { |
| this.requestConnectionName = requestConnectionName; |
| } |
| |
| public void setResponseConnectionName(QName responseConnectionName) { |
| this.responseConnectionName = responseConnectionName; |
| } |
| |
| public QName getResponseConnectionName() { |
| return responseConnectionName; |
| } |
| |
| public void setRequestConnectionBinding(JMSBinding binding) { |
| this.requestConnectionBinding = binding; |
| } |
| public JMSBinding getRequestConnectionBinding() { |
| return requestConnectionBinding; |
| } |
| |
| public void setResponseConnectionBinding(JMSBinding binding) { |
| this.responseConnectionBinding = binding; |
| } |
| public JMSBinding getResponseConnectionBinding() { |
| return responseConnectionBinding; |
| } |
| |
| public void setOperationPropertiesName(QName nameValue) { |
| this.operationPropertiesName = nameValue; |
| } |
| public QName getOperationPropertiesName() { |
| return operationPropertiesName; |
| } |
| |
| public void setOperationPropertiesBinding(JMSBinding binding) { |
| this.operationPropertiesBinding = binding; |
| } |
| public JMSBinding getOperationPropertiesBinding() { |
| return operationPropertiesBinding; |
| } |
| |
| // operations required by PolicySetAttachPoint |
| public List<PolicySet> getPolicySets() { |
| return policySets; |
| } |
| |
| public List<PolicySet> getApplicablePolicySets() { |
| return applicablePolicySets; |
| } |
| |
| // operations required by IntentAttachPoint |
| public List<Intent> getRequiredIntents() { |
| return requiredIntents; |
| } |
| |
| public QName getType() { |
| return TYPE; |
| } |
| |
| public Map<String, BindingProperty> getDestinationProperties() { |
| return destinationProperties; |
| } |
| |
| public Map<String, BindingProperty> getConnectionFactoryProperties() { |
| return connectionFactoryProperties; |
| } |
| |
| public Map<String, BindingProperty> getResourceAdapterProperties() { |
| return resourceAdapterProperties; |
| } |
| |
| public Map<String, BindingProperty> getActivationSpecProperties() { |
| return activationSpecProperties; |
| } |
| |
| public Map<String, BindingProperty> getResponseActivationSpecProperties() { |
| return responseActivationSpecProperties; |
| } |
| |
| public Map<String, BindingProperty> getResponseDestinationProperties() { |
| return responseDestinationProperties; |
| } |
| |
| public Map<String, BindingProperty> getResponseConnectionFactoryProperties() { |
| return responseConnectionFactoryProperties; |
| } |
| |
| public Map<String, BindingProperty> getOperationPropertiesProperties(String opName) { |
| if (operationPropertiesProperties.get(opName)==null) { |
| operationPropertiesProperties.put(opName, new HashMap<String, BindingProperty>()); |
| } |
| return operationPropertiesProperties.get(opName); |
| } |
| |
| public List<ConfiguredOperation> getConfiguredOperations() { |
| return configuredOperations; |
| } |
| |
| public void setConfiguredOperations(List<ConfiguredOperation> configuredOperations) { |
| this.configuredOperations = configuredOperations; |
| } |
| |
| public String getTargetNamespace() { |
| return targetNamespace; |
| } |
| |
| public void setTargetNamespace(String ns) { |
| targetNamespace = ns; |
| } |
| |
| // hashCode() is here because binding elements in definitions documents are added |
| // to the model resolver hashmap. The namespace and name are keys. |
| @Override |
| public int hashCode() { |
| return (String.valueOf(getTargetNamespace()) + String.valueOf(getName())).hashCode(); |
| } |
| |
| @Override |
| public boolean equals( Object object ) { |
| return ( object instanceof JMSBinding ) && equals( (JMSBinding) object ); |
| } |
| |
| /** |
| * Compares two JMS bindings for equality. |
| * Because of the many fields, this comparison is rather large O(n). |
| * @param binding test binding for equality comparison |
| * @return boolean stating whether objects are equal |
| */ |
| public boolean equals( JMSBinding binding ) { |
| // If the target namespace is set, this binding came from a definitions document. |
| // The target namespace and name are used as keys for doing model resolver hashmap lookups. |
| // Only the target namespace and name can be compared. |
| if (this.targetNamespace != null) { |
| if ( !optStringEquals( this.targetNamespace, binding.getTargetNamespace() )) return false; |
| if ( !optStringEquals( this.name, binding.getName() )) return false; |
| return true; |
| } |
| |
| // Test all fields for equality. |
| // First test simple fields to quickly weed out mismatches. |
| if ( !optStringEquals( this.uri, binding.getURI() )) return false; |
| if ( !optStringEquals( this.name, binding.getName() )) return false; |
| if ( !optStringEquals( this.targetNamespace, binding.getTargetNamespace() )) return false; |
| if ( !optStringEquals( this.destinationName, binding.getDestinationName() )) return false; |
| if ( !optStringEquals( this.correlationScheme, binding.getCorrelationScheme() )) return false; |
| if ( !optStringEquals( this.initialContextFactoryName, binding.getInitialContextFactoryName() )) return false; |
| if ( !optStringEquals( this.jndiURL, binding.getJndiURL() )) return false; |
| if ( !optStringEquals( this.requestConnectionName, binding.getRequestConnectionName() )) return false; |
| if ( !optStringEquals( this.responseConnectionName, binding.getResponseConnectionName() )) return false; |
| if ( !optStringEquals( this.jmsSelector, binding.getJMSSelector() )) return false; |
| if ( !equals( properties, binding.getProperties()) ) |
| return false; |
| |
| // Test operation properties |
| Set<String> operationNamesA = this.getOperationNames(); |
| Set<String> operationNamesB = binding.getOperationNames(); |
| if ( operationNamesA != null && operationNamesB != null ) { |
| if ( operationNamesA == null && operationNamesB != null ) return false; |
| if ( operationNamesA != null && operationNamesB == null ) return false; |
| if ( operationNamesA.size() != operationNamesB.size() ) return false; |
| for(Iterator<String> it=operationNamesA.iterator(); it.hasNext(); ) { |
| String opName = it.next(); |
| if ( !operationNamesB.contains( opName )) { |
| return false; |
| } |
| } |
| } |
| |
| // Destination properties |
| if ( !optStringEquals( this.getDestinationName(), binding.getDestinationName() )) return false; |
| if ( !optStringEquals( this.getDestinationType(), binding.getDestinationType() )) return false; |
| |
| // Connection factory properties |
| if ( !optStringEquals( this.getConnectionFactoryName(), binding.getConnectionFactoryName() )) return false; |
| |
| // Activation spec properties |
| if ( !optStringEquals( this.getActivationSpecName(), binding.getActivationSpecName() )) return false; |
| |
| // Response properties |
| if ( !optStringEquals( this.getResponseDestinationName(), binding.getResponseDestinationName() )) return false; |
| if ( !optStringEquals( this.getResponseActivationSpecName(), binding.getResponseActivationSpecName() )) return false; |
| if ( !optStringEquals( this.getResponseConnectionFactoryName(), binding.getResponseConnectionFactoryName() )) return false; |
| |
| // Resource adapter |
| if ( !optStringEquals( this.getResourceAdapterName(), binding.getResourceAdapterName() )) return false; |
| |
| // Configured operations |
| if ( this.configuredOperations.size() != binding.getConfiguredOperations().size() ) return false; |
| |
| // wire format |
| if ( this.getRequestWireFormat().getClass() != binding.getRequestWireFormat().getClass()) return false; |
| if ( this.getResponseWireFormat().getClass() != binding.getResponseWireFormat().getClass()) return false; |
| |
| // operation selector |
| if ( this.getOperationSelector().getClass() != binding.getOperationSelector().getClass()) return false; |
| |
| |
| // Other fields could also be checked for equality. See class fields for details. |
| return true; |
| } |
| |
| /** |
| * Tests if Strings are equal. |
| * Either one may be null. This will match true if both |
| * are null or both are non-null and equal. |
| * @param p1 property list 1 |
| * @param p2 property list 2 |
| * @return whether or not properties are equal |
| */ |
| public static boolean optStringEquals( Object s1, Object s2 ) { |
| if ( s1 == null && s2 == null ) return true; |
| if ( s1 != null && s2 == null ) return false; |
| if ( s1 == null && s2 != null ) return false; |
| return s1.equals( s2 ); |
| } |
| |
| /** |
| * Tests if two property lists are equal. |
| * Either one may be null. This will match true if both |
| * are null or both are non-null and equal. |
| * @param p1 property list 1 |
| * @param p2 property list 2 |
| * @return whether or not properties are equal |
| */ |
| public static boolean equals( Map<String, Object> p1, Map<String, Object> p2 ) { |
| if ( p1 == null && p2 == null) |
| return true; |
| if ( p1 == null || p2 == null) |
| return false; |
| if ( p1.size() != p2.size()) |
| return false; |
| |
| // For both the keys and values of a map |
| for (Iterator it=p1.entrySet().iterator(); it.hasNext(); ) { |
| Map.Entry entry = (Map.Entry)it.next(); |
| Object k1 = entry.getKey(); |
| Object v1 = entry.getValue(); |
| Object v2 = p2.get( k1 ); |
| |
| if ( v1 == null && v2 != null ) |
| return false; |
| if ( v1 != null && v2 == null ) |
| return false; |
| if ( !v1.equals( v2 )) |
| return false; |
| } |
| |
| return true; |
| } |
| |
| public ExtensionType getExtensionType() { |
| return extensionType; |
| } |
| |
| public void setExtensionType(ExtensionType intentAttachPointType) { |
| this.extensionType = intentAttachPointType; |
| } |
| |
| public String getJMSURI() { |
| return jmsURI; |
| } |
| public void setJMSURI(String jmsURI) { |
| this.jmsURI = jmsURI; |
| } |
| |
| |
| public void setURIJMSDeliveryMode(boolean equals) { |
| this.uriDeliveryMode = Boolean.valueOf(equals); |
| } |
| |
| public Integer getURIJMSPriority() { |
| return this.uriJMSPriority; |
| } |
| |
| public void setURIJMSPriority(int parseInt) { |
| this.uriJMSPriority = Integer.valueOf(parseInt); |
| } |
| |
| public Long getURIJMSTimeToLive() { |
| return this.uriJMSTimeToLive; |
| } |
| public void setURIJMSTimeToLive(long parseLong) { |
| this.uriJMSTimeToLive = Long.valueOf(parseLong); |
| } |
| |
| public Boolean isHeaderDeliveryModePersistent() { |
| return this.headerDeliveryMode; |
| } |
| public void setJMSHeaderDeliveryMode(boolean b) { |
| this.headerDeliveryMode = Boolean.valueOf(b); |
| } |
| |
| public Long getJMSHeaderTimeToLive() { |
| return this.headerTimeToLive; |
| } |
| public void setJMSHeaderTimeToLive(long parseLong) { |
| this.headerTimeToLive = Long.valueOf(parseLong); |
| } |
| |
| public Integer getJMSHeaderPriority() { |
| return this.headerPriority; |
| } |
| public void setJMSHeaderPriority(int p) { |
| this.headerPriority = Integer.valueOf(p); |
| } |
| |
| public Integer getDefaultJMSPriority() { |
| return this.defaultPriority; |
| } |
| |
| public void setIsDestinationSpecified(boolean b) { |
| this.isDestinationSpecified = b; |
| } |
| |
| public boolean isDestinationSpecified() { |
| return this.isDestinationSpecified ; |
| } |
| |
| public void setURIJMSSelector(String selector) { |
| this.uriJmsSelector = selector; |
| } |
| |
| } |