001 /**
002 *
003 * Licensed to the Apache Software Foundation (ASF) under one or more
004 * contributor license agreements. See the NOTICE file distributed with
005 * this work for additional information regarding copyright ownership.
006 * The ASF licenses this file to You under the Apache License, Version 2.0
007 * (the "License"); you may not use this file except in compliance with
008 * the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018 package org.apache.camel.component.jbi;
019
020 import org.apache.camel.CamelContext;
021 import org.apache.camel.Exchange;
022 import org.apache.camel.impl.DefaultExchange;
023
024 import javax.jbi.messaging.MessageExchange;
025 import javax.jbi.messaging.NormalizedMessage;
026
027 /**
028 * An {@link Exchange} working with JBI which exposes the underlying JBI features such as the
029 * JBI {@link #getMessageExchange()}, {@link #getInMessage()} and {@link #getOutMessage()}
030 *
031 * @version $Revision: 550760 $
032 */
033 public class JbiExchange extends DefaultExchange {
034 private final JbiBinding binding;
035 private MessageExchange messageExchange;
036
037 public JbiExchange(CamelContext context, JbiBinding binding) {
038 super(context);
039 this.binding = binding;
040 }
041
042 public JbiExchange(CamelContext context, JbiBinding binding, MessageExchange messageExchange) {
043 super(context);
044 this.binding = binding;
045 this.messageExchange = messageExchange;
046
047 // TODO we could maybe use the typesafe APIs of different derived APIs from JBI
048 setIn(new JbiMessage(messageExchange.getMessage("in")));
049 setOut(new JbiMessage(messageExchange.getMessage("out")));
050 setFault(new JbiMessage(messageExchange.getMessage("fault")));
051 }
052
053 @Override
054 public JbiMessage getIn() {
055 return (JbiMessage) super.getIn();
056 }
057
058 @Override
059 public JbiMessage getOut() {
060 return (JbiMessage) super.getOut();
061 }
062
063 @Override
064 public JbiMessage getOut(boolean lazyCreate) {
065 return (JbiMessage) super.getOut(lazyCreate);
066 }
067
068 @Override
069 public JbiMessage getFault() {
070 return (JbiMessage) super.getFault();
071 }
072
073 /**
074 * @return the Camel <-> JBI binding
075 */
076 public JbiBinding getBinding() {
077 return binding;
078 }
079
080 // Expose JBI features
081 //-------------------------------------------------------------------------
082
083 /**
084 * Returns the underlying JBI message exchange for an inbound exchange
085 * or null for outbound messages
086 *
087 * @return the inbound message exchange
088 */
089 public MessageExchange getMessageExchange() {
090 return messageExchange;
091 }
092
093 /**
094 * Returns the underlying In {@link NormalizedMessage}
095 *
096 * @return the In message
097 */
098 public NormalizedMessage getInMessage() {
099 return getIn().getNormalizedMessage();
100 }
101
102 /**
103 * Returns the underlying Out {@link NormalizedMessage}
104 *
105 * @return the Out message
106 */
107 public NormalizedMessage getOutMessage() {
108 return getOut().getNormalizedMessage();
109 }
110
111 /**
112 * Returns the underlying Fault {@link NormalizedMessage}
113 *
114 * @return the Fault message
115 */
116 public NormalizedMessage getFaultMessage() {
117 return getFault().getNormalizedMessage();
118 }
119
120 // Implementation methods
121 //-------------------------------------------------------------------------
122
123 @Override
124 protected JbiMessage createInMessage() {
125 return new JbiMessage();
126 }
127
128 @Override
129 protected JbiMessage createOutMessage() {
130 return new JbiMessage();
131 }
132 }