Repository: cxf Updated Branches: refs/heads/3.0.x-fixes e08ab4358 -> e5e5ebd3f
[CXF-6653] NPE may result while generating a SequenceFault in WS-RM 1.1 Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/e5e5ebd3 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/e5e5ebd3 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/e5e5ebd3 Branch: refs/heads/3.0.x-fixes Commit: e5e5ebd3f0fd59f9e29ce1087c990c8e7af870c1 Parents: e08ab43 Author: Akitoshi Yoshida <[email protected]> Authored: Thu Oct 22 17:35:48 2015 +0200 Committer: Akitoshi Yoshida <[email protected]> Committed: Thu Oct 22 17:40:10 2015 +0200 ---------------------------------------------------------------------- .../java/org/apache/cxf/ws/rm/EncoderDecoder11Impl.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/e5e5ebd3/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder11Impl.java ---------------------------------------------------------------------- diff --git a/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder11Impl.java b/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder11Impl.java index a8acff6..5740460 100644 --- a/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder11Impl.java +++ b/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder11Impl.java @@ -41,6 +41,7 @@ import org.apache.cxf.ws.rm.v200702.AckRequestedType; import org.apache.cxf.ws.rm.v200702.CloseSequenceType; import org.apache.cxf.ws.rm.v200702.CreateSequenceResponseType; import org.apache.cxf.ws.rm.v200702.CreateSequenceType; +import org.apache.cxf.ws.rm.v200702.DetailType; import org.apache.cxf.ws.rm.v200702.Identifier; import org.apache.cxf.ws.rm.v200702.SequenceAcknowledgement; import org.apache.cxf.ws.rm.v200702.SequenceFaultType; @@ -142,16 +143,23 @@ public final class EncoderDecoder11Impl extends EncoderDecoder { } Element data = doc.getDocumentElement(); if (data != null) { - flt.getDetail().getAny().add(data); + addDetail(flt, data); } data = sf.getExtraDetail(); if (data != null) { - flt.getDetail().getAny().add(data); + addDetail(flt, data); } marshaller.marshal(new JAXBElement<SequenceFaultType>(RM11Constants.SEQUENCE_FAULT_QNAME, SequenceFaultType.class, flt), header); } + private static void addDetail(SequenceFaultType sft, Element data) { + if (!sft.isSetDetail()) { + sft.setDetail(new DetailType()); + } + sft.getDetail().getAny().add(data); + } + public Element encodeSequenceAcknowledgement(SequenceAcknowledgement ack) throws JAXBException { Document doc = DOMUtils.createDocument(); Marshaller marshaller = getContext().createMarshaller();
