You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ds...@apache.org on 2014/02/10 11:08:47 UTC
svn commit: r1566556 - in /cxf/trunk/rt/ws/rm/src:
main/java/org/apache/cxf/ws/rm/
main/java/org/apache/cxf/ws/rm/persistence/jdbc/
main/java/org/apache/cxf/ws/rm/soap/ test/java/org/apache/cxf/ws/rm/
test/java/org/apache/cxf/ws/rm/persistence/ test/ja...
Author: dsosnoski
Date: Mon Feb 10 10:08:46 2014
New Revision: 1566556
URL: http://svn.apache.org/r1566556
Log:
CXF-4866, CXF-352: Fixes to restructured WS-RM code from problems
found with unit tests, and corrected unit tests to work with the
restructured code.
Added:
cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RMSoapInInterceptorTest.java
Removed:
cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RMSoapInterceptorTest.java
Modified:
cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder.java
cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder10AImpl.java
cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder10Impl.java
cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder11Impl.java
cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStore.java
cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/soap/RMSoapOutInterceptor.java
cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerTest.java
cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMOutInterceptorTest.java
cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/RMMessageTest.java
cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreTestBase.java
cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RMSoapOutInterceptorTest.java
cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RetransmissionQueueImplTest.java
Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder.java?rev=1566556&r1=1566555&r2=1566556&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder.java Mon Feb 10 10:08:46 2014
@@ -24,7 +24,6 @@ import java.util.Collection;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
-import javax.xml.namespace.QName;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -129,7 +128,25 @@ public abstract class EncoderDecoder {
return false;
}
- // get the SOAP:Header element
+ // add WSRM namespace declaration to header, instead of repeating in each individual child node
+ Element header = getSoapHeader(doc);
+ addNamespaceDecl(header);
+
+ // build individual headers
+ Marshaller marshaller = getContext().createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
+ buildHeaders(seq, acks, reqs, rmps.isLastMessage(), header, marshaller);
+ return true;
+ }
+
+ /**
+ * Get the SOAP Header element from a message document.
+ *
+ * @param doc
+ * @return header
+ * @throws JAXBException if not found
+ */
+ protected Element getSoapHeader(Document doc) throws JAXBException {
NodeList nodes = doc.getDocumentElement().getChildNodes();
Element header = null;
for (int i = 0; i < nodes.getLength(); i++) {
@@ -142,15 +159,22 @@ public abstract class EncoderDecoder {
if (header == null) {
throw new JAXBException("No SOAP:Header element in message");
}
-
- // add WSRM namespace declaration to header, instead of repeating in each individual child node
+ return header;
+ }
+
+ /**
+ * Inserts a Header element containing a WS-RM Fault into a SOAP message.
+ *
+ * @param sf
+ * @param qname constructed element name
+ * @param doc
+ */
+ public void insertHeaderFault(SequenceFault sf, Document doc) throws JAXBException {
+ Element header = getSoapHeader(doc);
addNamespaceDecl(header);
-
- // build individual headers
Marshaller marshaller = getContext().createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
- buildHeaders(seq, acks, reqs, rmps.isLastMessage(), header, marshaller);
- return true;
+ buildHeaderFault(sf, header, marshaller);
}
/**
@@ -166,16 +190,17 @@ public abstract class EncoderDecoder {
*/
protected abstract void buildHeaders(SequenceType seq, Collection<SequenceAcknowledgement> acks,
Collection<AckRequestedType> reqs, boolean last, Element header, Marshaller marshaller) throws JAXBException;
-
+
/**
- * Builds an element containing a WS-RM Fault. This adds the appropriate WS-RM namespace declaration to
- * the element, and then adds the Fault as a child element.
+ * Build a header fault, using the correct protocol variation.
*
* @param sf
- * @param qname constructed element name
- * @return element
+ * @param header
+ * @param marshaller
+ * @throws JAXBException
*/
- public abstract Element buildHeaderFault(SequenceFault sf, QName qname) throws JAXBException;
+ protected abstract void buildHeaderFault(SequenceFault sf, Element header, Marshaller marshaller)
+ throws JAXBException;
/**
* Marshals a SequenceAcknowledgement to the appropriate external form.
Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder10AImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder10AImpl.java?rev=1566556&r1=1566555&r2=1566556&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder10AImpl.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder10AImpl.java Mon Feb 10 10:08:46 2014
@@ -29,7 +29,6 @@ import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
-import javax.xml.namespace.QName;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
@@ -141,40 +140,30 @@ public final class EncoderDecoder10AImpl
}
}
- public Element buildHeaderFault(SequenceFault sf, QName qname) throws JAXBException {
-
- Document doc = DOMUtils.createDocument();
- Element header = doc.createElementNS(qname.getNamespaceURI(), qname.getLocalPart());
- // add WSRM namespace declaration to header, instead of
- // repeating in each individual child node
-
- Attr attr = doc.createAttributeNS("http://www.w3.org/2000/xmlns/",
- "xmlns:" + RMConstants.NAMESPACE_PREFIX);
- attr.setValue(RM10Constants.NAMESPACE_URI);
- header.setAttributeNodeNS(attr);
-
- Marshaller marshaller = getContext().createMarshaller();
- marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
- QName fqname = RM10Constants.SEQUENCE_FAULT_QNAME;
+ public void buildHeaderFault(SequenceFault sf, Element header, Marshaller marshaller) throws JAXBException {
org.apache.cxf.ws.rm.v200502wsa15.SequenceFaultType flt =
new org.apache.cxf.ws.rm.v200502wsa15.SequenceFaultType();
flt.setFaultCode(sf.getFaultCode());
Object detail = sf.getDetail();
+ Document doc = DOMUtils.createDocument();
if (detail instanceof Element) {
flt.getAny().add(detail);
} else if (detail instanceof Identifier) {
marshaller.marshal(VersionTransformer.convert200502wsa15((Identifier)detail), doc);
} else if (detail instanceof SequenceAcknowledgement) {
- marshaller.marshal(VersionTransformer.convert200502wsa15((SequenceAcknowledgement)detail),
- doc);
+ marshaller.marshal(VersionTransformer.convert200502wsa15((SequenceAcknowledgement)detail), doc);
}
Element data = doc.getDocumentElement();
if (data != null) {
flt.getAny().add(data);
}
- marshaller.marshal(new JAXBElement<org.apache.cxf.ws.rm.v200502wsa15.SequenceFaultType>(fqname,
+ data = sf.getExtraDetail();
+ if (data != null) {
+ flt.getAny().add(data);
+ }
+ marshaller.marshal(new JAXBElement<org.apache.cxf.ws.rm.v200502wsa15.SequenceFaultType>(
+ RM10Constants.SEQUENCE_FAULT_QNAME,
org.apache.cxf.ws.rm.v200502wsa15.SequenceFaultType.class, flt), header);
- return header;
}
public Element encodeSequenceAcknowledgement(SequenceAcknowledgement ack) throws JAXBException {
Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder10Impl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder10Impl.java?rev=1566556&r1=1566555&r2=1566556&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder10Impl.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder10Impl.java Mon Feb 10 10:08:46 2014
@@ -29,7 +29,6 @@ import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
-import javax.xml.namespace.QName;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
@@ -140,25 +139,11 @@ public final class EncoderDecoder10Impl
}
}
- public Element buildHeaderFault(SequenceFault sf, QName qname) throws JAXBException {
-
- Document doc = DOMUtils.createDocument();
- Element header = doc.createElementNS(qname.getNamespaceURI(), qname.getLocalPart());
- // add WSRM namespace declaration to header, instead of
- // repeating in each individual child node
-
- Attr attr = doc.createAttributeNS("http://www.w3.org/2000/xmlns/",
- "xmlns:" + RMConstants.NAMESPACE_PREFIX);
- attr.setValue(RM10Constants.NAMESPACE_URI);
- header.setAttributeNodeNS(attr);
-
- Marshaller marshaller = getContext().createMarshaller();
- marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
- QName fqname = RM10Constants.SEQUENCE_FAULT_QNAME;
- org.apache.cxf.ws.rm.v200502.SequenceFaultType flt =
- new org.apache.cxf.ws.rm.v200502.SequenceFaultType();
+ public void buildHeaderFault(SequenceFault sf, Element header, Marshaller marshaller) throws JAXBException {
+ org.apache.cxf.ws.rm.v200502.SequenceFaultType flt = new org.apache.cxf.ws.rm.v200502.SequenceFaultType();
flt.setFaultCode(sf.getFaultCode());
Object detail = sf.getDetail();
+ Document doc = DOMUtils.createDocument();
if (detail instanceof Element) {
flt.getAny().add(detail);
} else if (detail instanceof Identifier) {
@@ -170,9 +155,13 @@ public final class EncoderDecoder10Impl
if (data != null) {
flt.getAny().add(data);
}
- marshaller.marshal(new JAXBElement<org.apache.cxf.ws.rm.v200502.SequenceFaultType>(fqname,
+ data = sf.getExtraDetail();
+ if (data != null) {
+ flt.getAny().add(data);
+ }
+ marshaller.marshal(new JAXBElement<org.apache.cxf.ws.rm.v200502.SequenceFaultType>(
+ RM10Constants.SEQUENCE_FAULT_QNAME,
org.apache.cxf.ws.rm.v200502.SequenceFaultType.class, flt), header);
- return header;
}
public Element encodeSequenceAcknowledgement(SequenceAcknowledgement ack) throws JAXBException {
Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder11Impl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder11Impl.java?rev=1566556&r1=1566555&r2=1566556&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder11Impl.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder11Impl.java Mon Feb 10 10:08:46 2014
@@ -29,7 +29,6 @@ import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
-import javax.xml.namespace.QName;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
@@ -137,20 +136,11 @@ public final class EncoderDecoder11Impl
element.setAttributeNodeNS(attr);
}
- public Element buildHeaderFault(SequenceFault sf, QName qname) throws JAXBException {
-
- Document doc = DOMUtils.createDocument();
- Element header = doc.createElementNS(qname.getNamespaceURI(), qname.getLocalPart());
-
- // add WSRM namespace declaration to header, instead of repeating in each individual child node
- addNamespaceDecl(header);
-
- Marshaller marshaller = getContext().createMarshaller();
- marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
- QName fqname = RM11Constants.SEQUENCE_FAULT_QNAME;
+ public void buildHeaderFault(SequenceFault sf, Element header, Marshaller marshaller) throws JAXBException {
SequenceFaultType flt = new SequenceFaultType();
flt.setFaultCode(sf.getFaultCode());
Object detail = sf.getDetail();
+ Document doc = DOMUtils.createDocument();
if (detail instanceof Element) {
flt.getAny().add(detail);
} else if (detail instanceof Identifier) {
@@ -166,8 +156,8 @@ public final class EncoderDecoder11Impl
if (data != null) {
flt.getDetail().getAny().add(data);
}
- marshaller.marshal(new JAXBElement<SequenceFaultType>(fqname, SequenceFaultType.class, flt), header);
- return header;
+ marshaller.marshal(new JAXBElement<SequenceFaultType>(RM11Constants.SEQUENCE_FAULT_QNAME,
+ SequenceFaultType.class, flt), header);
}
public Element encodeSequenceAcknowledgement(SequenceAcknowledgement ack) throws JAXBException {
Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStore.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStore.java?rev=1566556&r1=1566555&r2=1566556&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStore.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStore.java Mon Feb 10 10:08:46 2014
@@ -155,7 +155,7 @@ public class RMTxStore implements RMStor
private static final String SELECT_MESSAGES_STMT_STR =
"SELECT MSG_NO, SEND_TO, CONTENT FROM {0} WHERE SEQ_ID = ?";
private static final String SELECT_ATTACHMENTS_STMT_STR =
- "SELECT ATTACHMENT_NO, DATA FROM {0} WHERE SEQ_ID = ?, MSG_ID = ?";
+ "SELECT ATTACHMENT_NO, DATA FROM {0} WHERE SEQ_ID = ? AND MSG_NO = ?";
private static final String ALTER_TABLE_STMT_STR =
"ALTER TABLE {0} ADD {1} {2}";
private static final String CREATE_INBOUND_MESSAGE_STMT_STR =
@@ -1104,8 +1104,7 @@ public class RMTxStore implements RMStor
}
- protected void cacheStatement(Connection con, String sql)
- throws SQLException {
+ protected void cacheStatement(Connection con, String sql) throws SQLException {
PreparedStatement stmt = con.prepareStatement(sql);
cachedStatements.put(sql, stmt);
statementLocks.put(stmt, new ReentrantLock());
@@ -1137,6 +1136,12 @@ public class RMTxStore implements RMStor
cacheStatement(connection, DELETE_OUTBOUND_MESSAGE_STMT_STR);
cacheStatement(connection, SELECT_INBOUND_MESSAGES_STMT_STR);
cacheStatement(connection, SELECT_OUTBOUND_MESSAGES_STMT_STR);
+ cacheStatement(connection, CREATE_INBOUND_ATTACHMENT_STMT_STR);
+ cacheStatement(connection, CREATE_OUTBOUND_ATTACHMENT_STMT_STR);
+ cacheStatement(connection, DELETE_INBOUND_ATTACHMENTS_STMT_STR);
+ cacheStatement(connection, DELETE_OUTBOUND_ATTACHMENTS_STMT_STR);
+ cacheStatement(connection, SELECT_INBOUND_ATTACHMENTS_STMT_STR);
+ cacheStatement(connection, SELECT_OUTBOUND_ATTACHMENTS_STMT_STR);
}
public synchronized void init() {
Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/soap/RMSoapOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/soap/RMSoapOutInterceptor.java?rev=1566556&r1=1566555&r2=1566556&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/soap/RMSoapOutInterceptor.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/soap/RMSoapOutInterceptor.java Mon Feb 10 10:08:46 2014
@@ -21,7 +21,6 @@ package org.apache.cxf.ws.rm.soap;
import java.net.HttpURLConnection;
import java.util.HashSet;
-import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -32,16 +31,10 @@ import javax.xml.namespace.QName;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-import org.apache.cxf.binding.soap.Soap11;
import org.apache.cxf.binding.soap.SoapFault;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.binding.soap.interceptor.AbstractSoapInterceptor;
import org.apache.cxf.common.logging.LogUtils;
-import org.apache.cxf.headers.Header;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.Message;
import org.apache.cxf.message.MessageUtils;
@@ -50,7 +43,6 @@ import org.apache.cxf.ws.addressing.Addr
import org.apache.cxf.ws.rm.ProtocolVariation;
import org.apache.cxf.ws.rm.RM10Constants;
import org.apache.cxf.ws.rm.RM11Constants;
-import org.apache.cxf.ws.rm.RMConstants;
import org.apache.cxf.ws.rm.RMContextUtils;
import org.apache.cxf.ws.rm.RMOutInterceptor;
import org.apache.cxf.ws.rm.RMProperties;
@@ -144,16 +136,9 @@ public class RMSoapOutInterceptor extend
if (added) {
try {
content.saveChanges();
-// ByteArrayOutputStream bos = new ByteArrayOutputStream();
-// content.writeTo(bos);
-// bos.close();
-// LOG.info("Message after headers added: " + bos.toString("UTF-8"));
} catch (SOAPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
-// } catch (IOException e) {
-// // TODO Auto-generated catch block
-// e.printStackTrace();
}
}
@@ -172,22 +157,13 @@ public class RMSoapOutInterceptor extend
public static void encodeFault(SoapMessage message, SequenceFault sf) {
LOG.log(Level.FINE, "Encoding SequenceFault in SOAP header");
try {
- List<Header> headers = message.getHeaders();
Message inmsg = message.getExchange().getInMessage();
RMProperties rmps = RMContextUtils.retrieveRMProperties(inmsg, false);
AddressingProperties maps = RMContextUtils.retrieveMAPs(inmsg, false, false);
ProtocolVariation protocol = ProtocolVariation.findVariant(rmps.getNamespaceURI(),
maps.getNamespaceURI());
- Element header = protocol.getCodec().buildHeaderFault(sf, Soap11.getInstance().getHeader());
- Node node = header.getFirstChild();
- if (node instanceof Element) {
- Attr attr = header.getOwnerDocument().createAttributeNS("http://www.w3.org/2000/xmlns/",
- "xmlns:" + RMConstants.NAMESPACE_PREFIX);
- attr.setValue(rmps.getNamespaceURI());
- ((Element)node).setAttributeNodeNS(attr);
- }
-
- headers.add(new Header(new QName(node.getNamespaceURI(), node.getLocalName()), node));
+ SOAPMessage content = message.getContent(SOAPMessage.class);
+ protocol.getCodec().insertHeaderFault(sf, content.getSOAPPart());
} catch (JAXBException je) {
LOG.log(Level.WARNING, "SOAP_HEADER_ENCODE_FAILURE_MSG", je);
}
Modified: cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerTest.java?rev=1566556&r1=1566555&r2=1566556&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerTest.java (original)
+++ cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerTest.java Mon Feb 10 10:08:46 2014
@@ -19,7 +19,6 @@
package org.apache.cxf.ws.rm;
-import java.io.IOException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
@@ -37,7 +36,6 @@ import org.apache.cxf.bus.spring.SpringB
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.endpoint.Server;
-import org.apache.cxf.io.CachedOutputStream;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.Message;
import org.apache.cxf.service.Service;
@@ -645,14 +643,6 @@ public class RMManagerTest extends Asser
if (null == conduit) {
EasyMock.expect(m.getTo()).andReturn("toAddress");
}
- byte[] content = new byte[] {'x', '9'};
- CachedOutputStream cos = new CachedOutputStream();
- try {
- cos.write(content);
- } catch (IOException e) {
- // ignore
- }
- EasyMock.expect(m.getCachedOutputStream()).andReturn(cos);
if (mc != null) {
queue.addUnacknowledged(EasyMock.capture(mc));
Modified: cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMOutInterceptorTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMOutInterceptorTest.java?rev=1566556&r1=1566555&r2=1566556&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMOutInterceptorTest.java (original)
+++ cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMOutInterceptorTest.java Mon Feb 10 10:08:46 2014
@@ -20,22 +20,15 @@
package org.apache.cxf.ws.rm;
import java.lang.reflect.Method;
-import java.util.Iterator;
-import java.util.SortedSet;
-import java.util.TreeSet;
-import org.apache.cxf.interceptor.Interceptor;
import org.apache.cxf.interceptor.InterceptorChain;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.FaultMode;
import org.apache.cxf.message.Message;
-import org.apache.cxf.phase.Phase;
-import org.apache.cxf.phase.PhaseInterceptorChain;
import org.apache.cxf.ws.addressing.AddressingProperties;
import org.apache.cxf.ws.addressing.AttributedURIType;
import org.apache.cxf.ws.addressing.EndpointReferenceType;
import org.apache.cxf.ws.addressing.JAXWSAConstants;
-import org.apache.cxf.ws.addressing.MAPAggregator;
import org.apache.cxf.ws.addressing.VersionTransformer.Names200408;
import org.apache.cxf.ws.rm.v200702.Identifier;
import org.easymock.EasyMock;
@@ -54,22 +47,6 @@ public class RMOutInterceptorTest extend
control = EasyMock.createNiceControl();
}
- @Test
- public void testOrdering() {
- Phase p = new Phase(Phase.PRE_LOGICAL, 1);
- SortedSet<Phase> phases = new TreeSet<Phase>();
- phases.add(p);
- PhaseInterceptorChain chain =
- new PhaseInterceptorChain(phases);
- MAPAggregator map = new MAPAggregator();
- RMOutInterceptor rmi = new RMOutInterceptor();
- chain.add(rmi);
- chain.add(map);
- Iterator<Interceptor<? extends Message>> it = chain.iterator();
- assertSame("Unexpected order.", map, it.next());
- assertSame("Unexpected order.", rmi, it.next());
- }
-
@Test
public void testHandleRuntimeFault() throws NoSuchMethodException, SequenceFault, RMException {
Method[] mocked = new Method[] {
@@ -134,11 +111,6 @@ public class RMOutInterceptorTest extend
andReturn(rmpsOut).anyTimes();
InterceptorChain chain = control.createMock(InterceptorChain.class);
EasyMock.expect(message.getInterceptorChain()).andReturn(chain).anyTimes();
- chain.add(EasyMock.isA(RetransmissionInterceptor.class));
- EasyMock.expectLastCall();
- RetransmissionQueue queue = control.createMock(RetransmissionQueue.class);
- EasyMock.expect(manager.getRetransmissionQueue()).andReturn(queue).anyTimes();
- queue.start();
EasyMock.expectLastCall();
RMEndpoint rme = control.createMock(RMEndpoint.class);
@@ -169,8 +141,6 @@ public class RMOutInterceptorTest extend
control.replay();
interceptor.handle(message);
- assertSame(sid, rmpsOut.getSequence().getIdentifier());
- assertEquals(new Long(10), rmpsOut.getSequence().getMessageNumber());
control.verify();
}
Modified: cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/RMMessageTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/RMMessageTest.java?rev=1566556&r1=1566555&r2=1566556&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/RMMessageTest.java (original)
+++ cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/RMMessageTest.java Mon Feb 10 10:08:46 2014
@@ -53,8 +53,7 @@ public class RMMessageTest extends Asser
RMMessage msg = new RMMessage();
msg.setContent(new ByteArrayInputStream(DATA));
- assertEquals(DATA.length, msg.getSize());
- byte[] msgbytes = IOUtils.readBytesFromStream(msg.getInputStream());
+ byte[] msgbytes = IOUtils.readBytesFromStream(msg.getContent());
assertArrayEquals(DATA, msgbytes);
}
@@ -64,13 +63,10 @@ public class RMMessageTest extends Asser
RMMessage msg = new RMMessage();
CachedOutputStream co = new CachedOutputStream();
co.write(DATA);
- msg.setContent(co);
+ msg.setContent(co.getInputStream());
- assertEquals(DATA.length, msg.getSize());
- byte[] msgbytes = IOUtils.readBytesFromStream(msg.getInputStream());
+ byte[] msgbytes = IOUtils.readBytesFromStream(msg.getContent());
assertArrayEquals(DATA, msgbytes);
-
- assertEquals(co, msg.getCachedOutputStream());
}
}
Modified: cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreTestBase.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreTestBase.java?rev=1566556&r1=1566555&r2=1566556&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreTestBase.java (original)
+++ cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreTestBase.java Mon Feb 10 10:08:46 2014
@@ -30,7 +30,6 @@ import java.util.Date;
import java.util.List;
import org.apache.cxf.helpers.IOUtils;
-import org.apache.cxf.io.CachedOutputStream;
import org.apache.cxf.ws.addressing.EndpointReferenceType;
import org.apache.cxf.ws.addressing.Names;
import org.apache.cxf.ws.rm.DestinationSequence;
@@ -220,13 +219,13 @@ public abstract class RMTxStoreTestBase
Identifier sid1 = new Identifier();
sid1.setValue("sequence1");
- EasyMock.expect(msg1.getMessageNumber()).andReturn(ONE);
- EasyMock.expect(msg2.getMessageNumber()).andReturn(ONE);
+ EasyMock.expect(msg1.getMessageNumber()).andReturn(ONE).anyTimes();
+ EasyMock.expect(msg2.getMessageNumber()).andReturn(ONE).anyTimes();
byte[] bytes = new byte[89];
- EasyMock.expect(msg1.getInputStream()).andReturn(new ByteArrayInputStream(bytes));
- EasyMock.expect(msg1.getSize()).andReturn((long)bytes.length);
- EasyMock.expect(msg2.getInputStream()).andReturn(new ByteArrayInputStream(bytes));
- EasyMock.expect(msg2.getSize()).andReturn((long)bytes.length);
+ EasyMock.expect(msg1.getContent()).andReturn(new ByteArrayInputStream(bytes)).anyTimes();
+ EasyMock.expect(msg2.getContent()).andReturn(new ByteArrayInputStream(bytes)).anyTimes();
+ EasyMock.expect(msg1.getAttachments()).andReturn(new ArrayList<InputStream>()).anyTimes();
+ EasyMock.expect(msg2.getAttachments()).andReturn(new ArrayList<InputStream>()).anyTimes();
control.replay();
@@ -244,8 +243,7 @@ public abstract class RMTxStoreTestBase
control.reset();
EasyMock.expect(msg1.getMessageNumber()).andReturn(ONE);
- EasyMock.expect(msg1.getInputStream()).andReturn(new ByteArrayInputStream(bytes));
- EasyMock.expect(msg1.getSize()).andReturn((long)bytes.length);
+ EasyMock.expect(msg1.getContent()).andReturn(new ByteArrayInputStream(bytes));
control.replay();
con = getConnection();
@@ -262,12 +260,12 @@ public abstract class RMTxStoreTestBase
control.verify();
control.reset();
- EasyMock.expect(msg1.getMessageNumber()).andReturn(TEN);
- EasyMock.expect(msg2.getMessageNumber()).andReturn(TEN);
- EasyMock.expect(msg1.getInputStream()).andReturn(new ByteArrayInputStream(bytes));
- EasyMock.expect(msg1.getSize()).andReturn((long)bytes.length);
- EasyMock.expect(msg2.getInputStream()).andReturn(new ByteArrayInputStream(bytes));
- EasyMock.expect(msg2.getSize()).andReturn((long)bytes.length);
+ EasyMock.expect(msg1.getMessageNumber()).andReturn(TEN).anyTimes();
+ EasyMock.expect(msg2.getMessageNumber()).andReturn(TEN).anyTimes();
+ EasyMock.expect(msg1.getContent()).andReturn(new ByteArrayInputStream(bytes)).anyTimes();
+ EasyMock.expect(msg2.getContent()).andReturn(new ByteArrayInputStream(bytes)).anyTimes();
+ EasyMock.expect(msg1.getAttachments()).andReturn(new ArrayList<InputStream>()).anyTimes();
+ EasyMock.expect(msg2.getAttachments()).andReturn(new ArrayList<InputStream>()).anyTimes();
control.replay();
con = getConnection();
@@ -863,12 +861,11 @@ public abstract class RMTxStoreTestBase
private RMMessage createRMMessage(Long mn, String to) throws IOException {
RMMessage msg = control.createMock(RMMessage.class);
- EasyMock.expect(msg.getMessageNumber()).andReturn(mn);
- EasyMock.expect(msg.getTo()).andReturn(to);
+ EasyMock.expect(msg.getMessageNumber()).andReturn(mn).anyTimes();
+ EasyMock.expect(msg.getTo()).andReturn(to).anyTimes();
+ EasyMock.expect(msg.getAttachments()).andReturn(new ArrayList<InputStream>()).anyTimes();
byte[] value = ("Message " + mn.longValue()).getBytes();
- EasyMock.expect(msg.getInputStream()).andReturn(new ByteArrayInputStream(value));
- EasyMock.expect(msg.getSize()).andReturn((long)value.length);
- EasyMock.expect(msg.getCachedOutputStream()).andReturn(new CachedOutputStream()).anyTimes();
+ EasyMock.expect(msg.getContent()).andReturn(new ByteArrayInputStream(value)).anyTimes();
return msg;
}
@@ -932,7 +929,7 @@ public abstract class RMTxStoreTestBase
assertNull(msg.getTo());
}
try {
- InputStream actual = msg.getInputStream();
+ InputStream actual = msg.getContent();
assertEquals(new String("Message " + mn), IOUtils.readStringFromStream(actual));
} catch (IOException e) {
fail("failed to get the input stream");
Added: cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RMSoapInInterceptorTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RMSoapInInterceptorTest.java?rev=1566556&view=auto
==============================================================================
--- cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RMSoapInInterceptorTest.java (added)
+++ cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RMSoapInInterceptorTest.java Mon Feb 10 10:08:46 2014
@@ -0,0 +1,174 @@
+/**
+ * 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.cxf.ws.rm.soap;
+
+import java.io.InputStream;
+import java.util.Collection;
+import java.util.Set;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.binding.soap.SoapMessage;
+import org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor;
+import org.apache.cxf.binding.soap.interceptor.StartBodyInterceptor;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageImpl;
+import org.apache.cxf.ws.addressing.AddressingProperties;
+import org.apache.cxf.ws.rm.RM10Constants;
+import org.apache.cxf.ws.rm.RMContextUtils;
+import org.apache.cxf.ws.rm.RMProperties;
+import org.apache.cxf.ws.rm.v200702.AckRequestedType;
+import org.apache.cxf.ws.rm.v200702.SequenceAcknowledgement;
+import org.apache.cxf.ws.rm.v200702.SequenceAcknowledgement.AcknowledgementRange;
+import org.apache.cxf.ws.rm.v200702.SequenceType;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class RMSoapInInterceptorTest extends Assert {
+
+ private static final String SEQ_IDENTIFIER = "http://Business456.com/RM/ABC";
+ private static final Long ONE = new Long(1);
+ private static final Long MSG1_MESSAGE_NUMBER = ONE;
+ private static final Long MSG2_MESSAGE_NUMBER = new Long(2);
+
+ @Test
+ public void testGetUnderstoodHeaders() throws Exception {
+ RMSoapInInterceptor codec = new RMSoapInInterceptor();
+ Set<QName> headers = codec.getUnderstoodHeaders();
+ assertTrue("expected Sequence header", headers.contains(RM10Constants.SEQUENCE_QNAME));
+ assertTrue("expected SequenceAcknowledgment header",
+ headers.contains(RM10Constants.SEQUENCE_ACK_QNAME));
+ assertTrue("expected AckRequested header",
+ headers.contains(RM10Constants.ACK_REQUESTED_QNAME));
+ }
+
+ @Test
+ public void testDecodeSequence() throws XMLStreamException {
+ SoapMessage message = setUpInboundMessage("resources/Message1.xml");
+ RMSoapInInterceptor codec = new RMSoapInInterceptor();
+ codec.handleMessage(message);
+ RMProperties rmps = RMContextUtils.retrieveRMProperties(message, false);
+ SequenceType st = rmps.getSequence();
+ assertNotNull(st);
+ assertEquals(st.getIdentifier().getValue(), SEQ_IDENTIFIER);
+ assertEquals(st.getMessageNumber(), MSG1_MESSAGE_NUMBER);
+
+ assertNull(rmps.getAcks());
+ assertNull(rmps.getAcksRequested());
+
+ }
+
+ @Test
+ public void testDecodeAcknowledgements() throws XMLStreamException {
+ SoapMessage message = setUpInboundMessage("resources/Acknowledgment.xml");
+ RMSoapInInterceptor codec = new RMSoapInInterceptor();
+ codec.handleMessage(message);
+ RMProperties rmps = RMContextUtils.retrieveRMProperties(message, false);
+ Collection<SequenceAcknowledgement> acks = rmps.getAcks();
+ assertNotNull(acks);
+ assertEquals(1, acks.size());
+ SequenceAcknowledgement ack = acks.iterator().next();
+ assertNotNull(ack);
+ assertEquals(ack.getIdentifier().getValue(), SEQ_IDENTIFIER);
+ assertEquals(2, ack.getAcknowledgementRange().size());
+ AcknowledgementRange r1 = ack.getAcknowledgementRange().get(0);
+ AcknowledgementRange r2 = ack.getAcknowledgementRange().get(1);
+ verifyRange(r1, 1, 1);
+ verifyRange(r2, 3, 3);
+ assertNull(rmps.getSequence());
+ assertNull(rmps.getAcksRequested());
+ }
+
+ @Test
+ public void testDecodeAcknowledgements2() throws XMLStreamException {
+ SoapMessage message = setUpInboundMessage("resources/Acknowledgment2.xml");
+ RMSoapInInterceptor codec = new RMSoapInInterceptor();
+ codec.handleMessage(message);
+ RMProperties rmps = RMContextUtils.retrieveRMProperties(message, false);
+ Collection<SequenceAcknowledgement> acks = rmps.getAcks();
+ assertNotNull(acks);
+ assertEquals(1, acks.size());
+ SequenceAcknowledgement ack = acks.iterator().next();
+ assertNotNull(ack);
+ assertEquals(1, ack.getAcknowledgementRange().size());
+ AcknowledgementRange r1 = ack.getAcknowledgementRange().get(0);
+ verifyRange(r1, 1, 3);
+ assertNull(rmps.getSequence());
+ assertNull(rmps.getAcksRequested());
+ }
+
+ private void verifyRange(AcknowledgementRange r, int i, int j) {
+ assertNotNull(r);
+ if (i > 0) {
+ assertNotNull(r.getLower());
+ assertEquals(i, r.getLower().longValue());
+ }
+ if (j > 0) {
+ assertNotNull(r.getUpper());
+ assertEquals(j, r.getUpper().longValue());
+ }
+ }
+
+ @Test
+ public void testDecodeAcksRequested() throws XMLStreamException {
+ SoapMessage message = setUpInboundMessage("resources/Retransmission.xml");
+ RMSoapInInterceptor codec = new RMSoapInInterceptor();
+ codec.handleMessage(message);
+ RMProperties rmps = RMContextUtils.retrieveRMProperties(message, false);
+ Collection<AckRequestedType> requested = rmps.getAcksRequested();
+ assertNotNull(requested);
+ assertEquals(1, requested.size());
+ AckRequestedType ar = requested.iterator().next();
+ assertNotNull(ar);
+ assertEquals(ar.getIdentifier().getValue(), SEQ_IDENTIFIER);
+
+ SequenceType s = rmps.getSequence();
+ assertNotNull(s);
+ assertEquals(s.getIdentifier().getValue(), SEQ_IDENTIFIER);
+ assertEquals(s.getMessageNumber(), MSG2_MESSAGE_NUMBER);
+
+ assertNull(rmps.getAcks());
+ }
+
+ private SoapMessage setUpInboundMessage(String resource) throws XMLStreamException {
+ Message message = new MessageImpl();
+ SoapMessage soapMessage = new SoapMessage(message);
+ RMProperties rmps = new RMProperties();
+ rmps.exposeAs(RM10Constants.NAMESPACE_URI);
+ RMContextUtils.storeRMProperties(soapMessage, rmps, false);
+ AddressingProperties maps = new AddressingProperties();
+ RMContextUtils.storeMAPs(maps, soapMessage, false, false);
+ message.put(Message.SCHEMA_VALIDATION_ENABLED, false);
+ InputStream is = RMSoapInInterceptorTest.class.getResourceAsStream(resource);
+ assertNotNull(is);
+ XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(is);
+ soapMessage.setContent(XMLStreamReader.class, reader);
+ ReadHeadersInterceptor rji = new ReadHeadersInterceptor(BusFactory.getDefaultBus());
+ rji.handleMessage(soapMessage);
+ StartBodyInterceptor sbi = new StartBodyInterceptor();
+ sbi.handleMessage(soapMessage);
+ return soapMessage;
+ }
+}
Modified: cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RMSoapOutInterceptorTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RMSoapOutInterceptorTest.java?rev=1566556&r1=1566555&r2=1566556&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RMSoapOutInterceptorTest.java (original)
+++ cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RMSoapOutInterceptorTest.java Mon Feb 10 10:08:46 2014
@@ -19,27 +19,21 @@
package org.apache.cxf.ws.rm.soap;
-import java.io.InputStream;
-import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
-import java.util.List;
import java.util.Set;
import javax.xml.namespace.QName;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.SOAPConstants;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPMessage;
import org.w3c.dom.Element;
-import org.apache.cxf.BusFactory;
import org.apache.cxf.binding.soap.SoapFault;
import org.apache.cxf.binding.soap.SoapMessage;
-import org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor;
-import org.apache.cxf.binding.soap.interceptor.StartBodyInterceptor;
-import org.apache.cxf.headers.Header;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.ExchangeImpl;
import org.apache.cxf.message.Message;
@@ -56,24 +50,15 @@ import org.apache.cxf.ws.rm.v200702.AckR
import org.apache.cxf.ws.rm.v200702.Identifier;
import org.apache.cxf.ws.rm.v200702.ObjectFactory;
import org.apache.cxf.ws.rm.v200702.SequenceAcknowledgement;
-import org.apache.cxf.ws.rm.v200702.SequenceAcknowledgement.AcknowledgementRange;
import org.apache.cxf.ws.rm.v200702.SequenceType;
-import org.easymock.EasyMock;
-import org.easymock.IMocksControl;
import org.junit.Assert;
-import org.junit.Before;
import org.junit.Test;
public class RMSoapOutInterceptorTest extends Assert {
- private static final String SEQ_IDENTIFIER = "http://Business456.com/RM/ABC";
private static final Long ONE = new Long(1);
private static final Long TEN = new Long(10);
- private static final Long MSG1_MESSAGE_NUMBER = ONE;
- private static final Long MSG2_MESSAGE_NUMBER = new Long(2);
-
- private IMocksControl control;
private SequenceType s1;
private SequenceType s2;
@@ -81,11 +66,6 @@ public class RMSoapOutInterceptorTest ex
private SequenceAcknowledgement ack2;
private AckRequestedType ar1;
private AckRequestedType ar2;
-
- @Before
- public void setUp() {
- control = EasyMock.createNiceControl();
- }
@Test
public void testGetUnderstoodHeaders() throws Exception {
@@ -97,54 +77,6 @@ public class RMSoapOutInterceptorTest ex
assertTrue("expected AckRequested header",
headers.contains(RM10Constants.ACK_REQUESTED_QNAME));
}
-
- @Test
- public void testHandleMessage() throws NoSuchMethodException {
- Method m = RMSoapOutInterceptor.class.getDeclaredMethod("mediate",
- new Class[] {SoapMessage.class});
- RMSoapOutInterceptor codec =
- EasyMock.createMockBuilder(RMSoapOutInterceptor.class)
- .addMockedMethod(m).createMock(control);
- SoapMessage msg = control.createMock(SoapMessage.class);
- codec.mediate(msg);
- EasyMock.expectLastCall();
-
- control.replay();
- codec.handleMessage(msg);
- control.verify();
- }
-
- @Test
- public void testMediate() throws NoSuchMethodException, XMLStreamException {
- Method m1 = RMSoapOutInterceptor.class.getDeclaredMethod("encode",
- new Class[] {SoapMessage.class});
- Method m2 = RMSoapOutInterceptor.class.getDeclaredMethod("decode",
- new Class[] {SoapMessage.class});
- RMSoapOutInterceptor codec =
- EasyMock.createMockBuilder(RMSoapOutInterceptor.class)
- .addMockedMethods(m1, m2).createMock(control);
-
- SoapMessage msg = control.createMock(SoapMessage.class);
- Exchange exchange = control.createMock(Exchange.class);
- EasyMock.expect(msg.getExchange()).andReturn(exchange);
- EasyMock.expect(exchange.getOutMessage()).andReturn(msg);
- codec.encode(msg);
- EasyMock.expectLastCall();
-
- control.replay();
- codec.mediate(msg);
- control.verify();
-
- control.reset();
- EasyMock.expect(msg.getExchange()).andReturn(null);
- codec.decode(msg);
- EasyMock.expectLastCall();
-
- control.replay();
- codec.mediate(msg);
- control.verify();
-
- }
@Test
public void testEncode() throws Exception {
@@ -249,94 +181,6 @@ public class RMSoapOutInterceptorTest ex
}
- @Test
- public void testDecodeSequence() throws XMLStreamException {
- SoapMessage message = setUpInboundMessage("resources/Message1.xml");
- RMSoapOutInterceptor codec = new RMSoapOutInterceptor();
- codec.handleMessage(message);
- RMProperties rmps = RMContextUtils.retrieveRMProperties(message, false);
- SequenceType st = rmps.getSequence();
- assertNotNull(st);
- assertEquals(st.getIdentifier().getValue(), SEQ_IDENTIFIER);
- assertEquals(st.getMessageNumber(), MSG1_MESSAGE_NUMBER);
-
- assertNull(rmps.getAcks());
- assertNull(rmps.getAcksRequested());
-
- }
-
- @Test
- public void testDecodeAcknowledgements() throws XMLStreamException {
- SoapMessage message = setUpInboundMessage("resources/Acknowledgment.xml");
- RMSoapOutInterceptor codec = new RMSoapOutInterceptor();
- codec.handleMessage(message);
- RMProperties rmps = RMContextUtils.retrieveRMProperties(message, false);
- Collection<SequenceAcknowledgement> acks = rmps.getAcks();
- assertNotNull(acks);
- assertEquals(1, acks.size());
- SequenceAcknowledgement ack = acks.iterator().next();
- assertNotNull(ack);
- assertEquals(ack.getIdentifier().getValue(), SEQ_IDENTIFIER);
- assertEquals(2, ack.getAcknowledgementRange().size());
- AcknowledgementRange r1 = ack.getAcknowledgementRange().get(0);
- AcknowledgementRange r2 = ack.getAcknowledgementRange().get(1);
- verifyRange(r1, 1, 1);
- verifyRange(r2, 3, 3);
- assertNull(rmps.getSequence());
- assertNull(rmps.getAcksRequested());
- }
-
- @Test
- public void testDecodeAcknowledgements2() throws XMLStreamException {
- SoapMessage message = setUpInboundMessage("resources/Acknowledgment2.xml");
- RMSoapOutInterceptor codec = new RMSoapOutInterceptor();
- codec.handleMessage(message);
- RMProperties rmps = RMContextUtils.retrieveRMProperties(message, false);
- Collection<SequenceAcknowledgement> acks = rmps.getAcks();
- assertNotNull(acks);
- assertEquals(1, acks.size());
- SequenceAcknowledgement ack = acks.iterator().next();
- assertNotNull(ack);
- assertEquals(1, ack.getAcknowledgementRange().size());
- AcknowledgementRange r1 = ack.getAcknowledgementRange().get(0);
- verifyRange(r1, 1, 3);
- assertNull(rmps.getSequence());
- assertNull(rmps.getAcksRequested());
- }
-
- private void verifyRange(AcknowledgementRange r, int i, int j) {
- assertNotNull(r);
- if (i > 0) {
- assertNotNull(r.getLower());
- assertEquals(i, r.getLower().longValue());
- }
- if (j > 0) {
- assertNotNull(r.getUpper());
- assertEquals(j, r.getUpper().longValue());
- }
- }
-
- @Test
- public void testDecodeAcksRequested() throws XMLStreamException {
- SoapMessage message = setUpInboundMessage("resources/Retransmission.xml");
- RMSoapOutInterceptor codec = new RMSoapOutInterceptor();
- codec.handleMessage(message);
- RMProperties rmps = RMContextUtils.retrieveRMProperties(message, false);
- Collection<AckRequestedType> requested = rmps.getAcksRequested();
- assertNotNull(requested);
- assertEquals(1, requested.size());
- AckRequestedType ar = requested.iterator().next();
- assertNotNull(ar);
- assertEquals(ar.getIdentifier().getValue(), SEQ_IDENTIFIER);
-
- SequenceType s = rmps.getSequence();
- assertNotNull(s);
- assertEquals(s.getIdentifier().getValue(), SEQ_IDENTIFIER);
- assertEquals(s.getMessageNumber(), MSG2_MESSAGE_NUMBER);
-
- assertNull(rmps.getAcks());
- }
-
private void setUpOutbound() {
ObjectFactory factory = new ObjectFactory();
s1 = factory.createSequenceType();
@@ -373,9 +217,9 @@ public class RMSoapOutInterceptorTest ex
}
private SoapMessage setupOutboundMessage() throws Exception {
- Exchange ex = new ExchangeImpl();
+ Exchange ex = new ExchangeImpl();
Message message = new MessageImpl();
- SoapMessage soapMessage = new SoapMessage(message);
+ SoapMessage soapMessage = new SoapMessage(message);
RMProperties rmps = new RMProperties();
rmps.exposeAs(RM10Constants.NAMESPACE_URI);
RMContextUtils.storeRMProperties(soapMessage, rmps, true);
@@ -383,6 +227,11 @@ public class RMSoapOutInterceptorTest ex
RMContextUtils.storeMAPs(maps, soapMessage, true, false);
ex.setOutMessage(soapMessage);
soapMessage.setExchange(ex);
+ MessageFactory factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
+ SOAPMessage soap = factory.createMessage();
+ QName bodyName = new QName("http://cxf.apache.org", "dummy", "d");
+ soap.getSOAPBody().addBodyElement(bodyName);
+ soapMessage.setContent(SOAPMessage.class, soap);
return soapMessage;
}
@@ -399,21 +248,24 @@ public class RMSoapOutInterceptorTest ex
SoapMessage soapMessage = new SoapMessage(message);
ex.setOutFaultMessage(soapMessage);
soapMessage.setExchange(ex);
+ MessageFactory factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
+ SOAPMessage soap = factory.createMessage();
+ soap.getSOAPBody().addFault();
+ soapMessage.setContent(SOAPMessage.class, soap);
return soapMessage;
}
private void verifyHeaders(SoapMessage message, String... names) {
- List<Header> header = message.getHeaders();
+ SOAPMessage content = message.getContent(SOAPMessage.class);
// check all expected headers are present
for (String name : names) {
boolean found = false;
- Iterator<Header> iter = header.iterator();
- while (iter.hasNext()) {
- Object obj = iter.next().getObject();
- if (obj instanceof Element) {
- Element elem = (Element) obj;
+ try {
+ Iterator<?> elems = content.getSOAPHeader().getChildElements();
+ while (elems.hasNext()) {
+ Element elem = (Element)elems.next();
String namespace = elem.getNamespaceURI();
String localName = elem.getLocalName();
if (RM10Constants.NAMESPACE_URI.equals(namespace)
@@ -426,17 +278,15 @@ public class RMSoapOutInterceptorTest ex
break;
}
}
- }
+ } catch (SOAPException e) { /* failure will result in not found */ }
assertTrue("Could not find header element " + name, found);
}
// no other headers should be present
-
- Iterator<Header> iter1 = header.iterator();
- while (iter1.hasNext()) {
- Object obj = iter1.next().getObject();
- if (obj instanceof Element) {
- Element elem = (Element) obj;
+ try {
+ Iterator<?> elems = content.getSOAPHeader().getChildElements();
+ while (elems.hasNext()) {
+ Element elem = (Element)elems.next();
String namespace = elem.getNamespaceURI();
String localName = elem.getLocalName();
assertTrue(RM10Constants.NAMESPACE_URI.equals(namespace)
@@ -450,26 +300,6 @@ public class RMSoapOutInterceptorTest ex
}
assertTrue("Unexpected header element " + localName, found);
}
- }
- }
-
- private SoapMessage setUpInboundMessage(String resource) throws XMLStreamException {
- Message message = new MessageImpl();
- SoapMessage soapMessage = new SoapMessage(message);
- RMProperties rmps = new RMProperties();
- rmps.exposeAs(RM10Constants.NAMESPACE_URI);
- RMContextUtils.storeRMProperties(soapMessage, rmps, false);
- AddressingProperties maps = new AddressingProperties();
- RMContextUtils.storeMAPs(maps, soapMessage, false, false);
- message.put(MessaRMSoapOutInterceptorTestENABLED, false);
- InputStream is = RMSoapInterceptorTest.class.getResourceAsStream(resource);
- assertNotNull(is);
- XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(is);
- soapMessage.setContent(XMLStreamReader.class, reader);
- ReadHeadersInterceptor rji = new ReadHeadersInterceptor(BusFactory.getDefaultBus());
- rji.handleMessage(soapMessage);
- StartBodyInterceptor sbi = new StartBodyInterceptor();
- sbi.handleMessage(soapMessage);
- return soapMessage;
+ } catch (SOAPException e) { /* failure would have been caught before */ }
}
}
Modified: cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RetransmissionQueueImplTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RetransmissionQueueImplTest.java?rev=1566556&r1=1566555&r2=1566556&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RetransmissionQueueImplTest.java (original)
+++ cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RetransmissionQueueImplTest.java Mon Feb 10 10:08:46 2014
@@ -25,6 +25,7 @@ import java.util.Date;
import java.util.List;
import java.util.concurrent.Executor;
+import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.message.Message;
import org.apache.cxf.ws.rm.RMConfiguration;
import org.apache.cxf.ws.rm.RMEndpoint;
@@ -101,7 +102,7 @@ public class RetransmissionQueueImplTest
@Test
public void testResendCandidateCtor() {
- Message message = createMock(Message.class);
+ SoapMessage message = createMock(SoapMessage.class);
setupMessagePolicies(message);
control.replay();
long now = System.currentTimeMillis();
@@ -117,7 +118,7 @@ public class RetransmissionQueueImplTest
@Test
public void testResendCandidateAttempted() {
- Message message = createMock(Message.class);
+ SoapMessage message = createMock(SoapMessage.class);
setupMessagePolicies(message);
ready(true);
long now = System.currentTimeMillis();
@@ -133,7 +134,7 @@ public class RetransmissionQueueImplTest
@Test
public void testResendCandidateMaxRetries() {
- Message message = createMock(Message.class);
+ SoapMessage message = createMock(SoapMessage.class);
setupMessagePolicies(message);
setupRetryPolicy(message);
@@ -159,9 +160,9 @@ public class RetransmissionQueueImplTest
@Test
public void testCacheUnacknowledged() {
- Message message1 = setUpMessage("sequence1");
- Message message2 = setUpMessage("sequence2");
- Message message3 = setUpMessage("sequence1");
+ SoapMessage message1 = setUpMessage("sequence1");
+ SoapMessage message2 = setUpMessage("sequence2");
+ SoapMessage message3 = setUpMessage("sequence1");
setupMessagePolicies(message1);
setupMessagePolicies(message2);
@@ -215,11 +216,9 @@ public class RetransmissionQueueImplTest
List<RetransmissionQueueImpl.ResendCandidate> sequenceList =
new ArrayList<RetransmissionQueueImpl.ResendCandidate>();
queue.getUnacknowledged().put("sequence1", sequenceList);
- Message message1 =
- setUpMessage("sequence1", messageNumbers[0]);
+ SoapMessage message1 = setUpMessage("sequence1", messageNumbers[0]);
setupMessagePolicies(message1);
- Message message2 =
- setUpMessage("sequence1", messageNumbers[1]);
+ SoapMessage message2 = setUpMessage("sequence1", messageNumbers[1]);
setupMessagePolicies(message2);
ready(false);
@@ -244,11 +243,9 @@ public class RetransmissionQueueImplTest
List<RetransmissionQueueImpl.ResendCandidate> sequenceList =
new ArrayList<RetransmissionQueueImpl.ResendCandidate>();
queue.getUnacknowledged().put("sequence1", sequenceList);
- Message message1 =
- setUpMessage("sequence1", messageNumbers[0]);
+ SoapMessage message1 = setUpMessage("sequence1", messageNumbers[0]);
setupMessagePolicies(message1);
- Message message2 =
- setUpMessage("sequence1", messageNumbers[1]);
+ SoapMessage message2 = setUpMessage("sequence1", messageNumbers[1]);
setupMessagePolicies(message2);
ready(false);
@@ -273,11 +270,9 @@ public class RetransmissionQueueImplTest
List<RetransmissionQueueImpl.ResendCandidate> sequenceList =
new ArrayList<RetransmissionQueueImpl.ResendCandidate>();
queue.getUnacknowledged().put("sequence1", sequenceList);
- Message message1 =
- setUpMessage("sequence1", messageNumbers[0]);
+ SoapMessage message1 = setUpMessage("sequence1", messageNumbers[0]);
setupMessagePolicies(message1);
- Message message2 =
- setUpMessage("sequence1", messageNumbers[1]);
+ SoapMessage message2 = setUpMessage("sequence1", messageNumbers[1]);
setupMessagePolicies(message2);
ready(false);
@@ -308,11 +303,9 @@ public class RetransmissionQueueImplTest
new ArrayList<RetransmissionQueueImpl.ResendCandidate>();
queue.getUnacknowledged().put("sequence1", sequenceList);
- Message message1 =
- setUpMessage("sequence1", messageNumbers[0], false);
+ SoapMessage message1 = setUpMessage("sequence1", messageNumbers[0], false);
setupMessagePolicies(message1);
- Message message2 =
- setUpMessage("sequence1", messageNumbers[1], false);
+ SoapMessage message2 = setUpMessage("sequence1", messageNumbers[1], false);
setupMessagePolicies(message2);
ready(false);
@@ -344,19 +337,16 @@ public class RetransmissionQueueImplTest
queue.start();
}
- private Message setUpMessage(String sid) {
+ private SoapMessage setUpMessage(String sid) {
return setUpMessage(sid, null);
}
- private Message setUpMessage(String sid, Long messageNumber) {
+ private SoapMessage setUpMessage(String sid, Long messageNumber) {
return setUpMessage(sid, messageNumber, true);
}
- private Message setUpMessage(String sid,
- Long messageNumber,
- boolean storeSequence) {
- Message message =
- createMock(Message.class);
+ private SoapMessage setUpMessage(String sid, Long messageNumber, boolean storeSequence) {
+ SoapMessage message = createMock(SoapMessage.class);
if (storeSequence) {
setUpSequenceType(message, sid, messageNumber);
}
@@ -388,9 +378,7 @@ public class RetransmissionQueueImplTest
}
}
- private SequenceType setUpSequenceType(Message message,
- String sid,
- Long messageNumber) {
+ private SequenceType setUpSequenceType(Message message, String sid, Long messageNumber) {
RMProperties rmps = createMock(RMProperties.class);
if (message != null) {
message.get(RMMessageConstants.RM_PROPERTIES_OUTBOUND);
@@ -417,9 +405,7 @@ public class RetransmissionQueueImplTest
return sequence;
}
- private SourceSequence setUpSequence(String sid,
- Long[] messageNumbers,
- boolean[] isAcked) {
+ private SourceSequence setUpSequence(String sid, Long[] messageNumbers, boolean[] isAcked) {
SourceSequence sequence = createMock(SourceSequence.class);
Identifier id = createMock(Identifier.class);
sequence.getIdentifier();
@@ -467,7 +453,7 @@ public class RetransmissionQueueImplTest
Message message;
boolean includeAckRequested;
- public void resend(Message ctx, boolean requestAcknowledge) {
+ public void resend(SoapMessage ctx, boolean requestAcknowledge) {
message = ctx;
includeAckRequested = requestAcknowledge;
}