23
23
import javax .security .auth .callback .Callback ;
24
24
import javax .security .auth .callback .CallbackHandler ;
25
25
import javax .security .auth .callback .UnsupportedCallbackException ;
26
+ import javax .xml .soap .SOAPException ;
26
27
27
28
import org .apache .axiom .soap .SOAPEnvelope ;
28
29
import org .apache .axiom .soap .SOAPFactory ;
48
49
import org .springframework .ws .soap .axiom .AxiomSoapMessage ;
49
50
import org .springframework .ws .soap .axiom .support .AxiomUtils ;
50
51
import org .springframework .ws .soap .saaj .SaajSoapMessage ;
52
+ import org .springframework .ws .soap .saaj .SaajSoapMessageException ;
51
53
import org .springframework .ws .soap .security .AbstractWsSecurityInterceptor ;
52
54
import org .springframework .ws .soap .security .WsSecuritySecurementException ;
53
55
import org .springframework .ws .soap .security .WsSecurityValidationException ;
@@ -590,8 +592,14 @@ private void processPrincipal(Vector results) {
590
592
/** Converts the given {@link SoapMessage} into a {@link Document}. */
591
593
private Document toDocument (SoapMessage soapMessage ) {
592
594
if (soapMessage instanceof SaajSoapMessage ) {
593
- SaajSoapMessage saajMessage = (SaajSoapMessage ) soapMessage ;
594
- return saajMessage .getSaajMessage ().getSOAPPart ();
595
+ javax .xml .soap .SOAPMessage saajMessage = ((SaajSoapMessage ) soapMessage ).getSaajMessage ();
596
+ try {
597
+ saajMessage .saveChanges ();
598
+ }
599
+ catch (SOAPException ex ) {
600
+ throw new SaajSoapMessageException ("Could not save changes" , ex );
601
+ }
602
+ return saajMessage .getSOAPPart ();
595
603
}
596
604
else if (soapMessage instanceof AxiomSoapMessage ) {
597
605
AxiomSoapMessage axiomMessage = (AxiomSoapMessage ) soapMessage ;
@@ -608,7 +616,16 @@ else if (soapMessage instanceof AxiomSoapMessage) {
608
616
* for a {@link SaajSoapMessage}.
609
617
*/
610
618
private void replaceMessage (SoapMessage soapMessage , Document envelope ) {
611
- if (soapMessage instanceof AxiomSoapMessage ) {
619
+ if (soapMessage instanceof SaajSoapMessage ) {
620
+ javax .xml .soap .SOAPMessage saajMessage = ((SaajSoapMessage ) soapMessage ).getSaajMessage ();
621
+ try {
622
+ saajMessage .saveChanges ();
623
+ }
624
+ catch (SOAPException ex ) {
625
+ throw new SaajSoapMessageException ("Could not save changes" , ex );
626
+ }
627
+ }
628
+ else if (soapMessage instanceof AxiomSoapMessage ) {
612
629
// construct a new Axiom message with the processed envelope
613
630
AxiomSoapMessage axiomMessage = (AxiomSoapMessage ) soapMessage ;
614
631
SOAPEnvelope envelopeFromDOMDocument = AxiomUtils .toEnvelope (envelope );
0 commit comments