1616
1717package org .springframework .ws .soap .saaj ;
1818
19+ import java .util .ArrayList ;
1920import java .util .Iterator ;
21+ import java .util .List ;
2022import javax .xml .namespace .QName ;
2123import javax .xml .soap .SOAPException ;
2224import javax .xml .soap .SOAPHeader ;
@@ -42,12 +44,12 @@ abstract class SaajSoapHeader extends SaajSoapElement implements SoapHeader {
4244
4345 public Iterator examineAllHeaderElements () throws SoapHeaderException {
4446 Iterator iterator = getImplementation ().examineAllHeaderElements (getSaajHeader ());
45- return new SaajSoapHeaderElementIterator (iterator );
47+ return createSaajSoapHeaderElementIterator (iterator );
4648 }
4749
4850 public Iterator examineMustUnderstandHeaderElements (String actorOrRole ) throws SoapHeaderException {
4951 Iterator iterator = getImplementation ().examineMustUnderstandHeaderElements (getSaajHeader (), actorOrRole );
50- return new SaajSoapHeaderElementIterator (iterator );
52+ return createSaajSoapHeaderElementIterator (iterator );
5153 }
5254
5355 public SoapHeaderElement addHeaderElement (QName name ) throws SoapHeaderException {
@@ -68,6 +70,17 @@ public Result getResult() {
6870 return getImplementation ().getResult (getSaajHeader ());
6971 }
7072
73+ private Iterator createSaajSoapHeaderElementIterator (Iterator iterator ) {
74+ List result = new ArrayList ();
75+ while (iterator .hasNext ()) {
76+ Object o = iterator .next ();
77+ if (o instanceof SOAPHeaderElement ) {
78+ result .add (o );
79+ }
80+ }
81+ return new SaajSoapHeaderElementIterator (result .iterator ());
82+ }
83+
7184 protected static class SaajSoapHeaderElementIterator implements Iterator {
7285
7386 private final Iterator iterator ;
0 commit comments