blob: ba8b4c3beb7c6d4a2b0800fcf0f412bec2ae7fa4 [file] [log] [blame]
/*
* Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Oracle - initial API and implementation from Oracle TopLink
package org.eclipse.persistence.internal.eis.adapters.jms;
import jakarta.resource.cci.*;
/**
* INTERNAL:
* Interaction spec for JMS JCA adapter.
*
* @author Dave McCann
* @since OracleAS TopLink 10<i>g</i> (10.0.3)
*/
public abstract class CciJMSInteractionSpec implements InteractionSpec {
protected String destinationURL;// JNDI name (URL) of the destination (queue/topic)
protected String destination;// if no JNDI, the destination name
protected String messageSelector;// message selector to link the request and response messages
/**
* Default constructor.
*/
public CciJMSInteractionSpec() {
destinationURL = "";
destination = "";
messageSelector = "";
}
/**
* Indicates if a JNDI lookup is to be performed to locate the destination.
*
* @return true if a destination URL has been specified, false otherwise
*/
public boolean hasDestinationURL() {
return (destinationURL != null) && (destinationURL.length() > 0);
}
/**
* Set the destination URL to be looked up.
*
* @param url - the destination name as registered in JNDI
*/
public void setDestinationURL(String url) {
destinationURL = url;
}
/**
* Return the URL of the destination.
*
* @return the destination name as registered in JNDI
*/
public String getDestinationURL() {
return destinationURL;
}
/**
* Set the name of the destination to be used. This is required if JNDI is
* not being used to lookup the destination.
*
*/
public void setDestination(String dest) {
destination = dest;
}
/**
* Return the name of the destination - required if JNDI is not being used.
*
* @return the name of the destination to be used
*/
public String getDestination() {
return destination;
}
/**
* Sets the message selector to be used to link the request and response messages.
* If this value is not set, it is assumed that the entity processing the request
* will set the JMSCorrelationID of the reponse message using the JMSMessageID of
* the request messsage.
*
*/
public void setMessageSelector(String selector) {
messageSelector = selector;
}
/**
* Returns the message selector to be used to link the request and response messages.
*
* @return the message selector.
*/
public String getMessageSelector() {
return messageSelector;
}
/**
* Returns the message selector in the appropriate format. The selector is
* set in JMS message selector format: "JMSCorrelationID = 'message_selector'
*
* @return formatted message selector - uses JMSCorrelationID
*/
public String getFormattedMessageSelector() {
return "JMSCorrelationID = '" + messageSelector + "'";
}
/**
* Indicates if the user has set a message selector.
*
* @return true if a message selector has been set, false otherwise
*/
public boolean hasMessageSelector() {
return (messageSelector != null) && (messageSelector.length() > 0);
}
/**
* Returns the destination URL or class
*
* @return destination URL or destination class
*/
@Override
public String toString() {
if (hasDestinationURL()) {
return getClass().getName() + "(" + getDestinationURL() + ")";
}
return getClass().getName() + "(" + getDestination() + ")";
}
}