| Commit in servicemix/base/src/main/java/org/servicemix/components/jms on MAIN | |||
| JmsServiceComponent.java | +56 | -1 | 1.1 -> 1.2 |
added override properties for serviceName and operationName
servicemix/base/src/main/java/org/servicemix/components/jms
diff -u -r1.1 -r1.2 --- JmsServiceComponent.java 1 Aug 2005 00:03:05 -0000 1.1 +++ JmsServiceComponent.java 1 Aug 2005 07:06:26 -0000 1.2 @@ -28,6 +28,7 @@
import javax.jms.MessageConsumer; import javax.jms.MessageListener; import javax.jms.Session;
+import javax.xml.namespace.QName;
import javax.xml.transform.TransformerException; import org.activemq.util.JMSExceptionHelper; import org.apache.commons.logging.Log;
@@ -45,9 +46,25 @@
* container for processing, and send back the result to the JMS requestor - used for the TopipcRequestor and * QueueRequestor pattern *
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class JmsServiceComponent extends ComponentSupport implements MessageListener, InitializingBean, DisposableBean {
+ /** + * property name for operation namespace + */ + public String OPERATION_NAME_SPACE_PROP = "opNameSpace"; + /** + * property name for operation local part + */ + public String OPERATION_LOCAL_PROP = "opLocalPart"; + /** + * property name for service namespace + */ + public String SERVICE_NAME_SPACE_PROP = "servNameSpace"; + /** + * property name for service local part + */ + public String SERVICE_LOCAL_PROP = "servLocalPart";
private static final Log log = LogFactory.getLog(JmsServiceComponent.class);
private DestinationChooser destinationChooser;
private JmsMarshaler marshaler = new JmsMarshaler();
@@ -150,6 +167,14 @@
final InOut messageExchange = getDeliveryChannel().createExchangeFactory().createInOutExchange();
NormalizedMessage inMessage = messageExchange.createMessage();
try {
+ QName operation = getOperationFromMessage(jmsMessage);
+ QName service = getServiceFromMessage(jmsMessage);
+ if (operation != null){
+ messageExchange.setOperation(operation);
+ }
+ if (service != null){
+ messageExchange.setService(service);
+ }
marshaler.toNMS(inMessage, jmsMessage);
messageExchange.setInMessage(inMessage);
if (getDeliveryChannel().sendSync(messageExchange)) {
@@ -209,6 +234,36 @@
if (result == null) {
log.error("Coul not find an outbound destination for " + inboundMessage);
throw new JMSException("No outbound JMS Destination can be found");
+ }
+ return result;
+ }
+
+ protected QName getOperationFromMessage(Message message) throws JMSException{
+ QName result = null;
+ //get override defination for the operation
+ String operationName = message.getStringProperty(OPERATION_NAME_SPACE_PROP);
+ String operationLocal = message.getStringProperty(OPERATION_LOCAL_PROP);
+ if (operationLocal != null){
+ if (operationName != null){
+ result = new QName(operationName,operationLocal);
+ }else {
+ result = new QName(operationLocal);
+ }
+ }
+ return result;
+ }
+
+ protected QName getServiceFromMessage(Message message) throws JMSException{
+ QName result = null;
+ //get override defination for the operation
+ String serviceName = message.getStringProperty(SERVICE_NAME_SPACE_PROP);
+ String seriviceLocal = message.getStringProperty(SERVICE_LOCAL_PROP);
+ if (seriviceLocal != null){
+ if (serviceName != null){
+ result = new QName(serviceName,seriviceLocal);
+ }else {
+ result = new QName(seriviceLocal);
+ }
}
return result;
}
