--- old/src/share/jaxws_classes/com/sun/xml/internal/ws/encoding/MtomCodec.java 2013-08-13 18:18:00.211914745 +0200 +++ new/src/share/jaxws_classes/com/sun/xml/internal/ws/encoding/MtomCodec.java 2013-08-13 18:18:00.151912088 +0200 @@ -41,6 +41,7 @@ import com.sun.xml.internal.ws.message.MimeAttachmentSet; import com.sun.xml.internal.ws.streaming.XMLStreamWriterUtil; import com.sun.xml.internal.ws.util.ByteArrayDataSource; +import com.sun.xml.internal.ws.util.xml.NamespaceContextExAdaper; import com.sun.xml.internal.ws.util.xml.XMLStreamReaderFilter; import com.sun.xml.internal.ws.util.xml.XMLStreamWriterFilter; import com.sun.xml.internal.ws.streaming.MtomStreamWriter; @@ -374,8 +375,11 @@ private void writeBinary(ByteArrayBuffer bab) { try { mtomAttachments.add(bab); - writer.setPrefix("xop", XOP_NAMESPACEURI); - writer.writeNamespace("xop", XOP_NAMESPACEURI); + String prefix = writer.getPrefix(XOP_NAMESPACEURI); + if (prefix == null || !prefix.equals("xop")) { + writer.setPrefix("xop", XOP_NAMESPACEURI); + writer.writeNamespace("xop", XOP_NAMESPACEURI); + } writer.writeStartElement(XOP_NAMESPACEURI, XOP_LOCALNAME); writer.writeAttribute("href", "cid:"+bab.contentId); writer.writeEndElement(); @@ -513,8 +517,7 @@ @Override public NamespaceContextEx getNamespaceContext() { - NamespaceContext nsContext = reader.getNamespaceContext(); - return new MtomNamespaceContextEx(nsContext); + return new NamespaceContextExAdaper(reader.getNamespaceContext()); } @Override @@ -522,35 +525,6 @@ throw new UnsupportedOperationException(); } - private static class MtomNamespaceContextEx implements NamespaceContextEx { - private final NamespaceContext nsContext; - - public MtomNamespaceContextEx(NamespaceContext nsContext) { - this.nsContext = nsContext; - } - - @Override - public Iterator iterator() { - throw new UnsupportedOperationException(); - } - - @Override - public String getNamespaceURI(String prefix) { - return nsContext.getNamespaceURI(prefix); - } - - @Override - public String getPrefix(String namespaceURI) { - return nsContext.getPrefix(namespaceURI); - } - - @Override - public Iterator getPrefixes(String namespaceURI) { - return nsContext.getPrefixes(namespaceURI); - } - - } - @Override public int getTextLength() { if (xopReferencePresent) {