Merge
authorthartmann
Mon, 19 Jan 2015 11:35:45 +0000
changeset 28644 a70f5680dbab
parent 28643 a665e19ca007 (current diff)
parent 28642 a42fefc69922 (diff)
child 28647 f44908f03772
Merge
corba/src/java.corba/share/classes/javax/transaction/InvalidTransactionException.java
corba/src/java.corba/share/classes/javax/transaction/TransactionRequiredException.java
corba/src/java.corba/share/classes/javax/transaction/TransactionRolledbackException.java
corba/src/java.corba/share/classes/javax/transaction/package.html
corba/src/java.sql/share/classes/javax/transaction/xa/XAException.java
corba/src/java.sql/share/classes/javax/transaction/xa/XAResource.java
corba/src/java.sql/share/classes/javax/transaction/xa/Xid.java
corba/src/java.sql/share/classes/javax/transaction/xa/package.html
hotspot/test/runtime/7194254/Test7194254.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/LazyEnvelopeSource.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/SOAPExceptionImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/HttpSOAPConnection.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/HttpSOAPConnectionFactory.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_de.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_es.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_fr.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_it.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_ja.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_ko.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_pt_BR.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_zh_CN.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_zh_TW.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/Header.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/MessagingException.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/MultipartDataSource.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/BMMimeMultipart.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ContentDisposition.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ContentType.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/HeaderTokenizer.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/InternetHeaders.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimeBodyPart.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimeMultipart.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimePartDataSource.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimePullMultipart.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimeUtility.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ParameterList.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ParseException.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/SharedInputStream.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/UniqueValue.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/ASCIIUtility.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/BASE64DecoderStream.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/BASE64EncoderStream.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/BEncoderStream.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/LineInputStream.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/OutputUtil.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QDecoderStream.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QEncoderStream.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QPDecoderStream.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QPEncoderStream.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/UUDecoderStream.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/UUEncoderStream.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/AttachmentPartImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ContextClassloaderLocal.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ContextClassloaderLocal.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/Envelope.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/EnvelopeFactory.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/FastInfosetDataContentHandler.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/GifDataContentHandler.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ImageDataContentHandler.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/JpegDataContentHandler.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LazyEnvelope.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_de.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_es.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_fr.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_it.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_ja.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_ko.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_pt_BR.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_zh_CN.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_zh_TW.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/MessageFactoryImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/MessageImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/MultipartDataContentHandler.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SAAJMetaFactoryImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocument.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocumentFragment.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocumentImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPFactoryImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPIOException.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPPartImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPVersionMismatchException.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/StaxBridge.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/StaxLazySourceBridge.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/StaxReaderBridge.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/StringDataContentHandler.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/XmlDataContentHandler.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/dynamic/SOAPFactoryDynamicImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/dynamic/SOAPMessageFactoryDynamicImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/BodyElementImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/BodyImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/CDATAImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/DetailEntryImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/DetailImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/ElementFactory.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/ElementImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/EnvelopeImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/FaultElementImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/FaultImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/HeaderElementImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/HeaderImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_de.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_es.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_fr.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_it.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_ja.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_ko.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_pt_BR.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_zh_CN.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_zh_TW.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/SOAPCommentImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/SOAPTextImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/TreeException.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_de.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_es.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_fr.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_it.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_ja.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_ko.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_pt_BR.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_zh_CN.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_zh_TW.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/NameImpl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Body1_1Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/BodyElement1_1Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Detail1_1Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/DetailEntry1_1Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Envelope1_1Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Fault1_1Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/FaultElement1_1Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Header1_1Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/HeaderElement1_1Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_de.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_es.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_fr.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_it.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_ja.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_ko.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_pt_BR.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_zh_CN.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_zh_TW.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Message1_1Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPFactory1_1Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPMessageFactory1_1Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPPart1_1Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Body1_2Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/BodyElement1_2Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Detail1_2Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/DetailEntry1_2Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Envelope1_2Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Fault1_2Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/FaultElement1_2Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Header1_2Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/HeaderElement1_2Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_de.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_es.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_fr.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_it.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_ja.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_ko.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_pt_BR.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_zh_CN.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_zh_TW.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Message1_2Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPFactory1_2Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPMessageFactory1_2Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPPart1_2Impl.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/Base64.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/ByteInputStream.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/ByteOutputStream.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/CharReader.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/CharWriter.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/FastInfosetReflection.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/FinalArrayList.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/JAXMStreamSource.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/JaxmURI.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_de.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_es.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_fr.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_it.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_ja.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_ko.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_pt_BR.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_zh_CN.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_zh_TW.properties
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LogDomainConstants.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/MimeHeadersUtil.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/NamespaceContextIterator.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/ParseUtil.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/ParserPool.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/RejectDoctypeSaxFilter.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/SAAJUtil.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/TeeInputStream.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/XMLDeclarationParser.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/LazyEnvelopeStaxReader.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/SaajStaxReaderEx.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/SaajStaxWriter.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/SaajStaxWriterEx.java
jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/transform/EfficientStreamingTransformer.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/AttachmentPart.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/Detail.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/DetailEntry.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/FactoryFinder.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/MessageFactory.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/MimeHeader.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/MimeHeaders.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/Name.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/Node.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SAAJMetaFactory.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SAAJResult.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPBody.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPBodyElement.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPConnection.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPConnectionFactory.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPConstants.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPElement.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPElementFactory.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPEnvelope.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPException.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPFactory.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPFault.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPFaultElement.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPHeader.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPHeaderElement.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPMessage.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPPart.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/Text.java
jaxws/src/java.xml.soap/share/classes/javax/xml/soap/package.html
jdk/test/java/rmi/server/RemoteServer/setLogPermission/java.policy
langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/LVTRanges.java
--- a/.hgtags	Mon Jan 19 09:32:40 2015 +0100
+++ b/.hgtags	Mon Jan 19 11:35:45 2015 +0000
@@ -287,3 +287,4 @@
 3107be2ba9c6e208a0b86bc7100a141abbc5b5fb jdk9-b42
 6494b13f88a867026ee316b444d9a4fa589dd6bd jdk9-b43
 abbfccd659b91a7bb815d5e36fed635dcdd40f31 jdk9-b44
+bfc24ae2b900187585079bb11e66e459d1e525fe jdk9-b45
--- a/.hgtags-top-repo	Mon Jan 19 09:32:40 2015 +0100
+++ b/.hgtags-top-repo	Mon Jan 19 11:35:45 2015 +0000
@@ -287,3 +287,4 @@
 f7c11da0b0481d49cc7a65a453336c108191e821 jdk9-b42
 02ee8c65622e8bd97496d584e22fc7dcf0edc4ae jdk9-b43
 8994f5d87b3bb5e8d317d4e8ccb326da1a73684a jdk9-b44
+3dd628fde2086218d548841022ee8436b6b88185 jdk9-b45
--- a/Makefile	Mon Jan 19 09:32:40 2015 +0100
+++ b/Makefile	Mon Jan 19 11:35:45 2015 +0000
@@ -54,8 +54,11 @@
   # Duplication of global targets, needed before ParseConfAndSpec in case we have
   # no configurations.
   help:
-  # If CONF is not set, look for all available configurations
-  CONF?=
+  # If both CONF and SPEC are unset, look for all available configurations by
+  # setting CONF to the empty string.
+  ifeq ($(SPEC), )
+    CONF?=
+  endif
 endif
 
 # ... and then we can include our helper functions
--- a/common/autoconf/generated-configure.sh	Mon Jan 19 09:32:40 2015 +0100
+++ b/common/autoconf/generated-configure.sh	Mon Jan 19 11:35:45 2015 +0000
@@ -4329,7 +4329,7 @@
 #CUSTOM_AUTOCONF_INCLUDE
 
 # Do not change or remove the following line, it is needed for consistency checks:
-DATE_WHEN_GENERATED=1418395009
+DATE_WHEN_GENERATED=1420811523
 
 ###############################################################################
 #
@@ -27408,8 +27408,8 @@
     # The trailing space for everyone except PATH is no typo, but is needed due
     # to trailing \ in the Windows paths. These will be stripped later.
     $ECHO "$WINPATH_BASH -c 'echo VS_PATH="'\"$PATH\" > set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
-    $ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
-    $ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
+    $ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE\;$include \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
+    $ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB\;$lib \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
     $ECHO "$WINPATH_BASH -c 'echo VCINSTALLDIR="'\"$VCINSTALLDIR \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
     $ECHO "$WINPATH_BASH -c 'echo WindowsSdkDir="'\"$WindowsSdkDir \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
     $ECHO "$WINPATH_BASH -c 'echo WINDOWSSDKDIR="'\"$WINDOWSSDKDIR \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
--- a/common/autoconf/spec.gmk.in	Mon Jan 19 09:32:40 2015 +0100
+++ b/common/autoconf/spec.gmk.in	Mon Jan 19 11:35:45 2015 +0000
@@ -690,10 +690,15 @@
 # Images directory definitions
 JDK_IMAGE_SUBDIR:=jdk
 JRE_IMAGE_SUBDIR:=jre
+
 # Colon left out to be able to override output dir for bootcycle-images
 JDK_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_IMAGE_SUBDIR)
 JRE_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_IMAGE_SUBDIR)
 
+# Test image, as above
+TEST_IMAGE_SUBDIR:=test
+TEST_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(TEST_IMAGE_SUBDIR)
+
 # Macosx bundles directory definitions
 JDK_BUNDLE_SUBDIR=jdk-bundle/jdk$(JDK_VERSION).jdk/Contents
 JRE_BUNDLE_SUBDIR=jre-bundle/jre$(JDK_VERSION).jre/Contents
--- a/common/autoconf/toolchain_windows.m4	Mon Jan 19 09:32:40 2015 +0100
+++ b/common/autoconf/toolchain_windows.m4	Mon Jan 19 11:35:45 2015 +0000
@@ -173,8 +173,8 @@
     # The trailing space for everyone except PATH is no typo, but is needed due
     # to trailing \ in the Windows paths. These will be stripped later.
     $ECHO "$WINPATH_BASH -c 'echo VS_PATH="'\"$PATH\" > set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
-    $ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
-    $ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
+    $ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE\;$include \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
+    $ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB\;$lib \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
     $ECHO "$WINPATH_BASH -c 'echo VCINSTALLDIR="'\"$VCINSTALLDIR \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
     $ECHO "$WINPATH_BASH -c 'echo WindowsSdkDir="'\"$WindowsSdkDir \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
     $ECHO "$WINPATH_BASH -c 'echo WINDOWSSDKDIR="'\"$WINDOWSSDKDIR \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
--- a/common/bin/unshuffle_list.txt	Mon Jan 19 09:32:40 2015 +0100
+++ b/common/bin/unshuffle_list.txt	Mon Jan 19 11:35:45 2015 +0000
@@ -26,10 +26,8 @@
 corba/src/java.corba/share/classes/com/sun/tools/corba/se/idl : corba/src/share/classes/com/sun/tools/corba/se/idl
 corba/src/java.corba/share/classes/javax/activity : corba/src/share/classes/javax/activity
 corba/src/java.corba/share/classes/javax/rmi : corba/src/share/classes/javax/rmi
-corba/src/java.corba/share/classes/javax/transaction : corba/src/share/classes/javax/transaction
 corba/src/java.corba/share/classes/org/omg : corba/src/share/classes/org/omg
 corba/src/java.corba/share/classes/sun/corba : corba/src/share/classes/sun/corba
-corba/src/java.sql/share/classes/javax/transaction/xa : corba/src/share/classes/javax/transaction/xa
 corba/src/jdk.rmic/share/classes/sun/rmi/rmic/iiop : corba/src/share/classes/sun/rmi/rmic/iiop
 jaxp/src/java.xml/share/classes/com/sun/java_cup/internal/runtime : jaxp/src/com/sun/java_cup/internal/runtime
 jaxp/src/java.xml/share/classes/com/sun/org/apache/bcel/internal : jaxp/src/com/sun/org/apache/bcel/internal
@@ -66,8 +64,8 @@
 jaxws/src/java.xml.bind/share/classes/com/sun/xml/internal/org : jaxws/src/share/jaxws_classes/com/sun/xml/internal/org
 jaxws/src/java.xml.bind/share/classes/com/sun/xml/internal/txw2 : jaxws/src/share/jaxws_classes/com/sun/xml/internal/txw2
 jaxws/src/java.xml.bind/share/classes/javax/xml/bind : jaxws/src/share/jaxws_classes/javax/xml/bind
-jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging : jaxws/src/share/jaxws_classes/com/sun/xml/internal/messaging
-jaxws/src/java.xml.soap/share/classes/javax/xml/soap : jaxws/src/share/jaxws_classes/javax/xml/soap
+jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging : jaxws/src/share/jaxws_classes/com/sun/xml/internal/messaging
+jaxws/src/java.xml.ws/share/classes/javax/xml/soap : jaxws/src/share/jaxws_classes/javax/xml/soap
 jaxws/src/java.xml.ws/share/classes/com/oracle/webservices/internal : jaxws/src/share/jaxws_classes/com/oracle/webservices/internal
 jaxws/src/java.xml.ws/share/classes/com/oracle/xmlns/internal : jaxws/src/share/jaxws_classes/com/oracle/xmlns/internal
 jaxws/src/java.xml.ws/share/classes/com/sun/org/glassfish : jaxws/src/share/jaxws_classes/com/sun/org/glassfish
@@ -1245,6 +1243,8 @@
 jdk/src/java.sql.rowset/share/classes/javax/sql/rowset : jdk/src/share/classes/javax/sql/rowset
 jdk/src/java.sql/share/classes/java/sql : jdk/src/share/classes/java/sql
 jdk/src/java.sql/share/classes/javax/sql : jdk/src/share/classes/javax/sql
+jdk/src/java.sql/share/classes/javax/transaction/xa : corba/src/share/classes/javax/transaction/xa
+jdk/src/java.transaction/share/classes/javax/transaction : corba/src/share/classes/javax/transaction
 jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security : jdk/src/share/classes/com/sun/org/apache/xml/internal/security
 jdk/src/java.xml.crypto/share/classes/javax/xml/crypto : jdk/src/share/classes/javax/xml/crypto
 jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal : jdk/src/share/classes/org/jcp/xml/dsig/internal
--- a/corba/.hgtags	Mon Jan 19 09:32:40 2015 +0100
+++ b/corba/.hgtags	Mon Jan 19 11:35:45 2015 +0000
@@ -287,3 +287,4 @@
 078bb11af876fe528d4b516f33ad4dd9bb60549e jdk9-b42
 9645e35616b60c5c07b4fdf11a132afc8081dfa8 jdk9-b43
 1f57bd728c9e6865ccb9d43ccd80a1c11230a32f jdk9-b44
+9e3f2bed80c0e5a84a256ce41f1d10c5ade48466 jdk9-b45
--- a/corba/src/java.corba/share/classes/javax/transaction/InvalidTransactionException.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-/*
- * Licensed Materials - Property of IBM
- * RMI-IIOP v1.0
- * Copyright IBM Corp. 1998 1999  All Rights Reserved
- *
- */
-
-package javax.transaction;
-
-/**
- * This exception indicates that the request carried an invalid transaction
- * context. For example, this exception could be raised if an error
- * occured when trying to register a resource.
- */
-public class InvalidTransactionException extends java.rmi.RemoteException
-{
-    public InvalidTransactionException()
-    {
-        super();
-    }
-
-    public InvalidTransactionException(String msg)
-    {
-        super(msg);
-    }
-}
--- a/corba/src/java.corba/share/classes/javax/transaction/TransactionRequiredException.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-/*
- * Licensed Materials - Property of IBM
- * RMI-IIOP v1.0
- * Copyright IBM Corp. 1998 1999  All Rights Reserved
- *
- */
-
-package javax.transaction;
-
-/**
- * This exception indicates that a request carried a null transaction context,
- * but the target object requires an activate transaction.
- */
-public class TransactionRequiredException extends java.rmi.RemoteException
-{
-    public TransactionRequiredException()
-    {
-        super();
-    }
-
-    public TransactionRequiredException(String msg)
-    {
-        super(msg);
-    }
-}
--- a/corba/src/java.corba/share/classes/javax/transaction/TransactionRolledbackException.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-/*
- * Licensed Materials - Property of IBM
- * RMI-IIOP v1.0
- * Copyright IBM Corp. 1998 1999  All Rights Reserved
- *
- */
-
-package javax.transaction;
-
-/**
- * This exception indicates that the transaction associated with processing
- * of the request has been rolled back, or marked to roll back. Thus the
- * requested operation either could not be performed or was not performed
- * because further computation on behalf of the transaction would be
- * fruitless
- */
-public class TransactionRolledbackException extends java.rmi.RemoteException
-{
-    public TransactionRolledbackException()
-    {
-        super();
-    }
-
-    public TransactionRolledbackException(String msg)
-    {
-        super(msg);
-    }
-}
--- a/corba/src/java.corba/share/classes/javax/transaction/package.html	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
-DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-
-This code is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--->
-
-</head>
-<body bgcolor="white">
-
-Contains three exceptions thrown by the ORB machinery during unmarshalling.
-<p>
-@since 1.3
-</body>
-</html>
--- a/corba/src/java.sql/share/classes/javax/transaction/xa/XAException.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,201 +0,0 @@
-/*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.transaction.xa;
-
-/**
- * The XAException is thrown by the Resource Manager (RM) to inform the
- * Transaction Manager of an error encountered by the involved transaction.
- *
- */
-public class XAException extends java.lang.Exception {
-
-    /**
-    * The error code with which to create the SystemException.
-    *
-    * @serial The error code for the exception
-     */
-
-    public int errorCode;
-
-    /**
-     * Create an XAException.
-     */
-    public XAException()
-    {
-        super();
-    }
-
-    /**
-     * Create an XAException with a given string.
-     *
-     * @param s The <code>String</code> object containing the exception
-     *          message.
-     */
-    public XAException(String s)
-    {
-        super(s);
-    }
-
-    /**
-     * Create an XAException with a given error code.
-     *
-     * @param errcode The error code identifying the exception.
-     */
-    public XAException(int errcode)
-    {
-        super();
-        errorCode = errcode;
-    }
-
-    /**
-     * The inclusive lower bound of the rollback codes.
-     */
-    public final static int XA_RBBASE = 100;
-
-    /**
-     * Indicates that the rollback was caused by an unspecified reason.
-     */
-    public final static int XA_RBROLLBACK = XA_RBBASE;
-
-    /**
-     * Indicates that the rollback was caused by a communication failure.
-     */
-    public final static int XA_RBCOMMFAIL = XA_RBBASE + 1;
-
-    /**
-     * A deadlock was detected.
-     */
-    public final static int XA_RBDEADLOCK = XA_RBBASE + 2;
-
-    /**
-     * A condition that violates the integrity of the resource was detected.
-     */
-    public final static int XA_RBINTEGRITY = XA_RBBASE + 3;
-
-    /**
-     * The resource manager rolled back the transaction branch for a reason
-     * not on this list.
-     */
-    public final static int XA_RBOTHER = XA_RBBASE + 4;
-
-    /**
-     * A protocol error occurred in the resource manager.
-     */
-    public final static int XA_RBPROTO = XA_RBBASE + 5;
-
-    /**
-     * A transaction branch took too long.
-     */
-    public final static int XA_RBTIMEOUT = XA_RBBASE + 6;
-
-    /**
-     * May retry the transaction branch.
-     */
-    public final static int XA_RBTRANSIENT = XA_RBBASE + 7;
-
-    /**
-     * The inclusive upper bound of the rollback error code.
-     */
-    public final static int XA_RBEND = XA_RBTRANSIENT;
-
-    /**
-     * Resumption must occur where the suspension occurred.
-     */
-    public final static int XA_NOMIGRATE = 9;
-
-    /**
-     * The transaction branch may have been heuristically completed.
-     */
-    public final static int XA_HEURHAZ = 8;
-
-    /**
-     * The transaction branch has been heuristically committed.
-     */
-    public final static int XA_HEURCOM = 7;
-
-    /**
-     * The transaction branch has been heuristically rolled back.
-     */
-    public final static int XA_HEURRB = 6;
-
-    /**
-     * The transaction branch has been heuristically committed and
-     * rolled back.
-     */
-    public final static int XA_HEURMIX = 5;
-
-    /**
-     * Routine returned with no effect and may be reissued.
-     */
-    public final static int XA_RETRY = 4;
-
-    /**
-     * The transaction branch was read-only and has been committed.
-     */
-    public final static int XA_RDONLY = 3;
-
-    /**
-     * There is an asynchronous operation already outstanding.
-     */
-    public final static int XAER_ASYNC = -2;
-
-    /**
-     * A resource manager error has occurred in the transaction branch.
-     */
-    public final static int XAER_RMERR = -3;
-
-    /**
-     * The XID is not valid.
-     */
-    public final static int XAER_NOTA = -4;
-
-    /**
-     * Invalid arguments were given.
-     */
-    public final static int XAER_INVAL = -5;
-
-    /**
-     * Routine was invoked in an inproper context.
-     */
-    public final static int XAER_PROTO = -6;
-
-    /**
-     * Resource manager is unavailable.
-     */
-    public final static int XAER_RMFAIL = -7;
-
-    /**
-     * The XID already exists.
-     */
-    public final static int XAER_DUPID = -8;
-
-    /**
-     * The resource manager is doing work outside a global transaction.
-     */
-    public final static int XAER_OUTSIDE = -9;
-
-
-}
--- a/corba/src/java.sql/share/classes/javax/transaction/xa/XAResource.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,314 +0,0 @@
-/*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.transaction.xa;
-
-/** <p>The XAResource interface is a Java mapping of the industry standard
-  * XA interface based on the X/Open CAE Specification (Distributed
-  * Transaction Processing: The XA Specification).
-  *
-  * <p>The XA interface defines the contract between a Resource Manager
-  * and a Transaction Manager in a distributed transaction processing
-  * (DTP) environment. A JDBC driver or a JMS provider implements
-  * this interface to support the association between a global transaction
-  * and a database or message service connection.
-  *
-  * <p>The XAResource interface can be supported by any transactional
-  * resource that is intended to be used by application programs in an
-  * environment where transactions are controlled by an external
-  * transaction manager. An example of such a resource is a database
-  * management system. An application may access data through multiple
-  * database connections. Each database connection is enlisted with
-  * the transaction manager as a transactional resource. The transaction
-  * manager obtains an XAResource for each connection participating
-  * in a global transaction. The transaction manager uses the
-  * <code>start</code> method
-  * to associate the global transaction with the resource, and it uses the
-  * <code>end</code> method to disassociate the transaction from
-  * the resource. The resource
-  * manager is responsible for associating the global transaction to all
-  * work performed on its data between the start and end method invocations.
-  *
-  * <p>At transaction commit time, the resource managers are informed by
-  * the transaction manager to prepare, commit, or rollback a transaction
-  * according to the two-phase commit protocol.</p>
-  *
-  */
-
-public interface XAResource
-{
-    /** Commits the global transaction specified by xid.
-      *
-      * @param xid A global transaction identifier
-      *
-      * @param onePhase If true, the resource manager should use a one-phase
-      * commit protocol to commit the work done on behalf of xid.
-      *
-      * @exception XAException An error has occurred. Possible XAExceptions
-      * are XA_HEURHAZ, XA_HEURCOM, XA_HEURRB, XA_HEURMIX, XAER_RMERR,
-      * XAER_RMFAIL, XAER_NOTA, XAER_INVAL, or XAER_PROTO.
-      *
-      * <P>If the resource manager did not commit the transaction and the
-      *  paramether onePhase is set to true, the resource manager may throw
-      *  one of the XA_RB* exceptions. Upon return, the resource manager has
-      *  rolled back the branch's work and has released all held resources.
-      */
-
-    void commit(Xid xid, boolean onePhase) throws XAException;
-
-
-    /** Ends the work performed on behalf of a transaction branch.
-      * The resource manager disassociates the XA resource from the
-      * transaction branch specified and lets the transaction
-      * complete.
-      *
-      * <p>If TMSUSPEND is specified in the flags, the transaction branch
-      * is temporarily suspended in an incomplete state. The transaction
-      * context is in a suspended state and must be resumed via the
-      * <code>start</code> method with TMRESUME specified.</p>
-      *
-      * <p>If TMFAIL is specified, the portion of work has failed.
-      * The resource manager may mark the transaction as rollback-only</p>
-      *
-      * <p>If TMSUCCESS is specified, the portion of work has completed
-      * successfully.</p>
-      *
-      * @param xid A global transaction identifier that is the same as
-      * the identifier used previously in the <code>start</code> method.
-      *
-      * @param flags One of TMSUCCESS, TMFAIL, or TMSUSPEND.
-      *
-      * @exception XAException An error has occurred. Possible XAException
-      * values are XAER_RMERR, XAER_RMFAILED, XAER_NOTA, XAER_INVAL,
-      * XAER_PROTO, or XA_RB*.
-      */
-
-    void end(Xid xid, int flags) throws XAException;
-
-
-    /** Tells the resource manager to forget about a heuristically
-      * completed transaction branch.
-      *
-      * @param xid A global transaction identifier.
-      *
-      * @exception XAException An error has occurred. Possible exception
-      * values are XAER_RMERR, XAER_RMFAIL, XAER_NOTA, XAER_INVAL, or
-      * XAER_PROTO.
-      */
-
-    void forget(Xid xid) throws XAException;
-
-    /** Obtains the current transaction timeout value set for this
-      * XAResource instance. If <CODE>XAResource.setTransactionTimeout</CODE>
-      * was not used prior to invoking this method, the return value
-      * is the default timeout set for the resource manager; otherwise,
-      * the value used in the previous <CODE>setTransactionTimeout</CODE>
-      * call is returned.
-      *
-      * @return the transaction timeout value in seconds.
-      *
-      * @exception XAException An error has occurred. Possible exception
-      * values are XAER_RMERR and XAER_RMFAIL.
-      */
-    int getTransactionTimeout() throws XAException;
-
-    /** This method is called to determine if the resource manager
-      * instance represented by the target object is the same as the
-      * resouce manager instance represented by the parameter <i>xares</i>.
-      *
-      * @param xares An XAResource object whose resource manager instance
-      *      is to be compared with the resource manager instance of the
-      *      target object.
-      *
-      * @return <i>true</i> if it's the same RM instance; otherwise
-      *       <i>false</i>.
-      *
-      * @exception XAException An error has occurred. Possible exception
-      * values are XAER_RMERR and XAER_RMFAIL.
-      *
-      */
-    boolean isSameRM(XAResource xares) throws XAException;
-
-    /** Ask the resource manager to prepare for a transaction commit
-      * of the transaction specified in xid.
-      *
-      * @param xid A global transaction identifier.
-      *
-      * @exception XAException An error has occurred. Possible exception
-      * values are: XA_RB*, XAER_RMERR, XAER_RMFAIL, XAER_NOTA, XAER_INVAL,
-      * or XAER_PROTO.
-      *
-      * @return A value indicating the resource manager's vote on the
-      * outcome of the transaction. The possible values are: XA_RDONLY
-      * or XA_OK. If the resource manager wants to roll back the
-      * transaction, it should do so by raising an appropriate XAException
-      * in the prepare method.
-      */
-
-    int prepare(Xid xid) throws XAException;
-
-
-    /** Obtains a list of prepared transaction branches from a resource
-      * manager. The transaction manager calls this method during recovery
-      * to obtain the list of transaction branches that are currently in
-      * prepared or heuristically completed states.
-      *
-      * @param flag One of TMSTARTRSCAN, TMENDRSCAN, TMNOFLAGS. TMNOFLAGS
-      * must be used when no other flags are set in the parameter.
-      *
-      * @exception XAException An error has occurred. Possible values are
-      * XAER_RMERR, XAER_RMFAIL, XAER_INVAL, and XAER_PROTO.
-      *
-      * @return The resource manager returns zero or more XIDs of the
-      * transaction branches that are currently in a prepared or
-      * heuristically completed state. If an error occurs during the
-      * operation, the resource manager should throw the appropriate
-      * XAException.
-      *
-      */
-
-    Xid[] recover(int flag) throws XAException;
-
-
-    /** Informs the resource manager to roll back work done on behalf
-      * of a transaction branch.
-      *
-      * @param xid A global transaction identifier.
-      *
-      * @exception XAException An error has occurred.
-      */
-
-    void rollback(Xid xid) throws XAException;
-
-
-    /** <P>Sets the current transaction timeout value for this <CODE>XAResource</CODE>
-      * instance. Once set, this timeout value is effective until
-      * <code>setTransactionTimeout</code> is invoked again with a different
-      * value. To reset the timeout value to the default value used by the resource
-      * manager, set the value to zero.
-      *
-      * If the timeout operation is performed successfully, the method returns
-      * <i>true</i>; otherwise <i>false</i>. If a resource manager does not
-      * support explicitly setting the transaction timeout value, this method
-      * returns <i>false</i>.
-      *
-      * @param seconds The transaction timeout value in seconds.
-      *
-      * @return <i>true</i> if the transaction timeout value is set successfully;
-      *       otherwise <i>false</i>.
-      *
-      * @exception XAException An error has occurred. Possible exception values
-      * are XAER_RMERR, XAER_RMFAIL, or XAER_INVAL.
-      */
-    boolean setTransactionTimeout(int seconds) throws XAException;
-
-
-    /** Starts work on behalf of a transaction branch specified in
-      * <code>xid</code>.
-      *
-      * If TMJOIN is specified, the start applies to joining a transaction
-      * previously seen by the resource manager. If TMRESUME is specified,
-      * the start applies to resuming a suspended transaction specified in the
-      * parameter <code>xid</code>.
-      *
-      * If neither TMJOIN nor TMRESUME is specified and the transaction
-      * specified by <code>xid</code> has previously been seen by the resource
-      * manager, the resource manager throws the XAException exception with
-      * XAER_DUPID error code.
-      *
-      * @param xid A global transaction identifier to be associated
-      * with the resource.
-      *
-      * @param flags One of TMNOFLAGS, TMJOIN, or TMRESUME.
-      *
-      * @exception XAException An error has occurred. Possible exceptions
-      * are XA_RB*, XAER_RMERR, XAER_RMFAIL, XAER_DUPID, XAER_OUTSIDE,
-      * XAER_NOTA, XAER_INVAL, or XAER_PROTO.
-      *
-      */
-    void start(Xid xid, int flags) throws XAException;
-
-
-    /**
-      * Ends a recovery scan.
-      */
-    public final static int TMENDRSCAN =   0x00800000;
-
-    /**
-      * Disassociates the caller and marks the transaction branch
-      * rollback-only.
-      */
-    public final static int TMFAIL =       0x20000000;
-
-    /**
-      * Caller is joining existing transaction branch.
-      */
-    public final static int TMJOIN =       0x00200000;
-
-    /**
-      * Use TMNOFLAGS to indicate no flags value is selected.
-      */
-    public final static int TMNOFLAGS =     0x00000000;
-
-    /**
-      * Caller is using one-phase optimization.
-      */
-    public final static int TMONEPHASE =   0x40000000;
-
-    /**
-      * Caller is resuming association with a suspended
-      * transaction branch.
-      */
-    public final static int TMRESUME =     0x08000000;
-
-    /**
-      * Starts a recovery scan.
-      */
-    public final static int TMSTARTRSCAN = 0x01000000;
-
-
-    /**
-      * Disassociates caller from a transaction branch.
-      */
-    public final static int TMSUCCESS =    0x04000000;
-
-
-    /**
-      * Caller is suspending (not ending) its association with
-      * a transaction branch.
-      */
-    public final static int TMSUSPEND =    0x02000000;
-
-    /**
-     * The transaction branch has been read-only and has been committed.
-     */
-    public final static int XA_RDONLY = 0x00000003;
-
-    /**
-     * The transaction work has been prepared normally.
-     */
-    public final static int XA_OK = 0;
-
-}
--- a/corba/src/java.sql/share/classes/javax/transaction/xa/Xid.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.transaction.xa;
-
-/**
- * The Xid interface is a Java mapping of the X/Open transaction identifier
- * XID structure. This interface specifies three accessor methods to
- * retrieve a global transaction format ID, global transaction ID,
- * and branch qualifier. The Xid interface is used by the transaction
- * manager and the resource managers. This interface is not visible to
- * the application programs.
- */
-public interface Xid {
-
-    /**
-     * Maximum number of bytes returned by getGtrid.
-     */
-    final static int MAXGTRIDSIZE = 64;
-
-    /**
-     * Maximum number of bytes returned by getBqual.
-     */
-    final static int MAXBQUALSIZE = 64;
-
-    /**
-     * Obtain the format identifier part of the XID.
-     *
-     * @return Format identifier. O means the OSI CCR format.
-     */
-    int getFormatId();
-
-    /**
-     * Obtain the global transaction identifier part of XID as an array
-     * of bytes.
-     *
-     * @return Global transaction identifier.
-     */
-    byte[] getGlobalTransactionId();
-
-    /**
-     * Obtain the transaction branch identifier part of XID as an array
-     * of bytes.
-     *
-     * @return Global transaction identifier.
-     */
-    byte[] getBranchQualifier();
-}
--- a/corba/src/java.sql/share/classes/javax/transaction/xa/package.html	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
-DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-
-This code is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--->
-
-</head>
-<body bgcolor="white">
-
-Provides the API that defines the contract between the transaction 
-manager and the resource manager, which allows the transaction 
-manager to enlist and delist resource objects (supplied by the 
-resource manager driver) in JTA transactions. The driver vendor 
-for a specific resource manager provides the implementation of 
-this API.
-<p>
-@since 1.4
-</body>
-</html>
--- a/hotspot/.hgtags	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/.hgtags	Mon Jan 19 11:35:45 2015 +0000
@@ -447,3 +447,4 @@
 38cb4fbd47e3472bd1b5ebac83bda96fe4869c4f jdk9-b42
 65a9747147b8090037541040ba67156ec914db6a jdk9-b43
 43a44b56dca61a4d766a20f0528fdd8b5ceff873 jdk9-b44
+5dc8184af1e2bb30b0103113d1f1a58a21a80c37 jdk9-b45
--- a/hotspot/src/cpu/ppc/vm/templateInterpreter_ppc.cpp	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/src/cpu/ppc/vm/templateInterpreter_ppc.cpp	Mon Jan 19 11:35:45 2015 +0000
@@ -264,11 +264,11 @@
       __ cmpdi(CCR0, Rmdo, 0);
       __ beq(CCR0, no_mdo);
 
-      // Increment backedge counter in the MDO.
-      const int mdo_bc_offs = in_bytes(MethodData::backedge_counter_offset()) + in_bytes(InvocationCounter::counter_offset());
-      __ lwz(Rscratch2, mdo_bc_offs, Rmdo);
+      // Increment invocation counter in the MDO.
+      const int mdo_ic_offs = in_bytes(MethodData::invocation_counter_offset()) + in_bytes(InvocationCounter::counter_offset());
+      __ lwz(Rscratch2, mdo_ic_offs, Rmdo);
       __ addi(Rscratch2, Rscratch2, increment);
-      __ stw(Rscratch2, mdo_bc_offs, Rmdo);
+      __ stw(Rscratch2, mdo_ic_offs, Rmdo);
       __ load_const_optimized(Rscratch1, mask, R0);
       __ and_(Rscratch1, Rscratch2, Rscratch1);
       __ bne(CCR0, done);
@@ -276,12 +276,12 @@
     }
 
     // Increment counter in MethodCounters*.
-    const int mo_bc_offs = in_bytes(MethodCounters::backedge_counter_offset()) + in_bytes(InvocationCounter::counter_offset());
+    const int mo_ic_offs = in_bytes(MethodCounters::invocation_counter_offset()) + in_bytes(InvocationCounter::counter_offset());
     __ bind(no_mdo);
     __ get_method_counters(R19_method, R3_counters, done);
-    __ lwz(Rscratch2, mo_bc_offs, R3_counters);
+    __ lwz(Rscratch2, mo_ic_offs, R3_counters);
     __ addi(Rscratch2, Rscratch2, increment);
-    __ stw(Rscratch2, mo_bc_offs, R3_counters);
+    __ stw(Rscratch2, mo_ic_offs, R3_counters);
     __ load_const_optimized(Rscratch1, mask, R0);
     __ and_(Rscratch1, Rscratch2, Rscratch1);
     __ beq(CCR0, *overflow);
--- a/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp	Mon Jan 19 11:35:45 2015 +0000
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2007, 2008, 2011 Red Hat, Inc.
+ * Copyright 2007, 2008, 2011, 2015, Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -237,7 +237,13 @@
   // operation.  Note that some platforms only support this with the
   // limitation that the only valid value to store is the immediate
   // constant 1.  There is a test for this in JNI_CreateJavaVM().
-  return __sync_lock_test_and_set (dest, exchange_value);
+  jint result = __sync_lock_test_and_set (dest, exchange_value);
+  // All atomic operations are expected to be full memory barriers
+  // (see atomic.hpp). However, __sync_lock_test_and_set is not
+  // a full memory barrier, but an acquire barrier. Hence, this added
+  // barrier.
+  __sync_synchronize();
+  return result;
 #endif // M68K
 #endif // ARM
 }
@@ -250,7 +256,9 @@
 #ifdef M68K
   return m68k_lock_test_and_set(dest, exchange_value);
 #else
-  return __sync_lock_test_and_set (dest, exchange_value);
+  intptr_t result = __sync_lock_test_and_set (dest, exchange_value);
+  __sync_synchronize();
+  return result;
 #endif // M68K
 #endif // ARM
 }
--- a/hotspot/src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp	Mon Jan 19 11:35:45 2015 +0000
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2007, 2008, 2011 Red Hat, Inc.
+ * Copyright 2007, 2008, 2011, 2015, Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -231,7 +231,13 @@
   // operation.  Note that some platforms only support this with the
   // limitation that the only valid value to store is the immediate
   // constant 1.  There is a test for this in JNI_CreateJavaVM().
-  return __sync_lock_test_and_set (dest, exchange_value);
+  jint result = __sync_lock_test_and_set (dest, exchange_value);
+  // All atomic operations are expected to be full memory barriers
+  // (see atomic.hpp). However, __sync_lock_test_and_set is not
+  // a full memory barrier, but an acquire barrier. Hence, this added
+  // barrier.
+  __sync_synchronize();
+  return result;
 #endif // M68K
 #endif // ARM
 }
@@ -244,7 +250,9 @@
 #ifdef M68K
   return m68k_lock_test_and_set(dest, exchange_value);
 #else
-  return __sync_lock_test_and_set (dest, exchange_value);
+  intptr_t result = __sync_lock_test_and_set (dest, exchange_value);
+  __sync_synchronize();
+  return result;
 #endif // M68K
 #endif // ARM
 }
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	Mon Jan 19 11:35:45 2015 +0000
@@ -1910,7 +1910,6 @@
   }
 
   void work(uint worker_id) {
-    double start = os::elapsedTime();
     FreeRegionList local_cleanup_list("Local Cleanup List");
     HRRSCleanupTask hrrs_cleanup_task;
     G1NoteEndOfConcMarkClosure g1_note_end(_g1h, &local_cleanup_list,
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Mon Jan 19 11:35:45 2015 +0000
@@ -1229,7 +1229,6 @@
       TraceCollectorStats tcs(g1mm()->full_collection_counters());
       TraceMemoryManagerStats tms(true /* fullGC */, gc_cause());
 
-      double start = os::elapsedTime();
       g1_policy()->record_full_collection_start();
 
       // Note: When we have a more flexible GC logging framework that
@@ -1436,7 +1435,6 @@
 
       _allocator->init_mutator_alloc_region();
 
-      double end = os::elapsedTime();
       g1_policy()->record_full_collection_end();
 
       if (G1Log::fine()) {
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp	Mon Jan 19 11:35:45 2015 +0000
@@ -56,7 +56,6 @@
 class GenerationSpec;
 class OopsInHeapRegionClosure;
 class G1KlassScanClosure;
-class G1ScanHeapEvacClosure;
 class ObjectClosure;
 class SpaceClosure;
 class CompactibleSpaceClosure;
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -153,14 +153,6 @@
   _inc_cset_predicted_elapsed_time_ms(0.0),
   _inc_cset_predicted_elapsed_time_ms_diffs(0.0),
 
-#ifdef _MSC_VER // the use of 'this' below gets a warning, make it go away
-#pragma warning( disable:4355 ) // 'this' : used in base member initializer list
-#endif // _MSC_VER
-
-  _short_lived_surv_rate_group(new SurvRateGroup(this, "Short Lived",
-                                                 G1YoungSurvRateNumRegionsSummary)),
-  _survivor_surv_rate_group(new SurvRateGroup(this, "Survivor",
-                                              G1YoungSurvRateNumRegionsSummary)),
   // add here any more surv rate groups
   _recorded_survivor_regions(0),
   _recorded_survivor_head(NULL),
@@ -169,6 +161,22 @@
 
   _gc_overhead_perc(0.0) {
 
+  uintx confidence_perc = G1ConfidencePercent;
+  // Put an artificial ceiling on this so that it's not set to a silly value.
+  if (confidence_perc > 100) {
+    confidence_perc = 100;
+    warning("G1ConfidencePercent is set to a value that is too large, "
+            "it's been updated to %u", confidence_perc);
+  }
+  // '_sigma' must be initialized before the SurvRateGroups below because they
+  // indirecty access '_sigma' trough the 'this' pointer in their constructor.
+  _sigma = (double) confidence_perc / 100.0;
+
+  _short_lived_surv_rate_group =
+    new SurvRateGroup(this, "Short Lived", G1YoungSurvRateNumRegionsSummary);
+  _survivor_surv_rate_group =
+    new SurvRateGroup(this, "Survivor", G1YoungSurvRateNumRegionsSummary);
+
   // Set up the region size and associated fields. Given that the
   // policy is created before the heap, we have to set this up here,
   // so it's done as soon as possible.
@@ -283,15 +291,6 @@
   double time_slice  = (double) GCPauseIntervalMillis / 1000.0;
   _mmu_tracker = new G1MMUTrackerQueue(time_slice, max_gc_time);
 
-  uintx confidence_perc = G1ConfidencePercent;
-  // Put an artificial ceiling on this so that it's not set to a silly value.
-  if (confidence_perc > 100) {
-    confidence_perc = 100;
-    warning("G1ConfidencePercent is set to a value that is too large, "
-            "it's been updated to %u", confidence_perc);
-  }
-  _sigma = (double) confidence_perc / 100.0;
-
   // start conservatively (around 50ms is about right)
   _concurrent_mark_remark_times_ms->add(0.05);
   _concurrent_mark_cleanup_times_ms->add(0.20);
--- a/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.hpp	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.hpp	Mon Jan 19 11:35:45 2015 +0000
@@ -46,9 +46,6 @@
 class G1PrepareCompactClosure;
 
 class G1MarkSweep : AllStatic {
-  friend class VM_G1MarkSweep;
-  friend class Scavenge;
-
  public:
 
   static void invoke_at_safepoint(ReferenceProcessor* rp,
--- a/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp	Mon Jan 19 11:35:45 2015 +0000
@@ -45,7 +45,8 @@
 #include "utilities/bitMap.inline.hpp"
 
 G1PageBasedVirtualSpace::G1PageBasedVirtualSpace() : _low_boundary(NULL),
-  _high_boundary(NULL), _committed(), _page_size(0), _special(false), _executable(false) {
+  _high_boundary(NULL), _committed(), _page_size(0), _special(false),
+  _dirty(), _executable(false) {
 }
 
 bool G1PageBasedVirtualSpace::initialize_with_granularity(ReservedSpace rs, size_t page_size) {
@@ -66,6 +67,9 @@
   assert(_committed.size() == 0, "virtual space initialized more than once");
   uintx size_in_bits = rs.size() / page_size;
   _committed.resize(size_in_bits, /* in_resource_area */ false);
+  if (_special) {
+    _dirty.resize(size_in_bits, /* in_resource_area */ false);
+  }
 
   return true;
 }
@@ -84,6 +88,7 @@
   _executable             = false;
   _page_size              = 0;
   _committed.resize(0, false);
+  _dirty.resize(0, false);
 }
 
 size_t G1PageBasedVirtualSpace::committed_size() const {
@@ -120,34 +125,43 @@
   return num * _page_size;
 }
 
-MemRegion G1PageBasedVirtualSpace::commit(uintptr_t start, size_t size_in_pages) {
+bool G1PageBasedVirtualSpace::commit(uintptr_t start, size_t size_in_pages) {
   // We need to make sure to commit all pages covered by the given area.
   guarantee(is_area_uncommitted(start, size_in_pages), "Specified area is not uncommitted");
 
-  if (!_special) {
+  bool zero_filled = true;
+  uintptr_t end = start + size_in_pages;
+
+  if (_special) {
+    // Check for dirty pages and update zero_filled if any found.
+    if (_dirty.get_next_one_offset(start,end) < end) {
+      zero_filled = false;
+      _dirty.clear_range(start, end);
+    }
+  } else {
     os::commit_memory_or_exit(page_start(start), byte_size_for_pages(size_in_pages), _executable,
                               err_msg("Failed to commit pages from "SIZE_FORMAT" of length "SIZE_FORMAT, start, size_in_pages));
   }
-  _committed.set_range(start, start + size_in_pages);
+  _committed.set_range(start, end);
 
-  MemRegion result((HeapWord*)page_start(start), byte_size_for_pages(size_in_pages) / HeapWordSize);
   if (AlwaysPreTouch) {
-    os::pretouch_memory((char*)result.start(), (char*)result.end());
+    os::pretouch_memory(page_start(start), page_start(end));
   }
-  return result;
+  return zero_filled;
 }
 
-MemRegion G1PageBasedVirtualSpace::uncommit(uintptr_t start, size_t size_in_pages) {
+void G1PageBasedVirtualSpace::uncommit(uintptr_t start, size_t size_in_pages) {
   guarantee(is_area_committed(start, size_in_pages), "checking");
 
-  if (!_special) {
+  if (_special) {
+    // Mark that memory is dirty. If committed again the memory might
+    // need to be cleared explicitly.
+    _dirty.set_range(start, start + size_in_pages);
+  } else {
     os::uncommit_memory(page_start(start), byte_size_for_pages(size_in_pages));
   }
 
   _committed.clear_range(start, start + size_in_pages);
-
-  MemRegion result((HeapWord*)page_start(start), byte_size_for_pages(size_in_pages) / HeapWordSize);
-  return result;
 }
 
 bool G1PageBasedVirtualSpace::contains(const void* p) const {
@@ -157,7 +171,7 @@
 #ifndef PRODUCT
 void G1PageBasedVirtualSpace::print_on(outputStream* out) {
   out->print   ("Virtual space:");
-  if (special()) out->print(" (pinned in memory)");
+  if (_special) out->print(" (pinned in memory)");
   out->cr();
   out->print_cr(" - committed: " SIZE_FORMAT, committed_size());
   out->print_cr(" - reserved:  " SIZE_FORMAT, reserved_size());
--- a/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.hpp	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.hpp	Mon Jan 19 11:35:45 2015 +0000
@@ -49,6 +49,12 @@
   // Bitmap used for verification of commit/uncommit operations.
   BitMap _committed;
 
+  // Bitmap used to keep track of which pages are dirty or not for _special
+  // spaces. This is needed because for those spaces the underlying memory
+  // will only be zero filled the first time it is committed. Calls to commit
+  // will use this bitmap and return whether or not the memory is zero filled.
+  BitMap _dirty;
+
   // Indicates that the entire space has been committed and pinned in memory,
   // os::commit_memory() or os::uncommit_memory() have no function.
   bool _special;
@@ -71,12 +77,11 @@
  public:
 
   // Commit the given area of pages starting at start being size_in_pages large.
-  MemRegion commit(uintptr_t start, size_t size_in_pages);
+  // Returns true if the given area is zero filled upon completion.
+  bool commit(uintptr_t start, size_t size_in_pages);
 
   // Uncommit the given area of pages starting at start being size_in_pages large.
-  MemRegion uncommit(uintptr_t start, size_t size_in_pages);
-
-  bool special() const { return _special; }
+  void uncommit(uintptr_t start, size_t size_in_pages);
 
   // Initialization
   G1PageBasedVirtualSpace();
--- a/hotspot/src/share/vm/gc_implementation/g1/g1RegionToSpaceMapper.cpp	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1RegionToSpaceMapper.cpp	Mon Jan 19 11:35:45 2015 +0000
@@ -67,9 +67,9 @@
   }
 
   virtual void commit_regions(uintptr_t start_idx, size_t num_regions) {
-    _storage.commit(start_idx * _pages_per_region, num_regions * _pages_per_region);
+    bool zero_filled = _storage.commit(start_idx * _pages_per_region, num_regions * _pages_per_region);
     _commit_map.set_range(start_idx, start_idx + num_regions);
-    fire_on_commit(start_idx, num_regions, true);
+    fire_on_commit(start_idx, num_regions, zero_filled);
   }
 
   virtual void uncommit_regions(uintptr_t start_idx, size_t num_regions) {
@@ -117,8 +117,7 @@
       uint old_refcount = _refcounts.get_by_index(idx);
       bool zero_filled = false;
       if (old_refcount == 0) {
-        _storage.commit(idx, 1);
-        zero_filled = true;
+        zero_filled = _storage.commit(idx, 1);
       }
       _refcounts.set_by_index(idx, old_refcount + 1);
       _commit_map.set_bit(i);
--- a/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.hpp	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.hpp	Mon Jan 19 11:35:45 2015 +0000
@@ -31,7 +31,6 @@
 // collection set.
 
 class G1CollectedHeap;
-class CardTableModRefBarrierSet;
 class ConcurrentG1Refine;
 class G1ParPushHeapRSClosure;
 
--- a/hotspot/src/share/vm/memory/metaspace.cpp	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/src/share/vm/memory/metaspace.cpp	Mon Jan 19 11:35:45 2015 +0000
@@ -3170,7 +3170,9 @@
     }
 
     // the min_misc_data_size and min_misc_code_size estimates are based on
-    // MetaspaceShared::generate_vtable_methods()
+    // MetaspaceShared::generate_vtable_methods().
+    // The minimum size only accounts for the vtable methods. Any size less than the
+    // minimum required size would cause vm crash when allocating the vtable methods.
     uint min_misc_data_size = align_size_up(
       MetaspaceShared::num_virtuals * MetaspaceShared::vtbl_list_size * sizeof(void*), max_alignment);
 
@@ -3336,6 +3338,10 @@
   Metachunk* new_chunk = get_initialization_chunk(NonClassType,
                                                   word_size,
                                                   vsm()->medium_chunk_bunch());
+  // For dumping shared archive, report error if allocation has failed.
+  if (DumpSharedSpaces && new_chunk == NULL) {
+    report_insufficient_metaspace(MetaspaceAux::committed_bytes() + word_size * BytesPerWord);
+  }
   assert(!DumpSharedSpaces || new_chunk != NULL, "should have enough space for both chunks");
   if (new_chunk != NULL) {
     // Add to this manager's list of chunks in use and current_chunk().
@@ -3349,6 +3355,11 @@
                                                       class_vsm()->medium_chunk_bunch());
     if (class_chunk != NULL) {
       class_vsm()->add_chunk(class_chunk, true);
+    } else {
+      // For dumping shared archive, report error if allocation has failed.
+      if (DumpSharedSpaces) {
+        report_insufficient_metaspace(MetaspaceAux::committed_bytes() + class_word_size * BytesPerWord);
+      }
     }
   }
 
--- a/hotspot/src/share/vm/opto/stringopts.cpp	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/src/share/vm/opto/stringopts.cpp	Mon Jan 19 11:35:45 2015 +0000
@@ -1507,10 +1507,12 @@
       }
       case StringConcat::StringMode: {
         const Type* type = kit.gvn().type(arg);
+        Node* count = NULL;
         if (type == TypePtr::NULL_PTR) {
           // replace the argument with the null checked version
           arg = null_string;
           sc->set_argument(argi, arg);
+          count = kit.load_String_length(kit.control(), arg);
         } else if (!type->higher_equal(TypeInstPtr::NOTNULL)) {
           // s = s != null ? s : "null";
           // length = length + (s.count - s.offset);
@@ -1533,10 +1535,13 @@
           // replace the argument with the null checked version
           arg = phi;
           sc->set_argument(argi, arg);
+          count = kit.load_String_length(kit.control(), arg);
+        } else {
+          // A corresponding nullcheck will be connected during IGVN MemNode::Ideal_common_DU_postCCP
+          // kit.control might be a different test, that can be hoisted above the actual nullcheck
+          // in case, that the control input is not null, Ideal_common_DU_postCCP will not look for a nullcheck.
+          count = kit.load_String_length(NULL, arg);
         }
-
-        Node* count = kit.load_String_length(kit.control(), arg);
-
         length = __ AddI(length, count);
         string_sizes->init_req(argi, NULL);
         break;
--- a/hotspot/src/share/vm/runtime/globals.hpp	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/src/share/vm/runtime/globals.hpp	Mon Jan 19 11:35:45 2015 +0000
@@ -2951,10 +2951,6 @@
   develop(intx, MallocCatchPtr, -1,                                         \
           "Hit breakpoint when mallocing/freeing this pointer")             \
                                                                             \
-  notproduct(intx, AssertRepeat, 1,                                         \
-          "number of times to evaluate expression in assert "               \
-          "(to estimate overhead); only works with -DUSE_REPEATED_ASSERTS") \
-                                                                            \
   notproduct(ccstrlist, SuppressErrorAt, "",                                \
           "List of assertions (file:line) to muzzle")                       \
                                                                             \
--- a/hotspot/src/share/vm/runtime/os.cpp	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/src/share/vm/runtime/os.cpp	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -547,20 +547,16 @@
 // This function supports testing of the malloc out of memory
 // condition without really running the system out of memory.
 //
-static u_char* testMalloc(size_t alloc_size) {
-  assert(MallocMaxTestWords > 0, "sanity check");
-
-  if ((cur_malloc_words + (alloc_size / BytesPerWord)) > MallocMaxTestWords) {
-    return NULL;
-  }
+static bool has_reached_max_malloc_test_peak(size_t alloc_size) {
+  if (MallocMaxTestWords > 0) {
+    jint words = (jint)(alloc_size / BytesPerWord);
 
-  u_char* ptr = (u_char*)::malloc(alloc_size);
-
-  if (ptr != NULL) {
-    Atomic::add(((jint) (alloc_size / BytesPerWord)),
-                (volatile jint *) &cur_malloc_words);
+    if ((cur_malloc_words + words) > MallocMaxTestWords) {
+      return true;
+    }
+    Atomic::add(words, (volatile jint *)&cur_malloc_words);
   }
-  return ptr;
+  return false;
 }
 
 void* os::malloc(size_t size, MEMFLAGS flags) {
@@ -608,12 +604,13 @@
 
   NOT_PRODUCT(if (MallocVerifyInterval > 0) check_heap());
 
+  // For the test flag -XX:MallocMaxTestWords
+  if (has_reached_max_malloc_test_peak(size)) {
+    return NULL;
+  }
+
   u_char* ptr;
-  if (MallocMaxTestWords > 0) {
-    ptr = testMalloc(alloc_size);
-  } else {
-    ptr = (u_char*)::malloc(alloc_size);
-  }
+  ptr = (u_char*)::malloc(alloc_size);
 
 #ifdef ASSERT
   if (ptr == NULL) {
@@ -642,6 +639,11 @@
 
 void* os::realloc(void *memblock, size_t size, MEMFLAGS memflags, const NativeCallStack& stack) {
 
+  // For the test flag -XX:MallocMaxTestWords
+  if (has_reached_max_malloc_test_peak(size)) {
+    return NULL;
+  }
+
 #ifndef ASSERT
   NOT_PRODUCT(inc_stat_counter(&num_mallocs, 1));
   NOT_PRODUCT(inc_stat_counter(&alloc_bytes, size));
--- a/hotspot/src/share/vm/shark/llvmHeaders.hpp	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/src/share/vm/shark/llvmHeaders.hpp	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -87,30 +87,7 @@
   #undef assert
 #endif
 
-// from hotspot/src/share/vm/utilities/debug.hpp
-#ifdef ASSERT
-#ifndef USE_REPEATED_ASSERTS
-#define assert(p, msg)                                                       \
-do {                                                                         \
-  if (!(p)) {                                                                \
-    report_vm_error(__FILE__, __LINE__, "assert(" #p ") failed", msg);       \
-    BREAKPOINT;                                                              \
-  }                                                                          \
-} while (0)
-#else // #ifndef USE_REPEATED_ASSERTS
-#define assert(p, msg)
-do {                                                                         \
-  for (int __i = 0; __i < AssertRepeat; __i++) {                             \
-    if (!(p)) {                                                              \
-      report_vm_error(__FILE__, __LINE__, "assert(" #p ") failed", msg);     \
-      BREAKPOINT;                                                            \
-    }                                                                        \
-  }                                                                          \
-} while (0)
-#endif // #ifndef USE_REPEATED_ASSERTS
-#else
-  #define assert(p, msg)
-#endif
+#define assert(p, msg) vmassert(p, msg)
 
 #ifdef DEBUG
   #undef DEBUG
--- a/hotspot/src/share/vm/utilities/debug.cpp	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/src/share/vm/utilities/debug.cpp	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -273,6 +273,14 @@
    exit(2);
 }
 
+void report_insufficient_metaspace(size_t required_size) {
+  warning("\nThe MaxMetaspaceSize of " UINTX_FORMAT " bytes is not large enough.\n"
+          "Either don't specify the -XX:MaxMetaspaceSize=<size>\n"
+          "or increase the size to at least " SIZE_FORMAT ".\n",
+          MaxMetaspaceSize, required_size);
+  exit(2);
+}
+
 void report_java_out_of_memory(const char* message) {
   static jint out_of_memory_reported = 0;
 
@@ -326,9 +334,9 @@
 
   // Keep this in sync with test/runtime/6888954/vmerrors.sh.
   switch (n) {
-    case  1: assert(str == NULL, "expected null");
-    case  2: assert(num == 1023 && *str == 'X',
-                    err_msg("num=" SIZE_FORMAT " str=\"%s\"", num, str));
+    case  1: vmassert(str == NULL, "expected null");
+    case  2: vmassert(num == 1023 && *str == 'X',
+                      err_msg("num=" SIZE_FORMAT " str=\"%s\"", num, str));
     case  3: guarantee(str == NULL, "expected null");
     case  4: guarantee(num == 1023 && *str == 'X',
                        err_msg("num=" SIZE_FORMAT " str=\"%s\"", num, str));
--- a/hotspot/src/share/vm/utilities/debug.hpp	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/src/share/vm/utilities/debug.hpp	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -105,58 +105,42 @@
   va_end(argp);
 }
 
-// Used to format messages for assert(), guarantee(), fatal(), etc.
+// Used to format messages for vmassert(), guarantee(), fatal(), etc.
 typedef FormatBuffer<> err_msg;
 typedef FormatBufferResource err_msg_res;
 
 // assertions
-#ifdef ASSERT
-#ifndef USE_REPEATED_ASSERTS
-#define assert(p, msg)                                                       \
+#ifndef ASSERT
+#define vmassert(p, msg)
+#else
+// Note: message says "assert" rather than "vmassert" for backward
+// compatibility with tools that parse/match the message text.
+#define vmassert(p, msg)                                                     \
 do {                                                                         \
   if (!(p)) {                                                                \
     report_vm_error(__FILE__, __LINE__, "assert(" #p ") failed", msg);       \
     BREAKPOINT;                                                              \
   }                                                                          \
 } while (0)
-#else // #ifndef USE_REPEATED_ASSERTS
-#define assert(p, msg)
-do {                                                                         \
-  for (int __i = 0; __i < AssertRepeat; __i++) {                             \
-    if (!(p)) {                                                              \
-      report_vm_error(__FILE__, __LINE__, "assert(" #p ") failed", msg);     \
-      BREAKPOINT;                                                            \
-    }                                                                        \
-  }                                                                          \
-} while (0)
-#endif // #ifndef USE_REPEATED_ASSERTS
+#endif
 
-// This version of assert is for use with checking return status from
+// For backward compatibility.
+#define assert(p, msg) vmassert(p, msg)
+
+// This version of vmassert is for use with checking return status from
 // library calls that return actual error values eg. EINVAL,
 // ENOMEM etc, rather than returning -1 and setting errno.
 // When the status is not what is expected it is very useful to know
 // what status was actually returned, so we pass the status variable as
 // an extra arg and use strerror to convert it to a meaningful string
 // like "Invalid argument", "out of memory" etc
-#define assert_status(p, status, msg)                                        \
-do {                                                                         \
-  if (!(p)) {                                                                \
-    report_vm_error(__FILE__, __LINE__, "assert(" #p ") failed",             \
-                    err_msg("error %s(%d) %s", strerror(status),             \
-                            status, msg));                                   \
-    BREAKPOINT;                                                              \
-  }                                                                          \
-} while (0)
+#define vmassert_status(p, status, msg) \
+  vmassert(p, err_msg("error %s(%d), %s", strerror(status), status, msg))
 
-// Do not assert this condition if there's already another error reported.
-#define assert_if_no_error(cond,msg) assert((cond) || is_error_reported(), msg)
-#else // #ifdef ASSERT
-  #define assert(p,msg)
-  #define assert_status(p,status,msg)
-  #define assert_if_no_error(cond,msg)
-#endif // #ifdef ASSERT
+// For backward compatibility.
+#define assert_status(p, status, msg) vmassert_status(p, status, msg)
 
-// guarantee is like assert except it's always executed -- use it for
+// guarantee is like vmassert except it's always executed -- use it for
 // cheap tests that catch errors that would otherwise be hard to find.
 // guarantee is also used for Verify options.
 #define guarantee(p, msg)                                                    \
@@ -225,21 +209,22 @@
 
 void warning(const char* format, ...) ATTRIBUTE_PRINTF(1, 2);
 
-#ifdef ASSERT
-// Compile-time asserts.
-template <bool> struct StaticAssert;
-template <> struct StaticAssert<true> {};
+// Compile-time asserts.  Cond must be a compile-time constant expression that
+// is convertible to bool.  STATIC_ASSERT() can be used anywhere a declaration
+// may appear.
+//
+// Implementation Note: STATIC_ASSERT_FAILURE<true> provides a value member
+// rather than type member that could be used directly in the typedef, because
+// a type member would require conditional use of "typename", depending on
+// whether Cond is dependent or not.  The use of a value member leads to the
+// use of an array type.
 
-// Only StaticAssert<true> is defined, so if cond evaluates to false we get
-// a compile time exception when trying to use StaticAssert<false>.
-#define STATIC_ASSERT(cond)                   \
-  do {                                        \
-    StaticAssert<(cond)> DUMMY_STATIC_ASSERT; \
-    (void)DUMMY_STATIC_ASSERT; /* ignore */   \
-  } while (false)
-#else
-#define STATIC_ASSERT(cond)
-#endif
+template<bool x> struct STATIC_ASSERT_FAILURE;
+template<> struct STATIC_ASSERT_FAILURE<true> { enum { value = 1 }; };
+
+#define STATIC_ASSERT(Cond)                             \
+  typedef char STATIC_ASSERT_FAILURE_ ## __LINE__ [     \
+    STATIC_ASSERT_FAILURE< (Cond) >::value ]
 
 // out of shared space reporting
 enum SharedSpaceType {
@@ -251,6 +236,8 @@
 
 void report_out_of_shared_space(SharedSpaceType space_type);
 
+void report_insufficient_metaspace(size_t required_size);
+
 // out of memory reporting
 void report_java_out_of_memory(const char* message);
 
@@ -258,7 +245,7 @@
 bool is_error_reported();
 void set_error_reported();
 
-/* Test assert(), fatal(), guarantee(), etc. */
+/* Test vmassert(), fatal(), guarantee(), etc. */
 NOT_PRODUCT(void test_error_handler();)
 
 void pd_ps(frame f);
--- a/hotspot/src/share/vm/utilities/xmlstream.cpp	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/src/share/vm/utilities/xmlstream.cpp	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,6 +33,10 @@
 #include "runtime/vmThread.hpp"
 #include "utilities/xmlstream.hpp"
 
+// Do not assert this condition if there's already another error reported.
+#define assert_if_no_error(cond, msg) \
+  vmassert((cond) || is_error_reported(), msg)
+
 void xmlStream::initialize(outputStream* out) {
   _out = out;
   _last_flush = 0;
--- a/hotspot/test/TEST.groups	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/test/TEST.groups	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -69,7 +69,6 @@
   gc/metaspace/TestPerfCountersAndMemoryPools.java \
   runtime/6819213/TestBootNativeLibraryPath.java \
   runtime/7158988/FieldMonitor.java \
-  runtime/7194254/Test7194254.java \
   runtime/Metaspace/FragmentMetaspace.java \
   runtime/NMT/BaselineWithParameter.java \
   runtime/NMT/JcmdBaselineDetail.java \
@@ -94,6 +93,7 @@
   runtime/NMT/VirtualAllocTestType.java \
   runtime/RedefineObject/TestRedefineObject.java \
   runtime/Thread/TestThreadDumpMonitorContention.java \
+  runtime/Thread/ThreadPriorities.java \
   runtime/XCheckJniJsig/XCheckJSig.java \
   serviceability/attach/AttachWithStalePidFile.java \
   serviceability/sa/jmap-hprof/JMapHProfLargeHeapTest.java \
@@ -232,7 +232,8 @@
   gc/g1/ \
   gc/metaspace/G1AddMetaspaceDependency.java \
   gc/metaspace/TestMetaspacePerfCounters.java \
-  gc/startup_warnings/TestG1.java 
+  gc/startup_warnings/TestG1.java \
+  gc/whitebox/TestConcMarkCycleWB.java
 
 # All tests that explicitly set the serial GC
 #
--- a/hotspot/test/compiler/jsr292/RedefineMethodUsedByMultipleMethodHandles.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/test/compiler/jsr292/RedefineMethodUsedByMultipleMethodHandles.java	Mon Jan 19 11:35:45 2015 +0000
@@ -26,6 +26,7 @@
  * @bug 8042235
  * @summary redefining method used by multiple MethodHandles crashes VM
  * @compile -XDignore.symbol.file RedefineMethodUsedByMultipleMethodHandles.java
+ * @ignore 7076820
  * @run main RedefineMethodUsedByMultipleMethodHandles
  */
 
--- a/hotspot/test/compiler/profiling/spectrapredefineclass/Launcher.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/test/compiler/profiling/spectrapredefineclass/Launcher.java	Mon Jan 19 11:35:45 2015 +0000
@@ -28,6 +28,7 @@
  * @bug 8038636
  * @library /testlibrary
  * @build Agent
+ * @ignore 7076820
  * @run main ClassFileInstaller Agent
  * @run main Launcher
  * @run main/othervm -XX:-TieredCompilation -XX:-BackgroundCompilation -XX:-UseOnStackReplacement -XX:TypeProfileLevel=222 -XX:ReservedCodeCacheSize=3M Agent
--- a/hotspot/test/compiler/profiling/spectrapredefineclass_classloaders/Launcher.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/test/compiler/profiling/spectrapredefineclass_classloaders/Launcher.java	Mon Jan 19 11:35:45 2015 +0000
@@ -28,6 +28,7 @@
  * @bug 8040237
  * @library /testlibrary
  * @build Agent Test A B
+ * @ignore 7076820
  * @run main ClassFileInstaller Agent
  * @run main Launcher
  * @run main/othervm -XX:-TieredCompilation -XX:-BackgroundCompilation -XX:-UseOnStackReplacement -XX:TypeProfileLevel=222 -XX:ReservedCodeCacheSize=3M Agent
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/stringopts/TestOptimizeStringConcat.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2015 SAP AG.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8068909
+ * @key regression
+ * @summary test that string optimizations produce code, that doesn't lead to a crash.
+ * @run main/othervm -XX:-BackgroundCompilation -XX:-UseOnStackReplacement TestOptimizeStringConcat
+ * @author axel.siebenborn@sap.com
+ */
+public class TestOptimizeStringConcat {
+
+    static boolean checkArgumentSyntax(String value, String allowedchars, String notallowedchars, String logmsg) {
+        String rc = null;
+
+        int maxchar = 99999;
+        int minchar = 1;
+        if ((allowedchars != null && notallowedchars != null) || minchar > maxchar) {
+            rc = "internal error";
+        } else {
+            if (value == null) {
+                rc = "the value null is not allowed, it is missing";
+            } else if (value != null && minchar > 0 && value.trim().equals("")) {
+                rc = "the value must not be empty";
+            } else if (value != null) {
+                if (value.length() < minchar || value.length() > maxchar) {
+                    if (rc == null) {
+                        rc = "the value length must be between +minchar+ and +maxchar";
+                    }
+                }
+                char[] _value = value.toCharArray();
+                boolean dotfound = false;
+                int i = 1;
+                if (_value[i] == '.' && !dotfound) {
+                    dotfound = true;
+                } else if (allowedchars != null && allowedchars.indexOf(_value[i]) == -1) {
+                    if (rc == null) {
+                        rc = "the value contains an illegal character: '" + _value[i] + "', only following characters are allowed: '+allowedchars+'";
+                    } else {
+                        rc += " / the value contains an illegal character: '" + _value[i] + "', only following characters are allowed: '+allowedchars+'";
+                    }
+                } else if (notallowedchars != null && notallowedchars.indexOf(_value[i]) != -1) {
+                    if (rc == null) {
+                        rc = "the value contains an illegal character: '" + _value[i] + "', following characters are not allowed '+notallowedchars+'";
+                    } else {
+                        rc += " / the value contains an illegal character: '" + _value[i] + "', following characters are not allowed '+notallowedchars+'";
+                    }
+                }
+            }
+        }
+
+        if (rc != null) {
+            System.out.println(logmsg + " ==> " + rc);
+            return false;
+        }
+        return true;
+    }
+
+    public static void main(String[] args) {
+        boolean failed = false;
+        for (int i = 0; i < 10000; i++) {
+            failed |= !checkArgumentSyntax("theName", null, "\"<&", "Error consistencyCheck: name in component definition");
+            failed |= !checkArgumentSyntax(null, null, "\"<&", "Error consistencyCheck: name in component definition");
+            failed |= !checkArgumentSyntax("42", "0123456789.", null, "Error consistencyCheck: counter in component definition");
+        }
+        System.out.println(failed);
+    }
+}
--- a/hotspot/test/gc/TestSmallHeap.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/test/gc/TestSmallHeap.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,34 +26,46 @@
  * @bug 8067438
  * @requires vm.gc=="null"
  * @summary Verify that starting the VM with a small heap works
- * @library /testlibrary
- * @run main/othervm -Xmx4m -XX:+UseParallelGC TestSmallHeap
- * @run main/othervm -Xmx4m -XX:+UseSerialGC TestSmallHeap
- * @run main/othervm -Xmx4m -XX:+UseG1GC TestSmallHeap
- * @run main/othervm -Xmx4m -XX:+UseConcMarkSweepGC -XX:CMSMarkStackSizeMax=1032 TestSmallHeap
+ * @library /testlibrary /../../test/lib
+ * @build TestSmallHeap
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xmx2m -XX:+UseParallelGC TestSmallHeap
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xmx2m -XX:+UseSerialGC TestSmallHeap
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xmx2m -XX:+UseG1GC TestSmallHeap
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xmx2m -XX:+UseConcMarkSweepGC TestSmallHeap
  *
- * Note: It would be nice to verify the minimal supported heap size here,
- * but that turns out to be quite tricky since we align the heap size based
- * on the card table size. And the card table size is aligned based on the
- * minimal pages size provided by the os. This means that on most platforms,
- * where the minimal page size is 4k, we get a minimal heap size of 2m but
- * on Solaris/Sparc we have a page size of 8k and get a minimal heap size
- * of 8m.
+ * Note: It would be nice to verify the minimal supported heap size (2m) here,
+ * but we align the heap size based on the card table size. And the card table
+ * size is aligned based on the minimal pages size provided by the os. This
+ * means that on most platforms, where the minimal page size is 4k, we get a
+ * minimal heap size of 2m but on Solaris/Sparc we have a page size of 8k and
+ * get a minimal heap size of 4m. And on platforms where the page size is 64k
+ * we get a minimal heap size of 32m. We never use large pages for the card table.
+ *
  * There is also no check in the VM for verifying that the maximum heap size
  * is larger than the supported minimal heap size. This means that specifying
- * -Xmx1m on the command line is fine but will give a heap of 2m (or 4m).
- * To work around these rather strange behaviors this test uses 4m for all
- * platforms.
+ * -Xmx1m on the command line is fine but will give a heap of 2m (or 4m or 32m).
+ *
+ * To work around these rather strange behaviors this test uses -Xmx2m but then
+ * calculates what the expected heap size should be. The calculation is a
+ * simplified version of the code in the VM. We assume that the card table will
+ * use one page. Each byte in the card table corresponds to 512 bytes on the heap.
+ * So, the expected heap size is page_size * 512.
  */
 
+import com.oracle.java.testlibrary.*;
+import static com.oracle.java.testlibrary.Asserts.*;
+import sun.hotspot.WhiteBox;
 import sun.management.ManagementFactoryHelper;
-import static com.oracle.java.testlibrary.Asserts.*;
 
 public class TestSmallHeap {
 
     public static void main(String[] args) {
+        WhiteBox wb = WhiteBox.getWhiteBox();
+        int pageSize = wb.getVMPageSize();
+        int heapBytesPerCard = 512;
+        long expectedMaxHeap = pageSize * heapBytesPerCard;
         String maxHeap = ManagementFactoryHelper.getDiagnosticMXBean().getVMOption("MaxHeapSize").getValue();
-        String expectedMaxHeap = "4194304";
-        assertEQ(maxHeap, expectedMaxHeap);
+        assertEQ(Long.parseLong(maxHeap), expectedMaxHeap);
     }
 }
--- a/hotspot/test/runtime/7194254/Test7194254.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug     7194254
- * @summary Creates several threads with different java priorities and checks
- *      whether jstack reports correct priorities for them.
- *
- * @ignore 8060219
- * @run main Test7194254
- */
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.lang.management.ManagementFactory;
-import java.lang.management.RuntimeMXBean;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.CyclicBarrier;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class Test7194254 {
-
-    public static void main(String[] args) throws Exception {
-        final int NUMBER_OF_JAVA_PRIORITIES =
-                Thread.MAX_PRIORITY - Thread.MIN_PRIORITY + 1;
-        final CyclicBarrier barrier =
-                new CyclicBarrier(NUMBER_OF_JAVA_PRIORITIES + 1);
-
-        for (int p = Thread.MIN_PRIORITY; p <= Thread.MAX_PRIORITY; ++p) {
-            final int priority = p;
-            new Thread("Priority=" + p) {
-                {
-                    setPriority(priority);
-                }
-                public void run() {
-                    try {
-                        barrier.await(); // 1st
-                        barrier.await(); // 2nd
-                    } catch (Exception exc) {
-                        // ignore
-                    }
-                }
-            }.start();
-        }
-        barrier.await(); // 1st
-
-        int matches = 0;
-        List<String> failed = new ArrayList<>();
-        try {
-            String pid = getPid();
-            String jstack = System.getProperty("java.home") + "/../bin/jstack";
-            Process process = new ProcessBuilder(jstack, pid)
-                    .redirectErrorStream(true).start();
-            Pattern pattern = Pattern.compile(
-                    "\\\"Priority=(\\d+)\\\".* prio=(\\d+).*");
-            try (BufferedReader reader = new BufferedReader(
-                    new InputStreamReader(process.getInputStream()))) {
-                String line;
-                while((line = reader.readLine()) != null) {
-                    Matcher matcher = pattern.matcher(line);
-                    if (matcher.matches()) {
-                        matches += 1;
-                        String expected = matcher.group(1);
-                        String actual = matcher.group(2);
-                        if (!expected.equals(actual)) {
-                            failed.add(line);
-                        }
-                    }
-                }
-            }
-            barrier.await(); // 2nd
-        } finally {
-            barrier.reset();
-        }
-
-        if (matches != NUMBER_OF_JAVA_PRIORITIES) {
-            throw new AssertionError("matches: expected " +
-                    NUMBER_OF_JAVA_PRIORITIES + ", but was " + matches);
-        }
-        if (!failed.isEmpty()) {
-            throw new AssertionError(failed.size() + ":" + failed);
-        }
-        System.out.println("Test passes.");
-    }
-
-    static String getPid() {
-        RuntimeMXBean runtimebean = ManagementFactory.getRuntimeMXBean();
-        String vmname = runtimebean.getName();
-        int i = vmname.indexOf('@');
-        if (i != -1) {
-            vmname = vmname.substring(0, i);
-        }
-        return vmname;
-    }
-
-}
-
--- a/hotspot/test/runtime/NMT/ChangeTrackingLevel.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/test/runtime/NMT/ChangeTrackingLevel.java	Mon Jan 19 11:35:45 2015 +0000
@@ -27,6 +27,7 @@
  * @summary Test that you can decrease NMT tracking level but not increase it.
  * @key nmt
  * @library /testlibrary /../../test/lib
+ * @ignore 8067167
  * @build ChangeTrackingLevel
  * @run main ClassFileInstaller sun.hotspot.WhiteBox
  *                              sun.hotspot.WhiteBox$WhiteBoxPermission
--- a/hotspot/test/runtime/NMT/PrintNMTStatistics.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/hotspot/test/runtime/NMT/PrintNMTStatistics.java	Mon Jan 19 11:35:45 2015 +0000
@@ -27,6 +27,7 @@
  * @bug 8005936 8058606
  * @summary Verify PrintNMTStatistics on normal JVM exit for detail and summary tracking level
  * @library /testlibrary
+ * @ignore 8067167
  */
 
 import com.oracle.java.testlibrary.*;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/SharedArchiveFile/MaxMetaspaceSize.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8067187
+ * @summary Testing CDS dumping with the -XX:MaxMetaspaceSize=<size> option
+ * @library /testlibrary
+ */
+
+import com.oracle.java.testlibrary.*;
+
+public class MaxMetaspaceSize {
+  public static void main(String[] args) throws Exception {
+    ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
+        "-XX:MaxMetaspaceSize=20m", "-Xshare:dump");
+    OutputAnalyzer output = new OutputAnalyzer(pb.start());
+      output.shouldContain("is not large enough.\nEither don't specify the -XX:MaxMetaspaceSize=<size>\nor increase the size to at least");
+      output.shouldHaveExitValue(2);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/Thread/ThreadPriorities.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2012, 2015 Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug     7194254
+ * @summary Creates several threads with different java priorities and checks
+ *      whether jstack reports correct priorities for them.
+ *
+ * @library /testlibrary
+ * @run main ThreadPriorities
+ */
+
+import java.util.ArrayList;
+import java.util.concurrent.CyclicBarrier;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import com.oracle.java.testlibrary.*;
+import static com.oracle.java.testlibrary.Asserts.*;
+
+public class ThreadPriorities {
+
+    public static void main(String[] args) throws Throwable {
+        final int NUMBER_OF_JAVA_PRIORITIES =
+                Thread.MAX_PRIORITY - Thread.MIN_PRIORITY + 1;
+        final CyclicBarrier barrier =
+                new CyclicBarrier(NUMBER_OF_JAVA_PRIORITIES + 1);
+
+        for (int p = Thread.MIN_PRIORITY; p <= Thread.MAX_PRIORITY; ++p) {
+            final int priority = p;
+            new Thread("Priority=" + p) {
+                {
+                    setPriority(priority);
+                }
+                public void run() {
+                    try {
+                        barrier.await(); // 1st
+                        barrier.await(); // 2nd
+                    } catch (Exception exc) {
+                        // ignore
+                    }
+                }
+            }.start();
+        }
+        barrier.await(); // 1st
+
+        int matches = 0;
+        ArrayList<String> failed = new ArrayList<>();
+        ProcessBuilder pb = new ProcessBuilder(
+                JDKToolFinder.getJDKTool("jstack"),
+                String.valueOf(ProcessTools.getProcessId()));
+
+        String[] output = new OutputAnalyzer(pb.start()).getOutput().split("\\n+");
+
+        Pattern pattern = Pattern.compile(
+                "\\\"Priority=(\\d+)\\\".* prio=(\\d+).*");
+        for (String line : output) {
+            Matcher matcher = pattern.matcher(line);
+            if (matcher.matches()) {
+                matches += 1;
+                String expected = matcher.group(1);
+                String actual = matcher.group(2);
+                if (!expected.equals(actual)) {
+                    failed.add(line);
+                }
+            }
+        }
+        barrier.await(); // 2nd
+        barrier.reset();
+
+        assertEquals(matches, NUMBER_OF_JAVA_PRIORITIES);
+        assertTrue(failed.isEmpty(), failed.size() + ":" + failed);
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/Unsafe/Reallocate.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8058897
+ * @library /testlibrary
+ * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:MallocMaxTestWords=100m Reallocate
+ */
+
+import com.oracle.java.testlibrary.*;
+import sun.misc.Unsafe;
+import static com.oracle.java.testlibrary.Asserts.*;
+
+public class Reallocate {
+    public static void main(String args[]) throws Exception {
+        Unsafe unsafe = Utils.getUnsafe();
+
+        long address = unsafe.allocateMemory(1);
+        assertNotEquals(address, 0L);
+
+        // Make sure we reallocate correctly
+        unsafe.putByte(address, Byte.MAX_VALUE);
+        address = unsafe.reallocateMemory(address, 2);
+        assertNotEquals(address, 0L);
+        assertEquals(unsafe.getByte(address), Byte.MAX_VALUE);
+
+        // Reallocating with a 0 size should return a null pointer
+        address = unsafe.reallocateMemory(address, 0);
+        assertEquals(address, 0L);
+
+        // Reallocating with a null pointer should result in a normal allocation
+        address = unsafe.reallocateMemory(0L, 1);
+        assertNotEquals(address, 0L);
+        unsafe.putByte(address, Byte.MAX_VALUE);
+        assertEquals(unsafe.getByte(address), Byte.MAX_VALUE);
+
+        // Make sure we can throw an OOME when we fail to reallocate due to OOM
+        try {
+            unsafe.reallocateMemory(address, 100 * 1024 * 1024 * 8);
+        } catch (OutOfMemoryError e) {
+            // Expected
+            return;
+        }
+        throw new RuntimeException("Did not get expected OOM");
+    }
+}
--- a/jaxp/.hgtags	Mon Jan 19 09:32:40 2015 +0100
+++ b/jaxp/.hgtags	Mon Jan 19 11:35:45 2015 +0000
@@ -287,3 +287,4 @@
 47b0d3fa4118b9d56870cf4004987438c501f5c0 jdk9-b42
 40b242363040229a05224fbc5dc203a3f46a8f8f jdk9-b43
 0cb0844b58924d6086d2850c22087d06679d5eef jdk9-b44
+0dab3e848229127c7aca4c58b98e2d90ba70372f jdk9-b45
--- a/jaxws/.hgtags	Mon Jan 19 09:32:40 2015 +0100
+++ b/jaxws/.hgtags	Mon Jan 19 11:35:45 2015 +0000
@@ -290,3 +290,4 @@
 301ddb4478fb36d1f025d14e7e48c2a434e9e6ff jdk9-b42
 edc13d27dc871be57d7ca77eef77e6d04972fee2 jdk9-b43
 2a03baa4d849818ff6d635f110c2813b12fc2326 jdk9-b44
+e529374fbe526dbd668e5e98fc047b42b3bc6d33 jdk9-b45
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/LazyEnvelopeSource.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.SOAPException;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.stream.XMLStreamWriter;
-
-/**
- * LazyEnvelopeSource provides the source to create lazy Envelope
- *
- * @author shih-chang.chen@oracle.com
- */
-public interface LazyEnvelopeSource extends javax.xml.transform.Source {
-    /**
-     * Retrieve payload qname without materializing its contents
-     * @return
-     * @throws SOAPException
-     */
-    public QName getPayloadQName();
-    public XMLStreamReader readToBodyStarTag() throws XMLStreamException;
-    public XMLStreamReader readPayload();
-    public void writePayloadTo(XMLStreamWriter writer)throws XMLStreamException;
-    public boolean isPayloadStreamReader();
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/SOAPExceptionImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,196 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj;
-
-import java.io.PrintStream;
-import java.io.PrintWriter;
-
-import javax.xml.soap.SOAPException;
-
-/**
- * An exception that signals that a SOAP exception has occurred. A
- * <code>SOAPExceptionImpl</code> object may contain a <code>String</code>
- * that gives the reason for the exception, an embedded
- * <code>Throwable</code> object, or both. This class provides methods
- * for retrieving reason messages and for retrieving the embedded
- * <code>Throwable</code> object.
- *
- * <P> Typical reasons for throwing a <code>SOAPExceptionImpl</code>
- * object are problems such as difficulty setting a header, not being
- * able to send a message, and not being able to get a connection with
- * the provider.  Reasons for embedding a <code>Throwable</code>
- * object include problems such as input/output errors or a parsing
- * problem, such as an error in parsing a header.
- */
-public class SOAPExceptionImpl extends SOAPException {
-    private Throwable cause;
-
-    /**
-     * Constructs a <code>SOAPExceptionImpl</code> object with no
-     * reason or embedded <code>Throwable</code> object.
-     */
-    public SOAPExceptionImpl() {
-        super();
-        this.cause = null;
-    }
-
-    /**
-     * Constructs a <code>SOAPExceptionImpl</code> object with the given
-     * <code>String</code> as the reason for the exception being thrown.
-     *
-     * @param reason a description of what caused the exception
-     */
-    public SOAPExceptionImpl(String reason) {
-        super(reason);
-        this.cause = null;
-    }
-
-    /**
-     * Constructs a <code>SOAPExceptionImpl</code> object with the given
-     * <code>String</code> as the reason for the exception being thrown
-     * and the given <code>Throwable</code> object as an embedded
-     * exception.
-     *
-     * @param reason a description of what caused the exception
-     * @param cause a <code>Throwable</code> object that is to
-     *        be embedded in this <code>SOAPExceptionImpl</code> object
-     */
-    public SOAPExceptionImpl(String reason, Throwable cause) {
-       super (reason);
-       initCause(cause);
-    }
-
-    /**
-     * Constructs a <code>SOAPExceptionImpl</code> object initialized
-     * with the given <code>Throwable</code> object.
-     */
-    public SOAPExceptionImpl(Throwable cause) {
-        super (cause.toString());
-        initCause(cause);
-    }
-
-    /**
-     * Returns the detail message for this <code>SOAPExceptionImpl</code>
-     * object.
-     * <P>
-     * If there is an embedded <code>Throwable</code> object, and if the
-     * <code>SOAPExceptionImpl</code> object has no detail message of its
-     * own, this method will return the detail message from the embedded
-     * <code>Throwable</code> object.
-     *
-     * @return the error or warning message for this
-     *         <code>SOAPExceptionImpl</code> or, if it has none, the
-     *         message of the embedded <code>Throwable</code> object,
-     *         if there is one
-     */
-    public String getMessage() {
-        String message = super.getMessage ();
-        if (message == null && cause != null) {
-            return cause.getMessage();
-        } else {
-            return message;
-        }
-    }
-
-    /**
-     * Returns the <code>Throwable</code> object embedded in this
-     * <code>SOAPExceptionImpl</code> if there is one. Otherwise, this method
-     * returns <code>null</code>.
-     *
-     * @return the embedded <code>Throwable</code> object or <code>null</code>
-     *         if there is none
-     */
-
-    public Throwable getCause() {
-        return cause;
-    }
-
-    /**
-     * Initializes the <code>cause</code> field of this <code>SOAPExceptionImpl</code>
-     * object with the given <code>Throwable</code> object.
-     * <P>
-     * This method can be called at most once.  It is generally called from
-     * within the constructor or immediately after the constructor has
-     * returned a new <code>SOAPExceptionImpl</code> object.
-     * If this <code>SOAPExceptionImpl</code> object was created with the
-     * constructor {@link #SOAPExceptionImpl(Throwable)} or
-     * {@link #SOAPExceptionImpl(String,Throwable)}, meaning that its
-     * <code>cause</code> field already has a value, this method cannot be
-     * called even once.
-     *
-     * @param  cause the <code>Throwable</code> object that caused this
-     *         <code>SOAPExceptionImpl</code> object to be thrown.  The value of this
-     *         parameter is saved for later retrieval by the
-     *         {@link #getCause()} method.  A <tt>null</tt> value is
-     *         permitted and indicates that the cause is nonexistent or
-     *         unknown.
-     * @return  a reference to this <code>SOAPExceptionImpl</code> instance
-     * @throws IllegalArgumentException if <code>cause</code> is this
-     *         <code>Throwable</code> object.  (A <code>Throwable</code> object
-     *         cannot be its own cause.)
-     * @throws IllegalStateException if this <code>SOAPExceptionImpl</code> object
-     *         was created with {@link #SOAPExceptionImpl(Throwable)} or
-     *         {@link #SOAPExceptionImpl(String,Throwable)}, or this
-     *         method has already been called on this <code>SOAPExceptionImpl</code>
-     *         object
-     */
-    public synchronized Throwable initCause(Throwable cause)
-    {
-        if(this.cause != null) {
-            throw new IllegalStateException("Can't override cause");
-        }
-        if(cause == this) {
-            throw new IllegalArgumentException("Self-causation not permitted");
-        }
-        this.cause = cause;
-
-        return this;
-    }
-
-    public void printStackTrace() {
-        super.printStackTrace();
-        if (cause != null) {
-            System.err.println("\nCAUSE:\n");
-            cause.printStackTrace();
-        }
-    }
-
-    public void printStackTrace(PrintStream s) {
-        super.printStackTrace(s);
-        if (cause != null) {
-            s.println("\nCAUSE:\n");
-            cause.printStackTrace(s);
-        }
-    }
-
-    public void printStackTrace(PrintWriter s) {
-        super.printStackTrace(s);
-        if (cause != null) {
-            s.println("\nCAUSE:\n");
-            cause.printStackTrace(s);
-        }
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/HttpSOAPConnection.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,657 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.client.p2p;
-
-import java.io.*;
-import java.lang.reflect.Method;
-import java.net.*;
-import java.security.*;
-import java.util.Iterator;
-import java.util.StringTokenizer;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.xml.soap.*;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-import com.sun.xml.internal.messaging.saaj.util.*;
-
-/**
- * This represents a "connection" to the simple HTTP-based provider.
- *
- * @author Anil Vijendran (akv@eng.sun.com)
- * @author Rajiv Mordani (rajiv.mordani@sun.com)
- * @author Manveen Kaur (manveen.kaur@sun.com)
- *
- */
-class HttpSOAPConnection extends SOAPConnection {
-
-    public static final String vmVendor = SAAJUtil.getSystemProperty("java.vendor.url");
-    private static final String sunVmVendor = "http://java.sun.com/";
-    private static final String ibmVmVendor = "http://www.ibm.com/";
-    private static final boolean isSunVM = sunVmVendor.equals(vmVendor) ? true: false;
-    private static final boolean isIBMVM = ibmVmVendor.equals(vmVendor) ? true : false;
-    private static final String JAXM_URLENDPOINT="javax.xml.messaging.URLEndpoint";
-
-    protected static final Logger log =
-        Logger.getLogger(LogDomainConstants.HTTP_CONN_DOMAIN,
-                         "com.sun.xml.internal.messaging.saaj.client.p2p.LocalStrings");
-
-
-    MessageFactory messageFactory = null;
-
-    boolean closed = false;
-
-    public HttpSOAPConnection() throws SOAPException {
-
-        try {
-            messageFactory = MessageFactory.newInstance(SOAPConstants.DYNAMIC_SOAP_PROTOCOL);
-        } catch (NoSuchMethodError ex) {
-            //fallback to default SOAP 1.1 in this case for backward compatibility
-            messageFactory = MessageFactory.newInstance();
-        } catch (Exception ex) {
-            log.log(Level.SEVERE, "SAAJ0001.p2p.cannot.create.msg.factory", ex);
-            throw new SOAPExceptionImpl("Unable to create message factory", ex);
-        }
-    }
-
-    public void close() throws SOAPException {
-        if (closed) {
-            log.severe("SAAJ0002.p2p.close.already.closed.conn");
-            throw new SOAPExceptionImpl("Connection already closed");
-        }
-
-        messageFactory = null;
-        closed = true;
-    }
-
-   public SOAPMessage call(SOAPMessage message, Object endPoint)
-        throws SOAPException {
-        if (closed) {
-            log.severe("SAAJ0003.p2p.call.already.closed.conn");
-            throw new SOAPExceptionImpl("Connection is closed");
-        }
-
-        Class urlEndpointClass = null;
-        ClassLoader loader = Thread.currentThread().getContextClassLoader();
-        try {
-            if (loader != null) {
-                urlEndpointClass = loader.loadClass(JAXM_URLENDPOINT);
-            } else {
-                urlEndpointClass = Class.forName(JAXM_URLENDPOINT);
-            }
-        } catch (ClassNotFoundException ex) {
-            //Do nothing. URLEndpoint is available only when JAXM is there.
-            if (log.isLoggable(Level.FINEST))
-                log.finest("SAAJ0090.p2p.endpoint.available.only.for.JAXM");
-        }
-
-        if (urlEndpointClass != null) {
-            if (urlEndpointClass.isInstance(endPoint)) {
-                String url = null;
-
-                try {
-                    Method m = urlEndpointClass.getMethod("getURL", (Class[])null);
-                    url = (String) m.invoke(endPoint, (Object[])null);
-                } catch (Exception ex) {
-                    // TBD -- exception chaining
-                    log.log(Level.SEVERE,"SAAJ0004.p2p.internal.err",ex);
-                    throw new SOAPExceptionImpl(
-                        "Internal error: " + ex.getMessage());
-                }
-                try {
-                    endPoint = new URL(url);
-                } catch (MalformedURLException mex) {
-                    log.log(Level.SEVERE,"SAAJ0005.p2p.", mex);
-                    throw new SOAPExceptionImpl("Bad URL: " + mex.getMessage());
-                }
-            }
-        }
-
-        if (endPoint instanceof java.lang.String) {
-            try {
-                endPoint = new URL((String) endPoint);
-            } catch (MalformedURLException mex) {
-                log.log(Level.SEVERE, "SAAJ0006.p2p.bad.URL", mex);
-                throw new SOAPExceptionImpl("Bad URL: " + mex.getMessage());
-            }
-        }
-
-        if (endPoint instanceof URL)
-            try {
-                SOAPMessage response = post(message, (URL)endPoint);
-                return response;
-            } catch (Exception ex) {
-                // TBD -- chaining?
-                throw new SOAPExceptionImpl(ex);
-            } else {
-            log.severe("SAAJ0007.p2p.bad.endPoint.type");
-            throw new SOAPExceptionImpl("Bad endPoint type " + endPoint);
-        }
-    }
-
-    SOAPMessage post(SOAPMessage message, URL endPoint) throws SOAPException, IOException {
-        boolean isFailure = false;
-
-        URL url = null;
-        HttpURLConnection httpConnection = null;
-
-        int responseCode = 0;
-        try {
-            if (endPoint.getProtocol().equals("https"))
-                //if(!setHttps)
-                initHttps();
-            // Process the URL
-            URI uri = new URI(endPoint.toString());
-            String userInfo = uri.getRawUserInfo();
-
-            url = endPoint;
-
-            if (dL > 0)
-                d("uri: " + userInfo + " " + url + " " + uri);
-
-            // TBD
-            //    Will deal with https later.
-            if (!url.getProtocol().equalsIgnoreCase("http")
-                && !url.getProtocol().equalsIgnoreCase("https")) {
-                log.severe("SAAJ0052.p2p.protocol.mustbe.http.or.https");
-                throw new IllegalArgumentException(
-                    "Protocol "
-                        + url.getProtocol()
-                        + " not supported in URL "
-                        + url);
-            }
-            httpConnection = (HttpURLConnection) createConnection(url);
-
-            httpConnection.setRequestMethod("POST");
-
-            httpConnection.setDoOutput(true);
-            httpConnection.setDoInput(true);
-            httpConnection.setUseCaches(false);
-            httpConnection.setInstanceFollowRedirects(true);
-
-            if (message.saveRequired())
-                message.saveChanges();
-
-            MimeHeaders headers = message.getMimeHeaders();
-
-            Iterator it = headers.getAllHeaders();
-            boolean hasAuth = false; // true if we find explicit Auth header
-            while (it.hasNext()) {
-                MimeHeader header = (MimeHeader) it.next();
-
-                String[] values = headers.getHeader(header.getName());
-                if (values.length == 1)
-                    httpConnection.setRequestProperty(
-                        header.getName(),
-                        header.getValue());
-                else {
-                    StringBuffer concat = new StringBuffer();
-                    int i = 0;
-                    while (i < values.length) {
-                        if (i != 0)
-                            concat.append(',');
-                        concat.append(values[i]);
-                        i++;
-                    }
-
-                    httpConnection.setRequestProperty(
-                        header.getName(),
-                        concat.toString());
-                }
-
-                if ("Authorization".equals(header.getName())) {
-                    hasAuth = true;
-                    if (log.isLoggable(Level.FINE))
-                        log.fine("SAAJ0091.p2p.https.auth.in.POST.true");
-                }
-            }
-
-            if (!hasAuth && userInfo != null) {
-                initAuthUserInfo(httpConnection, userInfo);
-            }
-
-            OutputStream out = httpConnection.getOutputStream();
-            try {
-                message.writeTo(out);
-                out.flush();
-            } finally {
-                out.close();
-            }
-
-            httpConnection.connect();
-
-            try {
-
-                responseCode = httpConnection.getResponseCode();
-
-                // let HTTP_INTERNAL_ERROR (500) through because it is used for SOAP faults
-                if (responseCode == HttpURLConnection.HTTP_INTERNAL_ERROR) {
-                    isFailure = true;
-                }
-                //else if (responseCode != HttpURLConnection.HTTP_OK)
-                //else if (!(responseCode >= HttpURLConnection.HTTP_OK && responseCode < 207))
-                else if ((responseCode / 100) != 2) {
-                    log.log(Level.SEVERE,
-                            "SAAJ0008.p2p.bad.response",
-                            new String[] {httpConnection.getResponseMessage()});
-                    throw new SOAPExceptionImpl(
-                        "Bad response: ("
-                            + responseCode
-                            + httpConnection.getResponseMessage());
-
-                }
-            } catch (IOException e) {
-                // on JDK1.3.1_01, we end up here, but then getResponseCode() succeeds!
-                responseCode = httpConnection.getResponseCode();
-                if (responseCode == HttpURLConnection.HTTP_INTERNAL_ERROR) {
-                    isFailure = true;
-                } else {
-                    throw e;
-                }
-
-            }
-
-        } catch (SOAPException ex) {
-            throw ex;
-        } catch (Exception ex) {
-            log.severe("SAAJ0009.p2p.msg.send.failed");
-            throw new SOAPExceptionImpl("Message send failed", ex);
-        }
-
-        SOAPMessage response = null;
-        InputStream httpIn = null;
-        if (responseCode == HttpURLConnection.HTTP_OK || isFailure) {
-            try {
-                MimeHeaders headers = new MimeHeaders();
-
-                String key, value;
-
-                // Header field 0 is the status line so we skip it.
-
-                int i = 1;
-
-                while (true) {
-                    key = httpConnection.getHeaderFieldKey(i);
-                    value = httpConnection.getHeaderField(i);
-
-                    if (key == null && value == null)
-                        break;
-
-                    if (key != null) {
-                        StringTokenizer values =
-                            new StringTokenizer(value, ",");
-                        while (values.hasMoreTokens())
-                            headers.addHeader(key, values.nextToken().trim());
-                    }
-                    i++;
-                }
-
-                httpIn =
-                    (isFailure
-                        ? httpConnection.getErrorStream()
-                        : httpConnection.getInputStream());
-
-                byte[] bytes = readFully(httpIn);
-
-                int length =
-                    httpConnection.getContentLength() == -1
-                        ? bytes.length
-                        : httpConnection.getContentLength();
-
-                // If no reply message is returned,
-                // content-Length header field value is expected to be zero.
-                if (length == 0) {
-                    response = null;
-                    log.warning("SAAJ0014.p2p.content.zero");
-                } else {
-                    ByteInputStream in = new ByteInputStream(bytes, length);
-                    response = messageFactory.createMessage(headers, in);
-                }
-
-            } catch (SOAPException ex) {
-                throw ex;
-            } catch (Exception ex) {
-                log.log(Level.SEVERE,"SAAJ0010.p2p.cannot.read.resp", ex);
-                throw new SOAPExceptionImpl(
-                    "Unable to read response: " + ex.getMessage());
-            } finally {
-               if (httpIn != null)
-                   httpIn.close();
-               httpConnection.disconnect();
-            }
-        }
-        return response;
-    }
-
-    // Object identifies where the request should be sent.
-    // It is required to support objects of type String and java.net.URL.
-
-    public SOAPMessage get(Object endPoint) throws SOAPException {
-        if (closed) {
-            log.severe("SAAJ0011.p2p.get.already.closed.conn");
-            throw new SOAPExceptionImpl("Connection is closed");
-        }
-        Class urlEndpointClass = null;
-
-        try {
-            urlEndpointClass = Class.forName("javax.xml.messaging.URLEndpoint");
-        } catch (Exception ex) {
-            //Do nothing. URLEndpoint is available only when JAXM is there.
-        }
-
-        if (urlEndpointClass != null) {
-            if (urlEndpointClass.isInstance(endPoint)) {
-                String url = null;
-
-                try {
-                    Method m = urlEndpointClass.getMethod("getURL", (Class[])null);
-                    url = (String) m.invoke(endPoint, (Object[])null);
-                } catch (Exception ex) {
-                    log.severe("SAAJ0004.p2p.internal.err");
-                    throw new SOAPExceptionImpl(
-                        "Internal error: " + ex.getMessage());
-                }
-                try {
-                    endPoint = new URL(url);
-                } catch (MalformedURLException mex) {
-                    log.severe("SAAJ0005.p2p.");
-                    throw new SOAPExceptionImpl("Bad URL: " + mex.getMessage());
-                }
-            }
-        }
-
-        if (endPoint instanceof java.lang.String) {
-            try {
-                endPoint = new URL((String) endPoint);
-            } catch (MalformedURLException mex) {
-                log.severe("SAAJ0006.p2p.bad.URL");
-                throw new SOAPExceptionImpl("Bad URL: " + mex.getMessage());
-            }
-        }
-
-        if (endPoint instanceof URL)
-            try {
-                SOAPMessage response = doGet((URL)endPoint);
-                return response;
-            } catch (Exception ex) {
-                throw new SOAPExceptionImpl(ex);
-            } else
-            throw new SOAPExceptionImpl("Bad endPoint type " + endPoint);
-    }
-
-    SOAPMessage doGet(URL endPoint) throws SOAPException, IOException {
-        boolean isFailure = false;
-
-        URL url = null;
-        HttpURLConnection httpConnection = null;
-
-        int responseCode = 0;
-        try {
-            /// Is https GET allowed??
-            if (endPoint.getProtocol().equals("https"))
-                initHttps();
-            // Process the URL
-            URI uri = new URI(endPoint.toString());
-            String userInfo = uri.getRawUserInfo();
-
-            url = endPoint;
-
-            if (dL > 0)
-                d("uri: " + userInfo + " " + url + " " + uri);
-
-            // TBD
-            //    Will deal with https later.
-            if (!url.getProtocol().equalsIgnoreCase("http")
-                && !url.getProtocol().equalsIgnoreCase("https")) {
-                log.severe("SAAJ0052.p2p.protocol.mustbe.http.or.https");
-                throw new IllegalArgumentException(
-                    "Protocol "
-                        + url.getProtocol()
-                        + " not supported in URL "
-                        + url);
-            }
-            httpConnection = (HttpURLConnection) createConnection(url);
-
-            httpConnection.setRequestMethod("GET");
-
-            httpConnection.setDoOutput(true);
-            httpConnection.setDoInput(true);
-            httpConnection.setUseCaches(false);
-            httpConnection.setFollowRedirects(true);
-
-            httpConnection.connect();
-
-            try {
-
-                responseCode = httpConnection.getResponseCode();
-
-                // let HTTP_INTERNAL_ERROR (500) through because it is used for SOAP faults
-                if (responseCode == HttpURLConnection.HTTP_INTERNAL_ERROR) {
-                    isFailure = true;
-                } else if ((responseCode / 100) != 2) {
-                    log.log(Level.SEVERE,
-                            "SAAJ0008.p2p.bad.response",
-                            new String[] { httpConnection.getResponseMessage()});
-                    throw new SOAPExceptionImpl(
-                        "Bad response: ("
-                            + responseCode
-                            + httpConnection.getResponseMessage());
-
-                }
-            } catch (IOException e) {
-                // on JDK1.3.1_01, we end up here, but then getResponseCode() succeeds!
-                responseCode = httpConnection.getResponseCode();
-                if (responseCode == HttpURLConnection.HTTP_INTERNAL_ERROR) {
-                    isFailure = true;
-                } else {
-                    throw e;
-                }
-
-            }
-
-        } catch (SOAPException ex) {
-            throw ex;
-        } catch (Exception ex) {
-            log.severe("SAAJ0012.p2p.get.failed");
-            throw new SOAPExceptionImpl("Get failed", ex);
-        }
-
-        SOAPMessage response = null;
-        InputStream httpIn = null;
-        if (responseCode == HttpURLConnection.HTTP_OK || isFailure) {
-            try {
-                MimeHeaders headers = new MimeHeaders();
-
-                String key, value;
-
-                // Header field 0 is the status line so we skip it.
-
-                int i = 1;
-
-                while (true) {
-                    key = httpConnection.getHeaderFieldKey(i);
-                    value = httpConnection.getHeaderField(i);
-
-                    if (key == null && value == null)
-                        break;
-
-                    if (key != null) {
-                        StringTokenizer values =
-                            new StringTokenizer(value, ",");
-                        while (values.hasMoreTokens())
-                            headers.addHeader(key, values.nextToken().trim());
-                    }
-                    i++;
-                }
-
-                httpIn =
-                        (isFailure
-                        ? httpConnection.getErrorStream()
-                        : httpConnection.getInputStream());
-                // If no reply message is returned,
-                // content-Length header field value is expected to be zero.
-                // java SE 6 documentation says :
-                // available() : an estimate of the number of bytes that can be read
-                //(or skipped over) from this input stream without blocking
-                //or 0 when it reaches the end of the input stream.
-                if ((httpIn == null )
-                        || (httpConnection.getContentLength() == 0)
-                        || (httpIn.available() == 0)) {
-                    response = null;
-                    log.warning("SAAJ0014.p2p.content.zero");
-                } else {
-                    response = messageFactory.createMessage(headers, httpIn);
-                }
-
-            } catch (SOAPException ex) {
-                throw ex;
-            } catch (Exception ex) {
-                log.log(Level.SEVERE,
-                        "SAAJ0010.p2p.cannot.read.resp",
-                        ex);
-                throw new SOAPExceptionImpl(
-                    "Unable to read response: " + ex.getMessage());
-            } finally {
-               if (httpIn != null)
-                   httpIn.close();
-               httpConnection.disconnect();
-            }
-        }
-        return response;
-    }
-
-    private byte[] readFully(InputStream istream) throws IOException {
-        ByteArrayOutputStream bout = new ByteArrayOutputStream();
-        byte[] buf = new byte[1024];
-        int num = 0;
-
-        while ((num = istream.read(buf)) != -1) {
-            bout.write(buf, 0, num);
-        }
-
-        byte[] ret = bout.toByteArray();
-
-        return ret;
-    }
-
-    //private static String SSL_PKG = "com.sun.net.ssl.internal.www.protocol";
-    //private static String SSL_PROVIDER =
-      //  "com.sun.net.ssl.internal.ssl.Provider";
-    private static final String SSL_PKG;
-    private static final String SSL_PROVIDER;
-
-    static {
-        if (isIBMVM) {
-            SSL_PKG ="com.ibm.net.ssl.internal.www.protocol";
-            SSL_PROVIDER ="com.ibm.net.ssl.internal.ssl.Provider";
-        } else {
-            //if not IBM VM default to Sun.
-            SSL_PKG = "com.sun.net.ssl.internal.www.protocol";
-            SSL_PROVIDER ="com.sun.net.ssl.internal.ssl.Provider";
-        }
-    }
-
-    private void initHttps() {
-        //if(!setHttps) {
-        String pkgs = SAAJUtil.getSystemProperty("java.protocol.handler.pkgs");
-        if (log.isLoggable(Level.FINE))
-            log.log(Level.FINE, "SAAJ0053.p2p.providers", new String[] { pkgs });
-
-        if (pkgs == null || pkgs.indexOf(SSL_PKG) < 0) {
-            if (pkgs == null)
-                pkgs = SSL_PKG;
-            else
-                pkgs = pkgs + "|" + SSL_PKG;
-            System.setProperty("java.protocol.handler.pkgs", pkgs);
-            if (log.isLoggable(Level.FINE))
-                log.log(Level.FINE, "SAAJ0054.p2p.set.providers",
-                        new String[] { pkgs });
-            try {
-                Class c = Class.forName(SSL_PROVIDER);
-                Provider p = (Provider) c.newInstance();
-                Security.addProvider(p);
-                if (log.isLoggable(Level.FINE))
-                    log.log(Level.FINE, "SAAJ0055.p2p.added.ssl.provider",
-                            new String[] { SSL_PROVIDER });
-                //System.out.println("Added SSL_PROVIDER " + SSL_PROVIDER);
-                //setHttps = true;
-            } catch (Exception ex) {
-            }
-        }
-        //}
-    }
-
-    private void initAuthUserInfo(HttpURLConnection conn, String userInfo) {
-        String user;
-        String password;
-        if (userInfo != null) { // get the user and password
-            //System.out.println("UserInfo= " + userInfo );
-            int delimiter = userInfo.indexOf(':');
-            if (delimiter == -1) {
-                user = ParseUtil.decode(userInfo);
-                password = null;
-            } else {
-                user = ParseUtil.decode(userInfo.substring(0, delimiter++));
-                password = ParseUtil.decode(userInfo.substring(delimiter));
-            }
-
-            String plain = user + ":";
-            byte[] nameBytes = plain.getBytes();
-            byte[] passwdBytes = (password == null ? new byte[0] : password
-                    .getBytes());
-
-            // concatenate user name and password bytes and encode them
-            byte[] concat = new byte[nameBytes.length + passwdBytes.length];
-
-            System.arraycopy(nameBytes, 0, concat, 0, nameBytes.length);
-            System.arraycopy(
-                passwdBytes,
-                0,
-                concat,
-                nameBytes.length,
-                passwdBytes.length);
-            String auth = "Basic " + new String(Base64.encode(concat));
-            conn.setRequestProperty("Authorization", auth);
-            if (dL > 0)
-                d("Adding auth " + auth);
-        }
-    }
-
-    private static final int dL = 0;
-    private void d(String s) {
-        log.log(Level.SEVERE,
-                "SAAJ0013.p2p.HttpSOAPConnection",
-                new String[] { s });
-        System.err.println("HttpSOAPConnection: " + s);
-    }
-
-    private java.net.HttpURLConnection createConnection(URL endpoint)
-        throws IOException {
-        return (HttpURLConnection) endpoint.openConnection();
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/HttpSOAPConnectionFactory.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.client.p2p;
-
-import javax.xml.soap.*;
-
-/**
- * Implementation of the SOAPConnectionFactory
- *
- * @author Anil Vijendran (anil@sun.com)
- */
-public class HttpSOAPConnectionFactory extends SOAPConnectionFactory {
-
-    public SOAPConnection createConnection()
-        throws SOAPException
-    {
-        return new HttpSOAPConnection();
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages
-# Error messages
-SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: Unable to create Message Factory
-SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: Connection already closed (from close method)
-SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: Connection already closed (from call)
-SAAJ0004.p2p.internal.err=SAAJ0004: Internal error
-SAAJ0005.p2p.=SAAJ0005: Bad URL (endPoint instance of javax.xml.messaging.URLEndpoint)
-# 0005 : getURL failed on javax.xml.messaging.URLEndpoint
-SAAJ0006.p2p.bad.URL=SAAJ0006: Bad URL (endPoint instance of String)
-SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: Bad endPoint type (endPoint instance of URL)
-SAAJ0008.p2p.bad.response=SAAJ0008: Bad Response; {0}
-SAAJ0009.p2p.msg.send.failed=SAAJ0009: Message send failed
-SAAJ0010.p2p.cannot.read.resp=SAAJ0010: Unable to read response
-SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: Connection already closed (from get)
-SAAJ0012.p2p.get.failed=SAAJ0012: Get failed
-SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0}
-SAAJ0014.p2p.content.zero=SAAJ0014: Invalid reply message. Content length of reply was zero.
-
-# Debug messages
-SAAJ0050.p2p.proxy.host=SAAJ0050: Proxy host: {0}
-SAAJ0051.p2p.proxy.port=SAAJ0051: Proxy Port: {0}
-SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: Protocol not supported in URL, must be http or https
-# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
-SAAJ0053.p2p.providers=SAAJ0053: Providers {0}
-# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
-SAAJ0054.p2p.set.providers=SAAJ0054: Setting Providers {0}
-# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider"
-SAAJ0055.p2p.added.ssl.provider=SAAJ0055: Added SSL_PROVIDER {0}
-
-# Trace messages
-SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: URLEndpoint is available only when JAXM is there
-SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: HTTPS Authorization in POST set to true
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_de.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages
-# Error messages
-SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: Nachrichten-Factory kann nicht erstellt werden
-SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: Verbindung ist bereits beendet (mit close-Methode)
-SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: Verbindung ist bereits beendet (mit call)
-SAAJ0004.p2p.internal.err=SAAJ0004: Interner Fehler
-SAAJ0005.p2p.=SAAJ0005: Ung\u00FCltige URL (endPoint-Instanz von javax.xml.messaging.URLEndpoint)
-# 0005 : getURL failed on javax.xml.messaging.URLEndpoint
-SAAJ0006.p2p.bad.URL=SAAJ0006: Ung\u00FCltige URL (endPoint-Instanz von Zeichenfolge)
-SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: Ung\u00FCltiger endPoint-Typ (endPoint-Instanz von URL)
-SAAJ0008.p2p.bad.response=SAAJ0008: Ung\u00FCltige Antwort; {0}
-SAAJ0009.p2p.msg.send.failed=SAAJ0009: Nachricht konnte nicht gesendet werden
-SAAJ0010.p2p.cannot.read.resp=SAAJ0010: Antwort konnte nicht gelesen werden
-SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: Verbindung ist bereits beendet (mit get)
-SAAJ0012.p2p.get.failed=SAAJ0012: Get-Vorgang nicht erfolgreich
-SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0}
-SAAJ0014.p2p.content.zero=SAAJ0014: Ung\u00FCltige Antwortnachricht. Contentl\u00E4nge von Antwort war null.
-
-# Debug messages
-SAAJ0050.p2p.proxy.host=SAAJ0050: Proxyhost: {0}
-SAAJ0051.p2p.proxy.port=SAAJ0051: Proxyport: {0}
-SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: Protokoll in URL nicht unterst\u00FCtzt, muss http oder https sein
-# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
-SAAJ0053.p2p.providers=SAAJ0053: Provider {0}
-# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
-SAAJ0054.p2p.set.providers=SAAJ0054: Provider {0} werden festgelegt
-# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider"
-SAAJ0055.p2p.added.ssl.provider=SAAJ0055: SSL_PROVIDER {0} hinzugef\u00FCgt
-
-# Trace messages
-SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: URLEndpoint ist nur verf\u00FCgbar, wenn JAXM vorhanden ist
-SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: HTTPS-Autorisierung in POST auf "True" festgelegt
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_es.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages
-# Error messages
-SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: no se ha podido crear la f\u00E1brica de mensajes
-SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: la conexi\u00F3n ya est\u00E1 cerrada (desde el m\u00E9todo de cierre)
-SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: la conexi\u00F3n ya est\u00E1 cerrada (desde la llamada)
-SAAJ0004.p2p.internal.err=SAAJ0004: error interno
-SAAJ0005.p2p.=SAAJ0005: URL err\u00F3nea (instancia endPoint de javax.xml.messaging.URLEndpoint)
-# 0005 : getURL failed on javax.xml.messaging.URLEndpoint
-SAAJ0006.p2p.bad.URL=SAAJ0006: URL err\u00F3nea (instancia endPoint de String)
-SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: tipo endPoint err\u00F3neo (instancia endPoint de URL)
-SAAJ0008.p2p.bad.response=SAAJ0008: respuesta err\u00F3nea; {0}
-SAAJ0009.p2p.msg.send.failed=SAAJ0009: fallo de env\u00EDo de mensaje
-SAAJ0010.p2p.cannot.read.resp=SAAJ0010: no se ha podido leer la respuesta
-SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: la conexi\u00F3n ya est\u00E1 cerrada (desde la obtenci\u00F3n)
-SAAJ0012.p2p.get.failed=SAAJ0012: fallo de obtenci\u00F3n
-SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0}
-SAAJ0014.p2p.content.zero=SAAJ0014: mensaje de respuesta no v\u00E1lido. La longitud del contenido de respuesta es cero.
-
-# Debug messages
-SAAJ0050.p2p.proxy.host=SAAJ0050: Host de proxy: {0}
-SAAJ0051.p2p.proxy.port=SAAJ0051: Puerto de proxy: {0}
-SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: el protocolo no est\u00E1 soportado en la URL. Debe ser http o https
-# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
-SAAJ0053.p2p.providers=SAAJ0053: proveedores {0}
-# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
-SAAJ0054.p2p.set.providers=SAAJ0054: definici\u00F3n de Proveedores {0}
-# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider"
-SAAJ0055.p2p.added.ssl.provider=SAAJ0055: se ha agregado SSL_PROVIDER {0}
-
-# Trace messages
-SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: URLEndpoint s\u00F3lo est\u00E1 disponible cuando JAXM est\u00E1 all\u00ED
-SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: la autorizaci\u00F3n de HTTPS en POST se ha definido en true
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_fr.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages
-# Error messages
-SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001 : impossible de cr\u00E9er une fabrique de messages
-SAAJ0002.p2p.close.already.closed.conn=SAAJ0002 : connexion d\u00E9j\u00E0 ferm\u00E9e (\u00E0 partir de la m\u00E9thode de fermeture)
-SAAJ0003.p2p.call.already.closed.conn=SAAJ0003 : connexion d\u00E9j\u00E0 ferm\u00E9e (\u00E0 partir de l'appel)
-SAAJ0004.p2p.internal.err=SAAJ0004 : erreur interne
-SAAJ0005.p2p.=SAAJ0005 : URL incorrecte (instance d'adresse de javax.xml.messaging.URLEndpoint)
-# 0005 : getURL failed on javax.xml.messaging.URLEndpoint
-SAAJ0006.p2p.bad.URL=SAAJ0006 : URL incorrecte (instance d'adresse de la cha\u00EEne)
-SAAJ0007.p2p.bad.endPoint.type=SAAJ0007 : type d'adresse incorrect (instance d'adresse de l'URL)
-SAAJ0008.p2p.bad.response=SAAJ0008 : r\u00E9ponse incorrecte ; {0}
-SAAJ0009.p2p.msg.send.failed=SAAJ0009 : \u00E9chec de l'envoi du message
-SAAJ0010.p2p.cannot.read.resp=SAAJ0010 : impossible de lire la r\u00E9ponse
-SAAJ0011.p2p.get.already.closed.conn=SAAJ0011 : connexion d\u00E9j\u00E0 ferm\u00E9e (\u00E0 partir de la m\u00E9thode get)
-SAAJ0012.p2p.get.failed=SAAJ0012 : \u00E9chec de la m\u00E9thode get
-SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013 : HttpSOAPConnection : {0}
-SAAJ0014.p2p.content.zero=SAAJ0014 : message de r\u00E9ponse non valide. La longueur du contenu de la r\u00E9ponse \u00E9tait de z\u00E9ro.
-
-# Debug messages
-SAAJ0050.p2p.proxy.host=SAAJ0050 : h\u00F4te proxy : {0}
-SAAJ0051.p2p.proxy.port=SAAJ0051 : port proxy : {0}
-SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052 : protocole non pris en charge dans l'URL, il doit s'agir de http ou https
-# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
-SAAJ0053.p2p.providers=SAAJ0053 : fournisseurs {0}
-# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
-SAAJ0054.p2p.set.providers=SAAJ0054 : d\u00E9finition des fournisseurs {0}
-# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider"
-SAAJ0055.p2p.added.ssl.provider=SAAJ0055 : SSL_PROVIDER {0} ajout\u00E9
-
-# Trace messages
-SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090 : URLEndpoint est disponible uniquement lorsque JAXM est pr\u00E9sent
-SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091 : autorisation HTTPS dans POST d\u00E9finie sur True
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_it.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages
-# Error messages
-SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: Impossibile creare il message factory
-SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: Connessione gi\u00E0 chiusa (dal metodo close)
-SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: Connessione gi\u00E0 chiusa (dal metodo call)
-SAAJ0004.p2p.internal.err=SAAJ0004: Errore interno
-SAAJ0005.p2p.=SAAJ0005: URL non valido (istanza endPoint di javax.xml.messaging.URLEndpoint)
-# 0005 : getURL failed on javax.xml.messaging.URLEndpoint
-SAAJ0006.p2p.bad.URL=SAAJ0006: URL non valido (istanza endPoint di String)
-SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: Tipo endPoint non valido (istanza endPoint dell'URL)
-SAAJ0008.p2p.bad.response=SAAJ0008: Risposta non valida; {0}
-SAAJ0009.p2p.msg.send.failed=SAAJ0009: Invio del messaggio non riuscito
-SAAJ0010.p2p.cannot.read.resp=SAAJ0010: Impossibile leggere la risposta
-SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: Connessione gi\u00E0 chiusa (dal metodo get)
-SAAJ0012.p2p.get.failed=SAAJ0012: Metodo get non riuscito
-SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0}
-SAAJ0014.p2p.content.zero=SAAJ0014: Messaggio di risposta non valido. La lunghezza del contenuto della risposta era pari a zero.
-
-# Debug messages
-SAAJ0050.p2p.proxy.host=SAAJ0050: Host proxy: {0}
-SAAJ0051.p2p.proxy.port=SAAJ0051: Porta proxy: {0}
-SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: Protocollo non supportato nell'URL, deve essere http o https
-# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
-SAAJ0053.p2p.providers=SAAJ0053: Provider {0}
-# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
-SAAJ0054.p2p.set.providers=SAAJ0054: Impostazione dei provider {0}
-# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider"
-SAAJ0055.p2p.added.ssl.provider=SAAJ0055: SSL_PROVIDER {0} aggiunto
-
-# Trace messages
-SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: L'endpoint dell'URL \u00E8 disponibile solo quando \u00E8 presente JAXM
-SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: Autorizzazione HTTPS in POST impostata su true
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_ja.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages
-# Error messages
-SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: \u30E1\u30C3\u30BB\u30FC\u30B8\u30FB\u30D5\u30A1\u30AF\u30C8\u30EA\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093
-SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: (close\u30E1\u30BD\u30C3\u30C9\u304B\u3089)\u63A5\u7D9A\u306F\u3059\u3067\u306B\u30AF\u30ED\u30FC\u30BA\u3055\u308C\u3066\u3044\u307E\u3059
-SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: (call\u304B\u3089)\u63A5\u7D9A\u306F\u3059\u3067\u306B\u30AF\u30ED\u30FC\u30BA\u3055\u308C\u3066\u3044\u307E\u3059
-SAAJ0004.p2p.internal.err=SAAJ0004: \u5185\u90E8\u30A8\u30E9\u30FC
-SAAJ0005.p2p.=SAAJ0005: \u7121\u52B9\u306AURL (javax.xml.messaging.URLEndpoint\u306EendPoint\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9)
-# 0005 : getURL failed on javax.xml.messaging.URLEndpoint
-SAAJ0006.p2p.bad.URL=SAAJ0006: \u7121\u52B9\u306AURL (\u6587\u5B57\u5217\u306EendPoint\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9)
-SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: \u7121\u52B9\u306AendPoint\u30BF\u30A4\u30D7(URL\u306EendPoint\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9)
-SAAJ0008.p2p.bad.response=SAAJ0008: \u4E0D\u6B63\u306A\u30EC\u30B9\u30DD\u30F3\u30B9; {0}
-SAAJ0009.p2p.msg.send.failed=SAAJ0009: \u30E1\u30C3\u30BB\u30FC\u30B8\u9001\u4FE1\u306B\u5931\u6557\u3057\u307E\u3057\u305F
-SAAJ0010.p2p.cannot.read.resp=SAAJ0010: \u30EC\u30B9\u30DD\u30F3\u30B9\u3092\u8AAD\u307F\u53D6\u308C\u307E\u305B\u3093
-SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: (get\u304B\u3089)\u63A5\u7D9A\u306F\u3059\u3067\u306B\u30AF\u30ED\u30FC\u30BA\u3055\u308C\u3066\u3044\u307E\u3059
-SAAJ0012.p2p.get.failed=SAAJ0012: \u53D6\u5F97\u306B\u5931\u6557\u3057\u307E\u3057\u305F
-SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0}
-SAAJ0014.p2p.content.zero=SAAJ0014: \u5FDC\u7B54\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u7121\u52B9\u3067\u3059\u3002\u5FDC\u7B54\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u9577\u304C\u30BC\u30ED\u3067\u3057\u305F\u3002
-
-# Debug messages
-SAAJ0050.p2p.proxy.host=SAAJ0050: \u30D7\u30ED\u30AD\u30B7\u30FB\u30DB\u30B9\u30C8: {0}
-SAAJ0051.p2p.proxy.port=SAAJ0051: \u30D7\u30ED\u30AD\u30B7\u30FB\u30DD\u30FC\u30C8: {0}
-SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: URL\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u30D7\u30ED\u30C8\u30B3\u30EB\u3067\u3059\u3002http\u307E\u305F\u306Fhttps\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
-# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
-SAAJ0053.p2p.providers=SAAJ0053: \u30D7\u30ED\u30D0\u30A4\u30C0{0}
-# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
-SAAJ0054.p2p.set.providers=SAAJ0054: \u30D7\u30ED\u30D0\u30A4\u30C0{0}\u3092\u8A2D\u5B9A\u3057\u3066\u3044\u307E\u3059
-# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider"
-SAAJ0055.p2p.added.ssl.provider=SAAJ0055: SSL_PROVIDER {0}\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3057\u305F
-
-# Trace messages
-SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: URLEndpoint\u3092\u4F7F\u7528\u3067\u304D\u308B\u306E\u306FJAXM\u304C\u5B58\u5728\u3059\u308B\u5834\u5408\u306E\u307F\u3067\u3059
-SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: POST\u306EHTTPS\u8A8D\u8A3C\u304Ctrue\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_ko.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages
-# Error messages
-SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: \uBA54\uC2DC\uC9C0 \uD329\uD1A0\uB9AC\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: close \uBA54\uC18C\uB4DC\uC5D0\uC11C \uC811\uC18D\uC774 \uC774\uBBF8 \uD574\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
-SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: \uD638\uCD9C\uC5D0\uC11C \uC811\uC18D\uC774 \uC774\uBBF8 \uD574\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
-SAAJ0004.p2p.internal.err=SAAJ0004: \uB0B4\uBD80 \uC624\uB958
-SAAJ0005.p2p.=SAAJ0005: URL(javax.xml.messaging.URLEndpoint\uC758 \uB05D\uC810 \uC778\uC2A4\uD134\uC2A4)\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
-# 0005 : getURL failed on javax.xml.messaging.URLEndpoint
-SAAJ0006.p2p.bad.URL=SAAJ0006: URL(\uBB38\uC790\uC5F4\uC758 \uB05D\uC810 \uC778\uC2A4\uD134\uC2A4)\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
-SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: \uB05D\uC810 \uC720\uD615(URL\uC758 \uB05D\uC810 \uC778\uC2A4\uD134\uC2A4)\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
-SAAJ0008.p2p.bad.response=SAAJ0008: \uC798\uBABB\uB41C \uC751\uB2F5: {0}
-SAAJ0009.p2p.msg.send.failed=SAAJ0009: \uBA54\uC2DC\uC9C0 \uC804\uC1A1\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
-SAAJ0010.p2p.cannot.read.resp=SAAJ0010: \uC751\uB2F5\uC744 \uC77D\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: \uAC00\uC838\uC624\uAE30\uC5D0\uC11C \uC811\uC18D\uC774 \uC774\uBBF8 \uD574\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
-SAAJ0012.p2p.get.failed=SAAJ0012: \uAC00\uC838\uC624\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
-SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0}
-SAAJ0014.p2p.content.zero=SAAJ0014: \uD68C\uC2E0 \uBA54\uC2DC\uC9C0\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. \uD68C\uC2E0\uC758 \uCF58\uD150\uCE20 \uAE38\uC774\uAC00 0\uC785\uB2C8\uB2E4.
-
-# Debug messages
-SAAJ0050.p2p.proxy.host=SAAJ0050: \uD504\uB85D\uC2DC \uD638\uC2A4\uD2B8: {0}
-SAAJ0051.p2p.proxy.port=SAAJ0051: \uD504\uB85D\uC2DC \uD3EC\uD2B8: {0}
-SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: URL\uC5D0\uC11C \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uB294 \uD504\uB85C\uD1A0\uCF5C\uC785\uB2C8\uB2E4. http \uB610\uB294 https\uC5EC\uC57C \uD569\uB2C8\uB2E4.
-# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
-SAAJ0053.p2p.providers=SAAJ0053: {0} \uC81C\uACF5\uC790
-# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
-SAAJ0054.p2p.set.providers=SAAJ0054: {0} \uC81C\uACF5\uC790\uB97C \uC124\uC815\uD558\uB294 \uC911
-# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider"
-SAAJ0055.p2p.added.ssl.provider=SAAJ0055: SSL_PROVIDER {0}\uC744(\uB97C) \uCD94\uAC00\uD588\uC2B5\uB2C8\uB2E4.
-
-# Trace messages
-SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: JAXM\uC774 \uC788\uB294 \uACBD\uC6B0\uC5D0\uB9CC URLEndpoint\uB97C \uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
-SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: POST\uC758 HTTPS \uAD8C\uD55C \uBD80\uC5EC\uAC00 true\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_pt_BR.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages
-# Error messages
-SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: n\u00E3o \u00E9 poss\u00EDvel criar a factory da mensagem
-SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: a conex\u00E3o j\u00E1 foi fechada (do m\u00E9todo de fechamento)
-SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: conex\u00E3o j\u00E1 fechada (da chamada)
-SAAJ0004.p2p.internal.err=SAAJ0004: erro interno
-SAAJ0005.p2p.=SAAJ0005: URL incorreto (a inst\u00E2ncia do endPoint de javax.xml.messaging.URLEndpoint)
-# 0005 : getURL failed on javax.xml.messaging.URLEndpoint
-SAAJ0006.p2p.bad.URL=SAAJ0006: URL incorreto (inst\u00E2ncia de endPoint da String)
-SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: tipo de endPoint incorreto (inst\u00E2ncia de endPoint do URL)
-SAAJ0008.p2p.bad.response=SAAJ0008: Resposta Incorreta; {0}
-SAAJ0009.p2p.msg.send.failed=SAAJ0009: falha no envio da mensagem
-SAAJ0010.p2p.cannot.read.resp=SAAJ0010: n\u00E3o \u00E9 poss\u00EDvel ler a resposta
-SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: conex\u00E3o j\u00E1 fechada (de get)
-SAAJ0012.p2p.get.failed=SAAJ0012: falha de get
-SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0}
-SAAJ0014.p2p.content.zero=SAAJ0014: mensagem de resposta inv\u00E1lida. O tamanho do conte\u00FAdo da resposta era zero.
-
-# Debug messages
-SAAJ0050.p2p.proxy.host=SAAJ0050: host proxy: {0}
-SAAJ0051.p2p.proxy.port=SAAJ0051: porta proxy: {0}
-SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: protocolo n\u00E3o suportado no URL, deve ser http ou https
-# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
-SAAJ0053.p2p.providers=SAAJ0053: provedores {0}
-# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
-SAAJ0054.p2p.set.providers=SAAJ0054: definindo provedores {0}
-# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider"
-SAAJ0055.p2p.added.ssl.provider=SAAJ0055: SSL_PROVIDER {0} adicionado
-
-# Trace messages
-SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: URLEndpoint est\u00E1 dispon\u00EDvel s\u00F3 quando JAXM est\u00E1 presente
-SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: autoriza\u00E7\u00E3o de HTTPS no POST definida como verdadeira
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_zh_CN.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages
-# Error messages
-SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: \u65E0\u6CD5\u521B\u5EFA\u6D88\u606F\u5DE5\u5382
-SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: \u8FDE\u63A5\u5DF2\u5173\u95ED (\u4ECE close \u65B9\u6CD5)
-SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: \u8FDE\u63A5\u5DF2\u5173\u95ED (\u4ECE\u8C03\u7528)
-SAAJ0004.p2p.internal.err=SAAJ0004: \u5185\u90E8\u9519\u8BEF
-SAAJ0005.p2p.=SAAJ0005: URL \u9519\u8BEF (javax.xml.messaging.URLEndpoint \u7684 endPoint \u5B9E\u4F8B)
-# 0005 : getURL failed on javax.xml.messaging.URLEndpoint
-SAAJ0006.p2p.bad.URL=SAAJ0006: URL \u9519\u8BEF (\u5B57\u7B26\u4E32\u7684 endPoint \u5B9E\u4F8B)
-SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: endPoint \u7C7B\u578B\u9519\u8BEF (URL \u7684 endPoint \u5B9E\u4F8B)
-SAAJ0008.p2p.bad.response=SAAJ0008: \u54CD\u5E94\u9519\u8BEF; {0}
-SAAJ0009.p2p.msg.send.failed=SAAJ0009: \u672A\u80FD\u53D1\u9001\u6D88\u606F
-SAAJ0010.p2p.cannot.read.resp=SAAJ0010: \u65E0\u6CD5\u8BFB\u53D6\u54CD\u5E94
-SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: \u8FDE\u63A5\u5DF2\u5173\u95ED (\u4ECE get \u65B9\u6CD5)
-SAAJ0012.p2p.get.failed=SAAJ0012: Get \u5931\u8D25
-SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0}
-SAAJ0014.p2p.content.zero=SAAJ0014: \u56DE\u590D\u6D88\u606F\u65E0\u6548\u3002\u56DE\u590D\u7684\u5185\u5BB9\u957F\u5EA6\u4E3A\u96F6\u3002
-
-# Debug messages
-SAAJ0050.p2p.proxy.host=SAAJ0050: \u4EE3\u7406\u4E3B\u673A: {0}
-SAAJ0051.p2p.proxy.port=SAAJ0051: \u4EE3\u7406\u7AEF\u53E3: {0}
-SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: URL \u4E2D\u4E0D\u652F\u6301\u534F\u8BAE, \u5FC5\u987B\u662F http \u6216 https
-# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
-SAAJ0053.p2p.providers=SAAJ0053: \u63D0\u4F9B\u65B9{0}
-# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
-SAAJ0054.p2p.set.providers=SAAJ0054: \u8BBE\u7F6E\u63D0\u4F9B\u65B9{0}
-# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider"
-SAAJ0055.p2p.added.ssl.provider=SAAJ0055: \u5DF2\u6DFB\u52A0 SSL_PROVIDER {0}
-
-# Trace messages
-SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: \u53EA\u6709\u5728\u4F7F\u7528 JAXM \u65F6, URLEndpoint \u624D\u53EF\u7528
-SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: POST \u4E2D\u7684 HTTPS \u6388\u6743\u8BBE\u7F6E\u4E3A\u201C\u771F\u201D
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_zh_TW.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages
-# Error messages
-SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: \u7121\u6CD5\u5EFA\u7ACB\u8A0A\u606F\u8655\u7406\u7AD9
-SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: \u9023\u7DDA\u5DF2\u7D93\u95DC\u9589 (\u5F9E\u95DC\u9589\u65B9\u6CD5)
-SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: \u9023\u7DDA\u5DF2\u7D93\u95DC\u9589 (\u5F9E\u547C\u53EB)
-SAAJ0004.p2p.internal.err=SAAJ0004: \u5167\u90E8\u932F\u8AA4
-SAAJ0005.p2p.=SAAJ0005: \u932F\u8AA4\u7684 URL (javax.xml.messaging.URLEndpoint \u7684 endPoint \u57F7\u884C\u8655\u7406)
-# 0005 : getURL failed on javax.xml.messaging.URLEndpoint
-SAAJ0006.p2p.bad.URL=SAAJ0006: \u932F\u8AA4\u7684 URL (\u5B57\u4E32\u7684 endPoint \u57F7\u884C\u8655\u7406)
-SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: \u932F\u8AA4\u7684 endPoint \u985E\u578B (URL \u7684 endPoint \u57F7\u884C\u8655\u7406)
-SAAJ0008.p2p.bad.response=SAAJ0008: \u932F\u8AA4\u7684\u56DE\u61C9; {0}
-SAAJ0009.p2p.msg.send.failed=SAAJ0009: \u8A0A\u606F\u50B3\u9001\u5931\u6557
-SAAJ0010.p2p.cannot.read.resp=SAAJ0010: \u7121\u6CD5\u8B80\u53D6\u56DE\u61C9
-SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: \u9023\u7DDA\u5DF2\u7D93\u95DC\u9589 (\u5F9E\u53D6\u5F97)
-SAAJ0012.p2p.get.failed=SAAJ0012: \u53D6\u5F97\u5931\u6557
-SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0}
-SAAJ0014.p2p.content.zero=SAAJ0014: \u7121\u6548\u7684\u56DE\u8986\u8A0A\u606F. \u56DE\u8986\u7684\u5167\u5BB9\u9577\u5EA6\u70BA\u96F6.
-
-# Debug messages
-SAAJ0050.p2p.proxy.host=SAAJ0050: \u4EE3\u7406\u4E3B\u6A5F: {0}
-SAAJ0051.p2p.proxy.port=SAAJ0051: \u4EE3\u7406\u4E3B\u6A5F\u9023\u63A5\u57E0: {0}
-SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: \u4E0D\u652F\u63F4 URL \u4E2D\u7684\u5354\u5B9A, \u5FC5\u9808\u662F http \u6216 https
-# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
-SAAJ0053.p2p.providers=SAAJ0053: \u63D0\u4F9B\u8005 {0}
-# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
-SAAJ0054.p2p.set.providers=SAAJ0054: \u8A2D\u5B9A\u63D0\u4F9B\u8005 {0}
-# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider"
-SAAJ0055.p2p.added.ssl.provider=SAAJ0055: \u5DF2\u65B0\u589E SSL_PROVIDER {0}
-
-# Trace messages
-SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: \u53EA\u6709\u5728\u6709 JAXM \u6642\u624D\u80FD\u4F7F\u7528 URLEndpoint
-SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: POST \u4E2D\u7684 HTTPS \u6388\u6B0A\u8A2D\u70BA true
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/Header.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)Header.java    1.3 02/03/27
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime;
-
-
-/**
- * The Header class stores a name/value pair to represent headers.
- *
- * @author John Mani
- */
-
-public interface Header {
-
-    /**
-     * Returns the name of this header.
-     *
-     * @return          name of the header
-     */
-    String getName();
-
-    /**
-     * Returns the value of this header.
-     *
-     * @return          value of the header
-     */
-    String getValue();
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/MessagingException.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)MessagingException.java        1.10 02/06/13
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime;
-
-
-/**
- * The base class for all exceptions thrown by the Messaging classes
- *
- * @author John Mani
- * @author Bill Shannon
- */
-
-public class MessagingException extends Exception {
-
-    /**
-     * The next exception in the chain.
-     *
-     * @serial
-     */
-    private Exception next;
-
-    /**
-     * Constructs a MessagingException with no detail message.
-     */
-    public MessagingException() {
-        super();
-    }
-
-    /**
-     * Constructs a MessagingException with the specified detail message.
-     * @param s         the detail message
-     */
-    public MessagingException(String s) {
-        super(s);
-    }
-
-    /**
-     * Constructs a MessagingException with the specified
-     * Exception and detail message. The specified exception is chained
-     * to this exception.
-     * @param s         the detail message
-     * @param e         the embedded exception
-     * @see     #getNextException
-     * @see     #setNextException
-     */
-    public MessagingException(String s, Exception e) {
-        super(s);
-        next = e;
-    }
-
-    /**
-     * Get the next exception chained to this one. If the
-     * next exception is a MessagingException, the chain
-     * may extend further.
-     *
-     * @return  next Exception, null if none.
-     */
-    public synchronized Exception getNextException() {
-        return next;
-    }
-
-    /**
-     * Add an exception to the end of the chain. If the end
-     * is <strong>not</strong> a MessagingException, this
-     * exception cannot be added to the end.
-     *
-     * @param   ex      the new end of the Exception chain
-     * @return          <code>true</code> if the this Exception
-     *                  was added, <code>false</code> otherwise.
-     */
-    public synchronized boolean setNextException(Exception ex) {
-        Exception theEnd = this;
-        while (theEnd instanceof MessagingException &&
-               ((MessagingException)theEnd).next != null) {
-            theEnd = ((MessagingException)theEnd).next;
-        }
-        // If the end is a MessagingException, we can add this
-        // exception to the chain.
-        if (theEnd instanceof MessagingException) {
-            ((MessagingException)theEnd).next = ex;
-            return true;
-        } else
-            return false;
-    }
-
-    /**
-     * Produce the message, include the message from the nested
-     * exception if there is one.
-     */
-    public String getMessage() {
-        if (next == null)
-            return super.getMessage();
-        Exception n = next;
-        String s = super.getMessage();
-        StringBuffer sb = new StringBuffer(s == null ? "" : s);
-        while (n != null) {
-            sb.append(";\n  nested exception is:\n\t");
-            if (n instanceof MessagingException) {
-                MessagingException mex = (MessagingException)n;
-                sb.append(n.getClass().toString());
-                String msg = mex.getSuperMessage();
-                if (msg != null) {
-                    sb.append(": ");
-                    sb.append(msg);
-                }
-                n = mex.next;
-            } else {
-                sb.append(n.toString());
-                n = null;
-            }
-        }
-        return sb.toString();
-    }
-
-    private String getSuperMessage() {
-        return super.getMessage();
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/MultipartDataSource.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)MultipartDataSource.java       1.6 02/03/27
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime;
-
-import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeBodyPart;
-
-import javax.activation.DataSource;
-
-/**
- * MultipartDataSource is a <code>DataSource</code> that contains body
- * parts.  This allows "mail aware" <code>DataContentHandlers</code> to
- * be implemented more efficiently by being aware of such
- * <code>DataSources</code> and using the appropriate methods to access
- * <code>BodyParts</code>. <p>
- *
- * Note that the data of a MultipartDataSource is also available as
- * an input stream. <p>
- *
- * This interface will typically be implemented by providers that
- * preparse multipart bodies, for example an IMAP provider.
- *
- * @version     1.6, 02/03/27
- * @author      John Mani
- * @see         javax.activation.DataSource
- */
-
-public interface MultipartDataSource extends DataSource {
-
-    /**
-     * Return the number of enclosed MimeBodyPart objects.
-     *
-     * @return          number of parts
-     */
-    public int getCount();
-
-    /**
-     * Get the specified MimeBodyPart.  Parts are numbered starting at 0.
-     *
-     * @param index     the index of the desired MimeBodyPart
-     * @return          the MimeBodyPart
-     * @exception       IndexOutOfBoundsException if the given index
-     *                  is out of range.
-     * @exception       MessagingException
-     */
-    public MimeBodyPart getBodyPart(int index) throws MessagingException;
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/BMMimeMultipart.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,765 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)MimeMultipart.java     1.31 03/01/29
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
-
-import java.io.*;
-import java.util.BitSet;
-
-import javax.activation.DataSource;
-
-import com.sun.xml.internal.messaging.saaj.packaging.mime.*;
-import com.sun.xml.internal.messaging.saaj.packaging.mime.util.*;
-
-import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;
-
-/**
- * The MimeMultipart class is an implementation of the abstract Multipart
- * class that uses MIME conventions for the multipart data. <p>
- *
- * A MimeMultipart is obtained from a MimePart whose primary type
- * is "multipart" (by invoking the part's <code>getContent()</code> method)
- * or it can be created by a client as part of creating a new MimeMessage. <p>
- *
- * The default multipart subtype is "mixed".  The other multipart
- * subtypes, such as "alternative", "related", and so on, can be
- * implemented as subclasses of MimeMultipart with additional methods
- * to implement the additional semantics of that type of multipart
- * content. The intent is that service providers, mail JavaBean writers
- * and mail clients will write many such subclasses and their Command
- * Beans, and will install them into the JavaBeans Activation
- * Framework, so that any JavaMail implementation and its clients can
- * transparently find and use these classes. Thus, a MIME multipart
- * handler is treated just like any other type handler, thereby
- * decoupling the process of providing multipart handlers from the
- * JavaMail API. Lacking these additional MimeMultipart subclasses,
- * all subtypes of MIME multipart data appear as MimeMultipart objects. <p>
- *
- * An application can directly construct a MIME multipart object of any
- * subtype by using the <code>MimeMultipart(String subtype)</code>
- * constructor.  For example, to create a "multipart/alternative" object,
- * use <code>new MimeMultipart("alternative")</code>.
- *
- */
-
-//TODO: cleanup the SharedInputStream handling
-public  class BMMimeMultipart extends MimeMultipart {
-
-    /*
-     * When true it indicates parsing hasnt been done at all
-     */
-    private boolean begining = true;
-
-    int[] bcs = new int[256];
-    int[] gss = null;
-    private static final int BUFFER_SIZE = 4096;
-    private byte[] buffer = new byte[BUFFER_SIZE];
-    private byte[] prevBuffer = new byte[BUFFER_SIZE];
-    private BitSet lastPartFound = new BitSet(1);
-
-    // cached inputstream which is possibly partially consumed
-    private InputStream in = null;
-    private String boundary = null;
-    // current stream position, set to -1 on EOF
-    int b = 0;
-
-    // property to indicate if lazyAttachments is ON
-    private boolean lazyAttachments = false;
-
-    /**
-     * Default constructor. An empty MimeMultipart object
-     * is created. Its content type is set to "multipart/mixed".
-     * A unique boundary string is generated and this string is
-     * setup as the "boundary" parameter for the
-     * <code>contentType</code> field. <p>
-     *
-     * MimeBodyParts may be added later.
-     */
-    public BMMimeMultipart() {
-        super();
-        //this("mixed");
-    }
-
-    /**
-     * Construct a MimeMultipart object of the given subtype.
-     * A unique boundary string is generated and this string is
-     * setup as the "boundary" parameter for the
-     * <code>contentType</code> field. <p>
-     *
-     * MimeBodyParts may be added later.
-     */
-    public BMMimeMultipart(String subtype) {
-        super(subtype);
-        /*
-         * Compute a boundary string.
-        String boundary = UniqueValue.getUniqueBoundaryValue();
-        ContentType cType = new ContentType("multipart", subtype, null);
-        contentType.setParameter("boundary", boundary);
-         */
-    }
-
-    /**
-     * Constructs a MimeMultipart object and its bodyparts from the
-     * given DataSource. <p>
-     *
-     * This constructor handles as a special case the situation where the
-     * given DataSource is a MultipartDataSource object.  In this case, this
-     * method just invokes the superclass (i.e., Multipart) constructor
-     * that takes a MultipartDataSource object. <p>
-     *
-     * Otherwise, the DataSource is assumed to provide a MIME multipart
-     * byte stream.  The <code>parsed</code> flag is set to false.  When
-     * the data for the body parts are needed, the parser extracts the
-     * "boundary" parameter from the content type of this DataSource,
-     * skips the 'preamble' and reads bytes till the terminating
-     * boundary and creates MimeBodyParts for each part of the stream.
-     *
-     * @param   ds      DataSource, can be a MultipartDataSource
-     */
-    public BMMimeMultipart(DataSource ds, ContentType ct)
-        throws MessagingException {
-        super(ds,ct);
-        boundary = ct.getParameter("boundary");
-        /*
-        if (ds instanceof MultipartDataSource) {
-            // ask super to do this for us.
-            setMultipartDataSource((MultipartDataSource)ds);
-            return;
-        }
-
-        // 'ds' was not a MultipartDataSource, we have
-        // to parse this ourself.
-        parsed = false;
-        this.ds = ds;
-        if (ct==null)
-            contentType = new ContentType(ds.getContentType());
-        else
-            contentType = ct;
-       */
-
-    }
-
-    public InputStream initStream() throws MessagingException {
-
-        if (in == null) {
-            try {
-                in = ds.getInputStream();
-                if (!(in instanceof ByteArrayInputStream) &&
-                    !(in instanceof BufferedInputStream) &&
-                    !(in instanceof SharedInputStream))
-                    in = new BufferedInputStream(in);
-            } catch (Exception ex) {
-                throw new MessagingException("No inputstream from datasource");
-            }
-
-            if (!in.markSupported()) {
-                throw new MessagingException(
-                    "InputStream does not support Marking");
-            }
-        }
-        return in;
-    }
-
-    /**
-     * Parse the InputStream from our DataSource, constructing the
-     * appropriate MimeBodyParts.  The <code>parsed</code> flag is
-     * set to true, and if true on entry nothing is done.  This
-     * method is called by all other methods that need data for
-     * the body parts, to make sure the data has been parsed.
-     *
-     * @since   JavaMail 1.2
-     */
-    protected  void parse() throws  MessagingException {
-        if (parsed)
-            return;
-
-        initStream();
-
-        SharedInputStream sin = null;
-        if (in instanceof SharedInputStream) {
-            sin = (SharedInputStream)in;
-        }
-
-        String bnd = "--" + boundary;
-        byte[] bndbytes = ASCIIUtility.getBytes(bnd);
-        try {
-            parse(in, bndbytes, sin);
-        } catch (IOException ioex) {
-            throw new MessagingException("IO Error", ioex);
-        } catch (Exception ex) {
-            throw new MessagingException("Error", ex);
-        }
-
-        parsed = true;
-    }
-
-    public boolean lastBodyPartFound() {
-        return lastPartFound.get(0);
-    }
-
-    public MimeBodyPart getNextPart(
-        InputStream stream, byte[] pattern, SharedInputStream sin)
-        throws Exception {
-
-        if (!stream.markSupported()) {
-            throw new Exception("InputStream does not support Marking");
-        }
-
-        if (begining) {
-            compile(pattern);
-            if (!skipPreamble(stream, pattern, sin)) {
-                throw new Exception(
-                    "Missing Start Boundary, or boundary does not start on a new line");
-            }
-            begining = false;
-        }
-
-        if (lastBodyPartFound()) {
-            throw new Exception("No parts found in Multipart InputStream");
-        }
-
-        if (sin != null) {
-            long start = sin.getPosition();
-            b = readHeaders(stream);
-            if (b == -1) {
-                throw new Exception(
-                    "End of Stream encountered while reading part headers");
-            }
-            long[] v = new long[1];
-            v[0] = -1; // just to ensure the code later sets it correctly
-            b = readBody(stream, pattern, v, null, sin);
-            // looks like this check has to be disabled
-            // it is allowed to have Mime Package without closing boundary
-            if (!ignoreMissingEndBoundary) {
-                if ((b == -1) && !lastBodyPartFound()) {
-                    throw new MessagingException("Missing End Boundary for Mime Package : EOF while skipping headers");
-                }
-            }
-            long end = v[0];
-            MimeBodyPart mbp = createMimeBodyPart(sin.newStream(start, end));
-            addBodyPart(mbp);
-            return mbp;
-
-        } else {
-            InternetHeaders headers = createInternetHeaders(stream);
-            ByteOutputStream baos = new ByteOutputStream();
-            b = readBody(stream, pattern, null,baos, null);
-            // looks like this check has to be disabled
-            // in the old impl it is allowed to have Mime Package
-            // without closing boundary
-            if (!ignoreMissingEndBoundary) {
-                if ((b == -1) && !lastBodyPartFound()) {
-                    throw new MessagingException("Missing End Boundary for Mime Package : EOF while skipping headers");
-                }
-            }
-            MimeBodyPart mbp = createMimeBodyPart(
-                headers, baos.getBytes(), baos.getCount());
-            addBodyPart(mbp);
-            return mbp;
-        }
-
-    }
-
-    public boolean parse(
-        InputStream stream, byte[] pattern, SharedInputStream sin)
-        throws Exception {
-
-        while (!lastPartFound.get(0) && (b != -1)) {
-           getNextPart(stream, pattern, sin);
-        }
-        return true;
-    }
-
-    private int readHeaders(InputStream is) throws Exception {
-        // if the headers are to end properly then there has to be CRLF
-        // actually we just need to mark the start and end positions
-        int b = is.read();
-        while(b != -1) {
-            // when it is a shared input stream no need to copy
-            if (b == '\r') {
-                b = is.read();
-                if (b == '\n') {
-                    b = is.read();
-                    if (b == '\r') {
-                        b = is.read();
-                        if (b == '\n') {
-                           return b;
-                        } else {
-                            continue;
-                        }
-                    } else {
-                        continue;
-                    }
-                } else {
-                    continue;
-                }
-            }
-            b = is.read();
-        }
-        if (b == -1) {
-            throw new Exception(
-            "End of inputstream while reading Mime-Part Headers");
-        }
-        return b;
-    }
-
-    private int readBody(
-        InputStream is, byte[] pattern, long[] posVector,
-        ByteOutputStream baos, SharedInputStream sin)
-        throws Exception {
-        if (!find(is, pattern, posVector, baos, sin)) {
-            throw new Exception(
-            "Missing boundary delimitier while reading Body Part");
-        }
-        return b;
-    }
-
-    private boolean skipPreamble(
-        InputStream is, byte[] pattern, SharedInputStream sin)
-        throws Exception {
-        if (!find(is, pattern, sin)) {
-            return false;
-        }
-        if (lastPartFound.get(0)) {
-            throw new Exception(
-            "Found closing boundary delimiter while trying to skip preamble");
-        }
-        return true;
-    }
-
-
-    public int  readNext(InputStream is, byte[] buff, int patternLength,
-        BitSet eof, long[] posVector, SharedInputStream sin)
-        throws Exception {
-
-        int bufferLength = is.read(buffer, 0, patternLength);
-        if (bufferLength == -1) {
-           eof.flip(0);
-        } else if (bufferLength < patternLength) {
-            //repeatedly read patternLength - bufferLength
-            int temp = 0;
-            long pos = 0;
-            int i = bufferLength;
-            for (; i < patternLength; i++) {
-                if (sin != null) {
-                    pos = sin.getPosition();
-                }
-                temp = is.read();
-                if (temp == -1) {
-                    eof.flip(0);
-                    if (sin != null) {
-                        posVector[0] = pos;
-                    }
-                    break;
-                }
-                buffer[i] = (byte)temp;
-            }
-            bufferLength=i;
-        }
-        return bufferLength;
-    }
-
-    public boolean find(InputStream is, byte[] pattern, SharedInputStream sin)
-        throws Exception {
-        int i;
-        int l = pattern.length;
-        int lx = l -1;
-        BitSet eof = new BitSet(1);
-        long[] posVector = new long[1];
-
-        while (true) {
-            is.mark(l);
-            readNext(is, buffer, l, eof, posVector, sin);
-            if (eof.get(0)) {
-                // End of stream
-                return false;
-            }
-
-            /*
-            if (bufferLength < l) {
-                //is.reset();
-                return false;
-            }*/
-
-            for(i = lx; i >= 0; i--) {
-                if (buffer[i] != pattern[i]) {
-                    break;
-                }
-            }
-
-            if (i < 0) {
-                // found the boundary, skip *LWSP-char and CRLF
-                if (!skipLWSPAndCRLF(is)) {
-                    throw new Exception("Boundary does not terminate with CRLF");
-                }
-                return true;
-            }
-
-            int s = Math.max(i + 1 - bcs[buffer[i] & 0x7f], gss[i]);
-            is.reset();
-            is.skip(s);
-        }
-    }
-
-    public boolean find(
-        InputStream is, byte[] pattern, long[] posVector,
-        ByteOutputStream out, SharedInputStream sin) throws Exception {
-        int i;
-        int l = pattern.length;
-        int lx = l -1;
-        int bufferLength = 0;
-        int s = 0;
-        long endPos = -1;
-        byte[] tmp = null;
-
-        boolean first = true;
-        BitSet eof = new BitSet(1);
-
-        while (true) {
-            is.mark(l);
-            if (!first) {
-                tmp = prevBuffer;
-                prevBuffer = buffer;
-                buffer = tmp;
-            }
-            if (sin != null) {
-                endPos = sin.getPosition();
-            }
-
-            bufferLength = readNext(is, buffer, l, eof, posVector, sin);
-
-            if (bufferLength == -1) {
-                // End of stream
-                // looks like it is allowed to not have a closing boundary
-                //return false;
-                //if (sin != null) {
-                 //   posVector[0] = endPos;
-                //}
-                b = -1;
-                if ((s == l) && (sin == null)) {
-                    out.write(prevBuffer, 0, s);
-                }
-                return true;
-            }
-
-            if (bufferLength < l) {
-                if (sin != null) {
-                    //endPos = sin.getPosition();
-                    //posVector[0] = endPos;
-                } else {
-                    // looks like it is allowed to not have a closing boundary
-                    // in the old implementation
-                        out.write(buffer, 0, bufferLength);
-                }
-                // looks like it is allowed to not have a closing boundary
-                // in the old implementation
-                //return false;
-                b = -1;
-                return true;
-            }
-
-            for(i = lx; i >= 0; i--) {
-                if (buffer[i] != pattern[i]) {
-                    break;
-                }
-            }
-
-            if (i < 0) {
-                if (s > 0) {
-                    //looks like the earlier impl allowed just an LF
-                    // so if s == 1 : it must be an LF
-                    // if s == 2 : it must be a CR LF
-                    if (s <= 2) {
-                        //it could be "some-char\n" so write some-char
-                        if (s == 2) {
-                            if (prevBuffer[1] == '\n') {
-                                if (prevBuffer[0] != '\r' && prevBuffer[0] != '\n') {
-                                    out.write(prevBuffer,0,1);
-                                }
-                                if (sin != null) {
-                                    posVector[0] = endPos;
-                                }
-
-                            } else {
-                                throw new Exception(
-                                        "Boundary characters encountered in part Body " +
-                                        "without a preceeding CRLF");
-                            }
-
-                        } else if (s==1) {
-                            if (prevBuffer[0] != '\n') {
-                                throw new Exception(
-                                        "Boundary characters encountered in part Body " +
-                                        "without a preceeding CRLF");
-                            }else {
-                                if (sin != null) {
-                                    posVector[0] = endPos;
-                                }
-                            }
-                        }
-
-                    } else if (s > 2) {
-                        if ((prevBuffer[s-2] == '\r') && (prevBuffer[s-1] == '\n')) {
-                            if (sin != null) {
-                                posVector[0] = endPos - 2;
-                            } else {
-                                out.write(prevBuffer, 0, s - 2);
-                            }
-                        } else if (prevBuffer[s-1] == '\n') {
-                            //old impl allowed just a \n
-                            if (sin != null) {
-                                posVector[0] = endPos - 1;
-                            } else {
-                                out.write(prevBuffer, 0, s - 1);
-                            }
-                        } else {
-                            throw new Exception(
-                                "Boundary characters encountered in part Body " +
-                                "without a preceeding CRLF");
-                        }
-                    }
-                }
-                // found the boundary, skip *LWSP-char and CRLF
-                if (!skipLWSPAndCRLF(is)) {
-                    //throw new Exception(
-                    //   "Boundary does not terminate with CRLF");
-                }
-                return true;
-            }
-
-            if ((s > 0) && (sin == null)) {
-                if (prevBuffer[s-1] == (byte)13) {
-                    // if buffer[0] == (byte)10
-                    if (buffer[0] == (byte)10) {
-                        int j;
-                        for(j = lx-1; j > 0; j--) {
-                            if (buffer[j+1] != pattern[j]) {
-                                break;
-                             }
-                         }
-                         if (j == 0) {
-                             // matched the pattern excluding the last char of the pattern
-                             // so dont write the CR into stream
-                             out.write(prevBuffer,0,s-1);
-                         } else {
-                             out.write(prevBuffer,0,s);
-                         }
-                    } else {
-                        out.write(prevBuffer, 0, s);
-                    }
-                } else {
-                    out.write(prevBuffer, 0, s);
-                }
-            }
-
-            s = Math.max(i + 1 - bcs[buffer[i] & 0x7f], gss[i]);
-            is.reset();
-            is.skip(s);
-            if (first) {
-                first = false;
-            }
-        }
-    }
-
-    private boolean skipLWSPAndCRLF(InputStream is) throws Exception {
-
-        b = is.read();
-        //looks like old impl allowed just a \n as well
-        if (b == '\n') {
-            return true;
-        }
-
-        if (b == '\r') {
-            b = is.read();
-            //skip any multiple '\r' "\r\n" --> "\r\r\n" on Win2k
-            if (b == '\r') {
-                b = is.read();
-            }
-            if (b == '\n') {
-                return true;
-            } else {
-                throw new Exception(
-                    "transport padding after a Mime Boundary  should end in a CRLF, found CR only");
-            }
-        }
-
-        if (b == '-') {
-            b = is.read();
-            if (b != '-') {
-               throw new Exception(
-                   "Unexpected singular '-' character after Mime Boundary");
-            } else {
-                //System.out.println("Last Part Found");
-                lastPartFound.flip(0);
-                // read the next char
-                b  = is.read();
-            }
-        }
-
-        while ((b != -1) && ((b == ' ') || (b == '\t'))) {
-            b = is.read();
-            if (b == '\n') {
-                return true;
-            }
-            if (b == '\r') {
-                b = is.read();
-                //skip any multiple '\r': "\r\n" --> "\r\r\n" on Win2k
-                if (b == '\r') {
-                    b = is.read();
-                }
-                if (b == '\n') {
-                   return true;
-                }
-            }
-        }
-
-        if (b == -1) {
-            // the last boundary need not have CRLF
-            if (!lastPartFound.get(0)) {
-                throw new Exception(
-                        "End of Multipart Stream before encountering  closing boundary delimiter");
-            }
-            return true;
-        }
-        return false;
-    }
-
-    private void compile(byte[] pattern) {
-        int l = pattern.length;
-
-        int i;
-        int j;
-
-        // Copied from J2SE 1.4 regex code
-        // java.util.regex.Pattern.java
-
-        // Initialise Bad Character Shift table
-        for (i = 0; i < l; i++) {
-            bcs[pattern[i]] = i + 1;
-        }
-
-        // Initialise Good Suffix Shift table
-        gss = new int[l];
-  NEXT: for (i = l; i > 0; i--) {
-            // j is the beginning index of suffix being considered
-            for (j = l - 1; j >= i; j--) {
-                // Testing for good suffix
-                if (pattern[j] == pattern[j - i]) {
-                    // pattern[j..len] is a good suffix
-                    gss[j - 1] = i;
-                } else {
-                   // No match. The array has already been
-                   // filled up with correct values before.
-                   continue NEXT;
-                }
-            }
-            while (j > 0) {
-                gss[--j] = i;
-            }
-        }
-        gss[l - 1] = 1;
-    }
-
-
-    /**
-     * Iterates through all the parts and outputs each Mime part
-     * separated by a boundary.
-     */
-
-    public void writeTo(OutputStream os)
-            throws IOException, MessagingException {
-
-        // inputStream was not null
-        if (in != null) {
-            contentType.setParameter("boundary", this.boundary);
-        }
-
-        String bnd = "--" + contentType.getParameter("boundary");
-        for (int i = 0; i < parts.size(); i++) {
-            OutputUtil.writeln(bnd, os); // put out boundary
-            ((MimeBodyPart)parts.get(i)).writeTo(os);
-            OutputUtil.writeln(os); // put out empty line
-        }
-
-        if (in != null) {
-            OutputUtil.writeln(bnd, os); // put out boundary
-            if ((os instanceof ByteOutputStream) && lazyAttachments) {
-                ((ByteOutputStream) os).write(in);
-            } else {
-                ByteOutputStream baos = null;
-                try {
-                    baos = new ByteOutputStream(in.available());
-                    baos.write(in);
-                    baos.writeTo(os);
-                    // reset the inputstream so that we can support a
-                    // getAttachment later
-                    in = baos.newInputStream();
-                } finally {
-                    if (baos != null)
-                        baos.close();
-                }
-            }
-
-            // this will endup writing the end boundary
-        } else {
-            // put out last boundary
-            OutputUtil.writeAsAscii(bnd, os);
-            OutputUtil.writeAsAscii("--", os);
-        }
-    }
-
-    public void setInputStream(InputStream is) {
-        this.in = is;
-    }
-
-    public InputStream getInputStream() {
-        return this.in;
-    }
-
-    public void setBoundary(String bnd) {
-        this.boundary = bnd;
-        if (this.contentType != null) {
-            this.contentType.setParameter("boundary", bnd);
-        }
-    }
-    public String getBoundary() {
-        return this.boundary;
-    }
-
-    public boolean isEndOfStream() {
-        return (b == -1);
-    }
-
-    public void setLazyAttachments(boolean flag) {
-        lazyAttachments = flag;
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ContentDisposition.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,180 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)ContentDisposition.java        1.6 02/03/27
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
-
-
-/**
- * This class represents a MIME ContentDisposition value. It provides
- * methods to parse a ContentDisposition string into individual components
- * and to generate a MIME style ContentDisposition string.
- *
- * @version 1.6, 02/03/27
- * @author  John Mani
- */
-
-public class ContentDisposition {
-
-    private String disposition; // disposition
-    private ParameterList list; // parameter list
-
-    /**
-     * No-arg Constructor.
-     */
-    public ContentDisposition() { }
-
-    /**
-     * Constructor.
-     *
-     * @param   disposition     disposition
-     * @param   list    ParameterList
-     * @since           JavaMail 1.2
-     */
-    public ContentDisposition(String disposition, ParameterList list) {
-        this.disposition = disposition;
-        this.list = list;
-    }
-
-    /**
-     * Constructor that takes a ContentDisposition string. The String
-     * is parsed into its constituents: dispostion and parameters.
-     * A ParseException is thrown if the parse fails.
-     *
-     * @param   s       the ContentDisposition string.
-     * @exception       ParseException if the parse fails.
-     * @since           JavaMail 1.2
-     */
-    public ContentDisposition(String s) throws ParseException {
-        HeaderTokenizer h = new HeaderTokenizer(s, HeaderTokenizer.MIME);
-        HeaderTokenizer.Token tk;
-
-        // First "disposition" ..
-        tk = h.next();
-        if (tk.getType() != HeaderTokenizer.Token.ATOM)
-            throw new ParseException();
-        disposition = tk.getValue();
-
-        // Then parameters ..
-        String rem = h.getRemainder();
-        if (rem != null)
-            list = new ParameterList(rem);
-    }
-
-    /**
-     * Return the disposition value.
-     * @return the disposition
-     * @since           JavaMail 1.2
-     */
-    public String getDisposition() {
-        return disposition;
-    }
-
-    /**
-     * Return the specified parameter value. Returns <code>null</code>
-     * if this parameter is absent.
-     * @return  parameter value
-     * @since           JavaMail 1.2
-     */
-    public String getParameter(String name) {
-        if (list == null)
-            return null;
-
-        return list.get(name);
-    }
-
-    /**
-     * Return a ParameterList object that holds all the available
-     * parameters. Returns null if no parameters are available.
-     *
-     * @return  ParameterList
-     * @since           JavaMail 1.2
-     */
-    public ParameterList getParameterList() {
-        return list;
-    }
-
-    /**
-     * Set the primary type. Overrides existing primary type.
-     * @param   primaryType     primary type
-     * @since           JavaMail 1.2
-     */
-    public void setDisposition(String disposition) {
-        this.disposition = disposition;
-    }
-
-    /**
-     * Set the specified parameter. If this parameter already exists,
-     * it is replaced by this new value.
-     *
-     * @param   name    parameter name
-     * @param   value   parameter value
-     * @since           JavaMail 1.2
-     */
-    public void setParameter(String name, String value) {
-        if (list == null)
-            list = new ParameterList();
-
-        list.set(name, value);
-    }
-
-    /**
-     * Set a new ParameterList.
-     * @param   list    ParameterList
-     * @since           JavaMail 1.2
-     */
-    public void setParameterList(ParameterList list) {
-        this.list = list;
-    }
-
-    /**
-     * Retrieve a RFC2045 style string representation of
-     * this ContentDisposition. Returns <code>null</code> if
-     * the conversion failed.
-     *
-     * @return  RFC2045 style string
-     * @since           JavaMail 1.2
-     */
-    public String toString() {
-        if (disposition == null)
-            return null;
-
-        if (list == null)
-            return disposition;
-
-        StringBuffer sb = new StringBuffer(disposition);
-
-        // append the parameter list
-        // use the length of the string buffer + the length of
-        // the header name formatted as follows "Content-Disposition: "
-        sb.append(list.toString(sb.length() + 21));
-        return sb.toString();
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ContentType.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,277 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)ContentType.java       1.7 02/03/27
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
-
-
-/**
- * This class represents a MIME ContentType value. It provides
- * methods to parse a ContentType string into individual components
- * and to generate a MIME style ContentType string.
- *
- * @version 1.7, 02/03/27
- * @author  John Mani
- */
-public final class ContentType {
-
-    private String primaryType; // primary type
-    private String subType;     // subtype
-    private ParameterList list; // parameter list
-
-    /**
-     * No-arg Constructor.
-     */
-    public ContentType() { }
-
-    /**
-     * Constructor.
-     *
-     * @param   primaryType     primary type
-     * @param   subType subType
-     * @param   list    ParameterList
-     */
-    public ContentType(String primaryType, String subType,
-                       ParameterList list) {
-        this.primaryType = primaryType;
-        this.subType = subType;
-        if (list == null)
-            list = new ParameterList();
-        this.list = list;
-    }
-
-    /**
-     * Constructor that takes a Content-Type string. The String
-     * is parsed into its constituents: primaryType, subType
-     * and parameters. A ParseException is thrown if the parse fails.
-     *
-     * @param   s       the Content-Type string.
-     * @exception       ParseException if the parse fails.
-     */
-    public ContentType(String s) throws ParseException {
-        HeaderTokenizer h = new HeaderTokenizer(s, HeaderTokenizer.MIME);
-        HeaderTokenizer.Token tk;
-
-        // First "type" ..
-        tk = h.next();
-        if (tk.getType() != HeaderTokenizer.Token.ATOM)
-            throw new ParseException();
-        primaryType = tk.getValue();
-
-        // The '/' separator ..
-        tk = h.next();
-        if ((char)tk.getType() != '/')
-            throw new ParseException();
-
-        // Then "subType" ..
-        tk = h.next();
-        if (tk.getType() != HeaderTokenizer.Token.ATOM)
-            throw new ParseException();
-        subType = tk.getValue();
-
-        // Finally parameters ..
-        String rem = h.getRemainder();
-        if (rem != null)
-            list = new ParameterList(rem);
-    }
-
-    public ContentType copy() {
-        return new ContentType(primaryType,subType,list.copy());
-    }
-
-    /**
-     * Return the primary type.
-     * @return the primary type
-     */
-    public String getPrimaryType() {
-        return primaryType;
-    }
-
-    /**
-     * Return the subType.
-     * @return the subType
-     */
-    public String getSubType() {
-        return subType;
-    }
-
-    /**
-     * Return the MIME type string, without the parameters.
-     * The returned value is basically the concatenation of
-     * the primaryType, the '/' character and the secondaryType.
-     *
-     * @return the type
-     */
-    public String getBaseType() {
-        return primaryType + '/' + subType;
-    }
-
-    /**
-     * Return the specified parameter value. Returns <code>null</code>
-     * if this parameter is absent.
-     * @return  parameter value
-     */
-    public String getParameter(String name) {
-        if (list == null)
-            return null;
-
-        return list.get(name);
-    }
-
-    /**
-     * Return a ParameterList object that holds all the available
-     * parameters. Returns null if no parameters are available.
-     *
-     * @return  ParameterList
-     */
-    public ParameterList getParameterList() {
-        return list;
-    }
-
-    /**
-     * Set the primary type. Overrides existing primary type.
-     * @param   primaryType     primary type
-     */
-    public void setPrimaryType(String primaryType) {
-        this.primaryType = primaryType;
-    }
-
-    /**
-     * Set the subType. Overrides existing subType
-     * @param   subType subType
-     */
-    public void setSubType(String subType) {
-        this.subType = subType;
-    }
-
-    /**
-     * Set the specified parameter. If this parameter already exists,
-     * it is replaced by this new value.
-     *
-     * @param   name    parameter name
-     * @param   value   parameter value
-     */
-    public void setParameter(String name, String value) {
-        if (list == null)
-            list = new ParameterList();
-
-        list.set(name, value);
-    }
-
-    /**
-     * Set a new ParameterList.
-     * @param   list    ParameterList
-     */
-    public void setParameterList(ParameterList list) {
-        this.list = list;
-    }
-
-    /**
-     * Retrieve a RFC2045 style string representation of
-     * this Content-Type. Returns <code>null</code> if
-     * the conversion failed.
-     *
-     * @return  RFC2045 style string
-     */
-    public String toString() {
-        if (primaryType == null || subType == null) // need both
-            return null;
-
-        StringBuffer sb = new StringBuffer();
-        sb.append(primaryType).append('/').append(subType);
-        if (list != null)
-        // Http Binding section of the "SOAP with attachments" specification says,
-        // "SOAP message senders should send Content-Type headers on a single long line."
-        // (http://www.w3.org/TR/SOAP-attachments#HTTPBinding)
-            sb.append(list.toString());
-
-        return sb.toString();
-    }
-
-    /**
-     * Match with the specified ContentType object. This method
-     * compares <strong>only the <code>primaryType</code> and
-     * <code>subType</code> </strong>. The parameters of both operands
-     * are ignored. <p>
-     *
-     * For example, this method will return <code>true</code> when
-     * comparing the ContentTypes for <strong>"text/plain"</strong>
-     * and <strong>"text/plain; charset=foobar"</strong>.
-     *
-     * If the <code>subType</code> of either operand is the special
-     * character '*', then the subtype is ignored during the match.
-     * For example, this method will return <code>true</code> when
-     * comparing the ContentTypes for <strong>"text/plain"</strong>
-     * and <strong>"text/*" </strong>
-     *
-     * @param   cType to compare this against
-     */
-    public boolean match(ContentType cType) {
-        // Match primaryType
-        if (!primaryType.equalsIgnoreCase(cType.getPrimaryType()))
-            return false;
-
-        String sType = cType.getSubType();
-
-        // If either one of the subTypes is wildcarded, return true
-        if ((subType.charAt(0) == '*') || (sType.charAt(0) == '*'))
-            return true;
-
-        // Match subType
-        if (!subType.equalsIgnoreCase(sType))
-            return false;
-
-        return true;
-    }
-
-    /**
-     * Match with the specified content-type string. This method
-     * compares <strong>only the <code>primaryType</code> and
-     * <code>subType</code> </strong>.
-     * The parameters of both operands are ignored. <p>
-     *
-     * For example, this method will return <code>true</code> when
-     * comparing the ContentType for <strong>"text/plain"</strong>
-     * with <strong>"text/plain; charset=foobar"</strong>.
-     *
-     * If the <code>subType</code> of either operand is the special
-     * character '*', then the subtype is ignored during the match.
-     * For example, this method will return <code>true</code> when
-     * comparing the ContentType for <strong>"text/plain"</strong>
-     * with <strong>"text/*" </strong>
-     */
-    public boolean match(String s) {
-        try {
-            return match(new ContentType(s));
-        } catch (ParseException pex) {
-            return false;
-        }
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/HeaderTokenizer.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,382 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)HeaderTokenizer.java   1.9 02/03/27
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
-
-
-/**
- * This class tokenizes RFC822 and MIME headers into the basic
- * symbols specified by RFC822 and MIME. <p>
- *
- * This class handles folded headers (ie headers with embedded
- * CRLF SPACE sequences). The folds are removed in the returned
- * tokens.
- *
- * @version 1.9, 02/03/27
- * @author  John Mani
- */
-
-public class HeaderTokenizer {
-
-    /**
-     * The Token class represents tokens returned by the
-     * HeaderTokenizer.
-     */
-    public static class Token {
-
-        private int type;
-        private String value;
-
-        /**
-         * Token type indicating an ATOM.
-         */
-        public static final int ATOM            = -1;
-
-        /**
-         * Token type indicating a quoted string. The value
-         * field contains the string without the quotes.
-         */
-        public static final int QUOTEDSTRING    = -2;
-
-        /**
-         * Token type indicating a comment. The value field
-         * contains the comment string without the comment
-         * start and end symbols.
-         */
-        public static final int COMMENT         = -3;
-
-        /**
-         * Token type indicating end of input.
-         */
-        public static final int  EOF            = -4;
-
-        /**
-         * Constructor.
-         * @param       type    Token type
-         * @param       value   Token value
-         */
-        public Token(int type, String value) {
-             this.type = type;
-             this.value = value;
-        }
-
-        /**
-         * Return the type of the token. If the token represents a
-         * delimiter or a control character, the type is that character
-         * itself, converted to an integer. Otherwise, it's value is
-         * one of the following:
-         * <ul>
-         * <li><code>ATOM</code> A sequence of ASCII characters
-         *      delimited by either SPACE, CTL, "(", <"> or the
-         *      specified SPECIALS
-         * <li><code>QUOTEDSTRING</code> A sequence of ASCII characters
-         *      within quotes
-         * <li><code>COMMENT</code> A sequence of ASCII characters
-         *      within "(" and ")".
-         * <li><code>EOF</code> End of header
-         * </ul>
-         */
-        public int getType() {
-            return type;
-        }
-
-        /**
-         * Returns the value of the token just read. When the current
-         * token is a quoted string, this field contains the body of the
-         * string, without the quotes. When the current token is a comment,
-         * this field contains the body of the comment.
-         *
-         * @return      token value
-         */
-        public String getValue() {
-            return value;
-        }
-    }
-
-    private String string; // the string to be tokenized
-    private boolean skipComments; // should comments be skipped ?
-    private String delimiters; // delimiter string
-    private int currentPos; // current parse position
-    private int maxPos; // string length
-    private int nextPos; // track start of next Token for next()
-    private int peekPos; // track start of next Token for peek()
-
-    /**
-     * RFC822 specials
-     */
-    public final static String RFC822 = "()<>@,;:\\\"\t .[]";
-
-    /**
-     * MIME specials
-     */
-    public final static String MIME = "()<>@,;:\\\"\t []/?=";
-
-    // The EOF Token
-    private final static Token EOFToken = new Token(Token.EOF, null);
-
-    /**
-     * Constructor that takes a rfc822 style header.
-     *
-     * @param   header  The rfc822 header to be tokenized
-     * @param   delimiters      Set of delimiter characters
-     *                          to be used to delimit ATOMS. These
-     *                          are usually <code>RFC822</code> or
-     *                          <code>MIME</code>
-     * @param   skipComments  If true, comments are skipped and
-     *                          not returned as tokens
-     */
-    public HeaderTokenizer(String header, String delimiters,
-                           boolean skipComments) {
-        string = (header == null) ? "" : header; // paranoia ?!
-        this.skipComments = skipComments;
-        this.delimiters = delimiters;
-        currentPos = nextPos = peekPos = 0;
-        maxPos = string.length();
-    }
-
-    /**
-     * Constructor. Comments are ignored and not returned as tokens
-     *
-     * @param   header  The header that is tokenized
-     * @param   delimiters  The delimiters to be used
-     */
-    public HeaderTokenizer(String header, String delimiters) {
-        this(header, delimiters, true);
-    }
-
-    /**
-     * Constructor. The RFC822 defined delimiters - RFC822 - are
-     * used to delimit ATOMS. Also comments are skipped and not
-     * returned as tokens
-     */
-    public HeaderTokenizer(String header)  {
-        this(header, RFC822);
-    }
-
-    /**
-     * Parses the next token from this String. <p>
-     *
-     * Clients sit in a loop calling next() to parse successive
-     * tokens until an EOF Token is returned.
-     *
-     * @return          the next Token
-     * @exception       ParseException if the parse fails
-     */
-    public Token next() throws ParseException {
-        Token tk;
-
-        currentPos = nextPos; // setup currentPos
-        tk = getNext();
-        nextPos = peekPos = currentPos; // update currentPos and peekPos
-        return tk;
-    }
-
-    /**
-     * Peek at the next token, without actually removing the token
-     * from the parse stream. Invoking this method multiple times
-     * will return successive tokens, until <code>next()</code> is
-     * called. <p>
-     *
-     * @return          the next Token
-     * @exception       ParseException if the parse fails
-     */
-    public Token peek() throws ParseException {
-        Token tk;
-
-        currentPos = peekPos; // setup currentPos
-        tk = getNext();
-        peekPos = currentPos; // update peekPos
-        return tk;
-    }
-
-    /**
-     * Return the rest of the Header.
-     *
-     * @return String   rest of header. null is returned if we are
-     *                  already at end of header
-     */
-    public String getRemainder() {
-        return string.substring(nextPos);
-    }
-
-    /*
-     * Return the next token starting from 'currentPos'. After the
-     * parse, 'currentPos' is updated to point to the start of the
-     * next token.
-     */
-    private Token getNext() throws ParseException {
-        // If we're already at end of string, return EOF
-        if (currentPos >= maxPos)
-            return EOFToken;
-
-        // Skip white-space, position currentPos beyond the space
-        if (skipWhiteSpace() == Token.EOF)
-            return EOFToken;
-
-        char c;
-        int start;
-        boolean filter = false;
-
-        c = string.charAt(currentPos);
-
-        // Check or Skip comments and position currentPos
-        // beyond the comment
-        while (c == '(') {
-            // Parsing comment ..
-            int nesting;
-            for (start = ++currentPos, nesting = 1;
-                 nesting > 0 && currentPos < maxPos;
-                 currentPos++) {
-                c = string.charAt(currentPos);
-                if (c == '\\') {  // Escape sequence
-                    currentPos++; // skip the escaped character
-                    filter = true;
-                } else if (c == '\r')
-                    filter = true;
-                else if (c == '(')
-                    nesting++;
-                else if (c == ')')
-                    nesting--;
-            }
-            if (nesting != 0)
-                throw new ParseException("Unbalanced comments");
-
-            if (!skipComments) {
-                // Return the comment, if we are asked to.
-                // Note that the comment start & end markers are ignored.
-                String s;
-                if (filter) // need to go thru the token again.
-                    s = filterToken(string, start, currentPos-1);
-                else
-                    s = string.substring(start,currentPos-1);
-
-                return new Token(Token.COMMENT, s);
-            }
-
-            // Skip any whitespace after the comment.
-            if (skipWhiteSpace() == Token.EOF)
-                return EOFToken;
-            c = string.charAt(currentPos);
-        }
-
-        // Check for quoted-string and position currentPos
-        //  beyond the terminating quote
-        if (c == '"') {
-            for (start = ++currentPos; currentPos < maxPos; currentPos++) {
-                c = string.charAt(currentPos);
-                if (c == '\\') { // Escape sequence
-                    currentPos++;
-                    filter = true;
-                } else if (c == '\r')
-                    filter = true;
-                else if (c == '"') {
-                    currentPos++;
-                    String s;
-
-                    if (filter)
-                        s = filterToken(string, start, currentPos-1);
-                    else
-                        s = string.substring(start,currentPos-1);
-
-                    return new Token(Token.QUOTEDSTRING, s);
-                }
-            }
-            throw new ParseException("Unbalanced quoted string");
-        }
-
-        // Check for SPECIAL or CTL
-        if (c < 040 || c >= 0177 || delimiters.indexOf(c) >= 0) {
-            currentPos++; // re-position currentPos
-            char ch[] = new char[1];
-            ch[0] = c;
-            return new Token((int)c, new String(ch));
-        }
-
-        // Check for ATOM
-        for (start = currentPos; currentPos < maxPos; currentPos++) {
-            c = string.charAt(currentPos);
-            // ATOM is delimited by either SPACE, CTL, "(", <">
-            // or the specified SPECIALS
-            if (c < 040 || c >= 0177 || c == '(' || c == ' ' ||
-                c == '"' || delimiters.indexOf(c) >= 0)
-                break;
-        }
-        return new Token(Token.ATOM, string.substring(start, currentPos));
-    }
-
-    // Skip SPACE, HT, CR and NL
-    private int skipWhiteSpace() {
-        char c;
-        for (; currentPos < maxPos; currentPos++)
-            if (((c = string.charAt(currentPos)) != ' ') &&
-                (c != '\t') && (c != '\r') && (c != '\n'))
-                return currentPos;
-        return Token.EOF;
-    }
-
-    /* Process escape sequences and embedded LWSPs from a comment or
-     * quoted string.
-     */
-    private static String filterToken(String s, int start, int end) {
-        StringBuffer sb = new StringBuffer();
-        char c;
-        boolean gotEscape = false;
-        boolean gotCR = false;
-
-        for (int i = start; i < end; i++) {
-            c = s.charAt(i);
-            if (c == '\n' && gotCR) {
-                // This LF is part of an unescaped
-                // CRLF sequence (i.e, LWSP). Skip it.
-                gotCR = false;
-                continue;
-            }
-
-            gotCR = false;
-            if (!gotEscape) {
-                // Previous character was NOT '\'
-                if (c == '\\') // skip this character
-                    gotEscape = true;
-                else if (c == '\r') // skip this character
-                    gotCR = true;
-                else // append this character
-                    sb.append(c);
-            } else {
-                // Previous character was '\'. So no need to
-                // bother with any special processing, just
-                // append this character
-                sb.append(c);
-                gotEscape = false;
-            }
-        }
-        return sb.toString();
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/InternetHeaders.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,402 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)InternetHeaders.java   1.16 02/08/08
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
-
-import com.sun.xml.internal.messaging.saaj.packaging.mime.Header;
-import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException;
-import com.sun.xml.internal.messaging.saaj.packaging.mime.util.LineInputStream;
-import com.sun.xml.internal.messaging.saaj.util.FinalArrayList;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.AbstractList;
-import java.util.List;
-import java.util.NoSuchElementException;
-
-/**
- * InternetHeaders is a utility class that manages RFC822 style
- * headers. Given an RFC822 format message stream, it reads lines
- * until the blank line that indicates end of header. The input stream
- * is positioned at the start of the body. The lines are stored
- * within the object and can be extracted as either Strings or
- * {@link Header} objects. <p>
- * <p/>
- * This class is mostly intended for service providers. MimeMessage
- * and MimeBody use this class for holding their headers. <p>
- * <p/>
- * <hr> <strong>A note on RFC822 and MIME headers</strong><p>
- * <p/>
- * RFC822 and MIME header fields <strong>must</strong> contain only
- * US-ASCII characters. If a header contains non US-ASCII characters,
- * it must be encoded as per the rules in RFC 2047. The MimeUtility
- * class provided in this package can be used to to achieve this.
- * Callers of the <code>setHeader</code>, <code>addHeader</code>, and
- * <code>addHeaderLine</code> methods are responsible for enforcing
- * the MIME requirements for the specified headers.  In addition, these
- * header fields must be folded (wrapped) before being sent if they
- * exceed the line length limitation for the transport (1000 bytes for
- * SMTP).  Received headers may have been folded.  The application is
- * responsible for folding and unfolding headers as appropriate. <p>
- *
- * @author John Mani
- * @author Bill Shannon
- * @see MimeUtility
- */
-public final class InternetHeaders {
-
-    private final FinalArrayList headers = new FinalArrayList();
-
-    /**
-     * Lazily cerated view of header lines (Strings).
-     */
-    private List headerValueView;
-
-    /**
-     * Create an empty InternetHeaders object.
-     */
-    public InternetHeaders() {
-    }
-
-    /**
-     * Read and parse the given RFC822 message stream till the
-     * blank line separating the header from the body. The input
-     * stream is left positioned at the start of the body. The
-     * header lines are stored internally. <p>
-     * <p/>
-     * For efficiency, wrap a BufferedInputStream around the actual
-     * input stream and pass it as the parameter.
-     *
-     * @param   is RFC822 input stream
-     */
-    public InternetHeaders(InputStream is) throws MessagingException {
-        load(is);
-    }
-
-    /**
-     * Read and parse the given RFC822 message stream till the
-     * blank line separating the header from the body. Store the
-     * header lines inside this InternetHeaders object. <p>
-     * <p/>
-     * Note that the header lines are added into this InternetHeaders
-     * object, so any existing headers in this object will not be
-     * affected.
-     *
-     * @param   is RFC822 input stream
-     */
-    public void load(InputStream is) throws MessagingException {
-        // Read header lines until a blank line. It is valid
-        // to have BodyParts with no header lines.
-        String line;
-        LineInputStream lis = new LineInputStream(is);
-        String prevline = null; // the previous header line, as a string
-        // a buffer to accumulate the header in, when we know it's needed
-        StringBuffer lineBuffer = new StringBuffer();
-
-        try {
-            //while ((line = lis.readLine()) != null) {
-            do {
-                line = lis.readLine();
-                if (line != null &&
-                        (line.startsWith(" ") || line.startsWith("\t"))) {
-                    // continuation of header
-                    if (prevline != null) {
-                        lineBuffer.append(prevline);
-                        prevline = null;
-                    }
-                    lineBuffer.append("\r\n");
-                    lineBuffer.append(line);
-                } else {
-                    // new header
-                    if (prevline != null)
-                        addHeaderLine(prevline);
-                    else if (lineBuffer.length() > 0) {
-                        // store previous header first
-                        addHeaderLine(lineBuffer.toString());
-                        lineBuffer.setLength(0);
-                    }
-                    prevline = line;
-                }
-            } while (line != null && line.length() > 0);
-        } catch (IOException ioex) {
-            throw new MessagingException("Error in input stream", ioex);
-        }
-    }
-
-    /**
-     * Return all the values for the specified header. The
-     * values are String objects.  Returns <code>null</code>
-     * if no headers with the specified name exist.
-     *
-     * @param   name header name
-     * @return          array of header values, or null if none
-     */
-    public String[] getHeader(String name) {
-        // XXX - should we just step through in index order?
-        FinalArrayList v = new FinalArrayList(); // accumulate return values
-
-        int len = headers.size();
-        for( int i=0; i<len; i++ ) {
-            hdr h = (hdr) headers.get(i);
-            if (name.equalsIgnoreCase(h.name)) {
-                v.add(h.getValue());
-            }
-        }
-        if (v.size() == 0)
-            return (null);
-        // convert Vector to an array for return
-        return (String[]) v.toArray(new String[v.size()]);
-    }
-
-    /**
-     * Get all the headers for this header name, returned as a single
-     * String, with headers separated by the delimiter. If the
-     * delimiter is <code>null</code>, only the first header is
-     * returned.  Returns <code>null</code>
-     * if no headers with the specified name exist.
-     *
-     * @param delimiter delimiter
-     * @return the value fields for all headers with
-     *         this name, or null if none
-     * @param   name header name
-     */
-    public String getHeader(String name, String delimiter) {
-        String[] s = getHeader(name);
-
-        if (s == null)
-            return null;
-
-        if ((s.length == 1) || delimiter == null)
-            return s[0];
-
-        StringBuffer r = new StringBuffer(s[0]);
-        for (int i = 1; i < s.length; i++) {
-            r.append(delimiter);
-            r.append(s[i]);
-        }
-        return r.toString();
-    }
-
-    /**
-     * Change the first header line that matches name
-     * to have value, adding a new header if no existing header
-     * matches. Remove all matching headers but the first. <p>
-     * <p/>
-     * Note that RFC822 headers can only contain US-ASCII characters
-     *
-     * @param   name    header name
-     * @param   value   header value
-     */
-    public void setHeader(String name, String value) {
-        boolean found = false;
-
-        for (int i = 0; i < headers.size(); i++) {
-            hdr h = (hdr) headers.get(i);
-            if (name.equalsIgnoreCase(h.name)) {
-                if (!found) {
-                    int j;
-                    if (h.line != null && (j = h.line.indexOf(':')) >= 0) {
-                        h.line = h.line.substring(0, j + 1) + " " + value;
-                    } else {
-                        h.line = name + ": " + value;
-                    }
-                    found = true;
-                } else {
-                    headers.remove(i);
-                    i--;    // have to look at i again
-                }
-            }
-        }
-
-        if (!found) {
-            addHeader(name, value);
-        }
-    }
-
-    /**
-     * Add a header with the specified name and value to the header list. <p>
-     * <p/>
-     * Note that RFC822 headers can only contain US-ASCII characters.
-     *
-     * @param   name    header name
-     * @param   value   header value
-     */
-    public void addHeader(String name, String value) {
-        int pos = headers.size();
-        for (int i = headers.size() - 1; i >= 0; i--) {
-            hdr h = (hdr) headers.get(i);
-            if (name.equalsIgnoreCase(h.name)) {
-                headers.add(i + 1, new hdr(name, value));
-                return;
-            }
-            // marker for default place to add new headers
-            if (h.name.equals(":"))
-                pos = i;
-        }
-        headers.add(pos, new hdr(name, value));
-    }
-
-    /**
-     * Remove all header entries that match the given name
-     *
-     * @param   name header name
-     */
-    public void removeHeader(String name) {
-        for (int i = 0; i < headers.size(); i++) {
-            hdr h = (hdr) headers.get(i);
-            if (name.equalsIgnoreCase(h.name)) {
-                headers.remove(i);
-                i--;    // have to look at i again
-            }
-        }
-    }
-
-    /**
-     * Return all the headers as an Enumeration of
-     * {@link Header} objects.
-     *
-     * @return  Header objects
-     */
-    public FinalArrayList getAllHeaders() {
-        return headers; // conceptually it should be read-only, but for performance reason I'm not wrapping it here
-    }
-
-    /**
-     * Add an RFC822 header line to the header store.
-     * If the line starts with a space or tab (a continuation line),
-     * add it to the last header line in the list. <p>
-     * <p/>
-     * Note that RFC822 headers can only contain US-ASCII characters
-     *
-     * @param   line    raw RFC822 header line
-     */
-    public void addHeaderLine(String line) {
-        try {
-            char c = line.charAt(0);
-            if (c == ' ' || c == '\t') {
-                hdr h = (hdr) headers.get(headers.size() - 1);
-                h.line += "\r\n" + line;
-            } else
-                headers.add(new hdr(line));
-        } catch (StringIndexOutOfBoundsException e) {
-            // line is empty, ignore it
-            return;
-        } catch (NoSuchElementException e) {
-            // XXX - vector is empty?
-        }
-    }
-
-    /**
-     * Return all the header lines as a collection
-     */
-    public List getAllHeaderLines() {
-        if(headerValueView==null)
-            headerValueView = new AbstractList() {
-                public Object get(int index) {
-                    return ((hdr)headers.get(index)).line;
-                }
-
-                public int size() {
-                    return headers.size();
-                }
-            };
-        return headerValueView;
-    }
-}
-
-/*
- * A private utility class to represent an individual header.
- */
-
-class hdr implements Header {
-    // XXX - should these be private?
-    String name;    // the canonicalized (trimmed) name of this header
-    // XXX - should name be stored in lower case?
-    String line;    // the entire RFC822 header "line"
-
-    /*
-     * Constructor that takes a line and splits out
-     * the header name.
-     */
-    hdr(String l) {
-        int i = l.indexOf(':');
-        if (i < 0) {
-            // should never happen
-            name = l.trim();
-        } else {
-            name = l.substring(0, i).trim();
-        }
-        line = l;
-    }
-
-    /*
-     * Constructor that takes a header name and value.
-     */
-    hdr(String n, String v) {
-        name = n;
-        line = n + ": " + v;
-    }
-
-    /*
-     * Return the "name" part of the header line.
-     */
-    public String getName() {
-        return name;
-    }
-
-    /*
-     * Return the "value" part of the header line.
-     */
-    public String getValue() {
-        int i = line.indexOf(':');
-        if (i < 0)
-            return line;
-
-        int j;
-        if (name.equalsIgnoreCase("Content-Description")) {
-            // Content-Description should retain the folded whitespace after header unfolding -
-            // rf. RFC2822 section 2.2.3, rf. RFC2822 section 3.2.3
-            for (j = i + 1; j < line.length(); j++) {
-                char c = line.charAt(j);
-                if (!(/*c == ' ' ||*/c == '\t' || c == '\r' || c == '\n'))
-                    break;
-            }
-        } else {
-            // skip whitespace after ':'
-            for (j = i + 1; j < line.length(); j++) {
-                char c = line.charAt(j);
-                if (!(c == ' ' || c == '\t' || c == '\r' || c == '\n'))
-                    break;
-            }
-        }
-        return line.substring(j);
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimeBodyPart.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1165 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)MimeBodyPart.java      1.52 03/02/12
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
-
-
-import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException;
-import com.sun.xml.internal.messaging.saaj.packaging.mime.util.OutputUtil;
-import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;
-import com.sun.xml.internal.messaging.saaj.util.FinalArrayList;
-
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import javax.activation.DataHandler;
-import java.io.BufferedInputStream;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.util.List;
-import javax.activation.DataSource;
-import com.sun.xml.internal.org.jvnet.mimepull.MIMEPart;
-
-/**
- * This class represents a MIME body part.
- * MimeBodyParts are contained in <code>MimeMultipart</code>
- * objects. <p>
- *
- * MimeBodyPart uses the <code>InternetHeaders</code> class to parse
- * and store the headers of that body part. <p>
- *
- * <hr><strong>A note on RFC 822 and MIME headers</strong><p>
- *
- * RFC 822 header fields <strong>must</strong> contain only
- * US-ASCII characters. MIME allows non ASCII characters to be present
- * in certain portions of certain headers, by encoding those characters.
- * RFC 2047 specifies the rules for doing this. The MimeUtility
- * class provided in this package can be used to to achieve this.
- * Callers of the <code>setHeader</code>, <code>addHeader</code>, and
- * <code>addHeaderLine</code> methods are responsible for enforcing
- * the MIME requirements for the specified headers.  In addition, these
- * header fields must be folded (wrapped) before being sent if they
- * exceed the line length limitation for the transport (1000 bytes for
- * SMTP).  Received headers may have been folded.  The application is
- * responsible for folding and unfolding headers as appropriate. <p>
- *
- * @author John Mani
- * @author Bill Shannon
- * @see MimeUtility
- */
-
-public final class MimeBodyPart {
-
-    /**
-     * This part should be presented as an attachment.
-     * @see #getDisposition
-     * @see #setDisposition
-     */
-    public static final String ATTACHMENT = "attachment";
-
-    /**
-     * This part should be presented inline.
-     * @see #getDisposition
-     * @see #setDisposition
-     */
-    public static final String INLINE = "inline";
-
-
-    // Paranoia:
-    // allow this last minute change to be disabled if it causes problems
-    private static boolean setDefaultTextCharset = true;
-
-    static {
-        try {
-            String s = System.getProperty("mail.mime.setdefaulttextcharset");
-            // default to true
-            setDefaultTextCharset = s == null || !s.equalsIgnoreCase("false");
-        } catch (SecurityException sex) {
-            // ignore it
-        }
-    }
-
-    /*
-        Data is represented in one of three forms.
-        Either we have a DataHandler, or byte[] as the raw content image, or the contentStream.
-        It's OK to have more than one of them, provided that they are identical.
-    */
-
-    /**
-     * The DataHandler object representing this MimeBodyPart's content.
-     */
-    private DataHandler dh;
-
-    /**
-     * Byte array that holds the bytes of the content of this MimeBodyPart.
-     * Used in a pair with {@link #contentLength} to denote a regision of a buffer
-     * as a valid data.
-     */
-    private byte[] content;
-    private int contentLength;
-    private int start = 0;
-
-    /**
-     * If the data for this body part was supplied by an
-     * InputStream that implements the SharedInputStream interface,
-     * <code>contentStream</code> is another such stream representing
-     * the content of this body part.  In this case, <code>content</code>
-     * will be null.
-     *
-     * @since   JavaMail 1.2
-     */
-    private InputStream contentStream;
-
-
-
-    /**
-     * The InternetHeaders object that stores all the headers
-     * of this body part.
-     */
-    private final InternetHeaders headers;
-
-    /**
-     * The <code>MimeMultipart</code> object containing this <code>MimeBodyPart</code>,
-     * if known.
-     * @since   JavaMail 1.1
-     */
-    private MimeMultipart parent;
-
-    private MIMEPart mimePart;
-
-    /**
-     * An empty MimeBodyPart object is created.
-     * This body part maybe filled in by a client constructing a multipart
-     * message.
-     */
-    public MimeBodyPart() {
-        headers = new InternetHeaders();
-    }
-
-    /**
-     * Constructs a MimeBodyPart by reading and parsing the data from
-     * the specified input stream. The parser consumes data till the end
-     * of the given input stream.  The input stream must start at the
-     * beginning of a valid MIME body part and must terminate at the end
-     * of that body part. <p>
-     *
-     * Note that the "boundary" string that delimits body parts must
-     * <strong>not</strong> be included in the input stream. The intention
-     * is that the MimeMultipart parser will extract each body part's bytes
-     * from a multipart stream and feed them into this constructor, without
-     * the delimiter strings.
-     *
-     * @param   is      the body part Input Stream
-     */
-    public MimeBodyPart(InputStream is) throws MessagingException {
-        if (!(is instanceof ByteArrayInputStream) &&
-                !(is instanceof BufferedInputStream) &&
-                !(is instanceof SharedInputStream))
-            is = new BufferedInputStream(is);
-
-        headers = new InternetHeaders(is);
-
-        if (is instanceof SharedInputStream) {
-            SharedInputStream sis = (SharedInputStream) is;
-            contentStream = sis.newStream(sis.getPosition(), -1);
-        } else {
-            ByteOutputStream bos = null;
-            try {
-                bos = new ByteOutputStream();
-                bos.write(is);
-                content = bos.getBytes();
-                contentLength = bos.getCount();
-            } catch (IOException ioex) {
-                throw new MessagingException("Error reading input stream", ioex);
-            } finally {
-                if (bos != null)
-                    bos.close();
-            }
-        }
-
-    }
-
-    /**
-     * Constructs a MimeBodyPart using the given header and
-     * content bytes. <p>
-     *
-     * Used by providers.
-     *
-     * @param   headers The header of this part
-     * @param   content bytes representing the body of this part.
-     */
-    public MimeBodyPart(InternetHeaders headers, byte[] content, int len) {
-        this.headers = headers;
-        this.content = content;
-        this.contentLength = len;
-    }
-
-    public MimeBodyPart(
-        InternetHeaders headers, byte[] content, int start,  int len) {
-        this.headers = headers;
-        this.content = content;
-        this.start = start;
-        this.contentLength = len;
-    }
-
-    public MimeBodyPart(MIMEPart part) {
-       mimePart = part;
-       headers = new InternetHeaders();
-       List<? extends com.sun.xml.internal.org.jvnet.mimepull.Header> hdrs = mimePart.getAllHeaders();
-        for (com.sun.xml.internal.org.jvnet.mimepull.Header hd : hdrs) {
-            headers.addHeader(hd.getName(), hd.getValue());
-        }
-    }
-    /**
-     * Return the containing <code>MimeMultipart</code> object,
-     * or <code>null</code> if not known.
-     */
-    public MimeMultipart getParent() {
-        return parent;
-    }
-
-    /**
-     * Set the parent of this <code>MimeBodyPart</code> to be the specified
-     * <code>MimeMultipart</code>.  Normally called by <code>MimeMultipart</code>'s
-     * <code>addBodyPart</code> method.  <code>parent</code> may be
-     * <code>null</code> if the <code>MimeBodyPart</code> is being removed
-     * from its containing <code>MimeMultipart</code>.
-     * @since   JavaMail 1.1
-     */
-    public void setParent(MimeMultipart parent) {
-        this.parent = parent;
-    }
-
-    /**
-     * Return the size of the content of this body part in bytes.
-     * Return -1 if the size cannot be determined. <p>
-     *
-     * Note that this number may not be an exact measure of the
-     * content size and may or may not account for any transfer
-     * encoding of the content. <p>
-     *
-     * This implementation returns the size of the <code>content</code>
-     * array (if not null), or, if <code>contentStream</code> is not
-     * null, and the <code>available</code> method returns a positive
-     * number, it returns that number as the size.  Otherwise, it returns
-     * -1.
-     *
-     * @return size in bytes, or -1 if not known
-     */
-    public int getSize() {
-
-        if (mimePart != null) {
-            try {
-                return mimePart.read().available();
-            } catch (IOException ex) {
-                return -1;
-            }
-        }
-        if (content != null)
-            return contentLength;
-        if (contentStream != null) {
-            try {
-                int size = contentStream.available();
-                // only believe the size if it's greate than zero, since zero
-                // is the default returned by the InputStream class itself
-                if (size > 0)
-                    return size;
-            } catch (IOException ex) {
-                // ignore it
-            }
-        }
-        return -1;
-    }
-
-    /**
-     * Return the number of lines for the content of this MimeBodyPart.
-     * Return -1 if this number cannot be determined. <p>
-     *
-     * Note that this number may not be an exact measure of the
-     * content length and may or may not account for any transfer
-     * encoding of the content. <p>
-     *
-     * This implementation returns -1.
-     *
-     * @return number of lines, or -1 if not known
-     */
-     public int getLineCount() {
-        return -1;
-     }
-
-    /**
-     * Returns the value of the RFC 822 "Content-Type" header field.
-     * This represents the content type of the content of this
-     * body part. This value must not be null. If this field is
-     * unavailable, "text/plain" should be returned. <p>
-     *
-     * This implementation uses <code>getHeader(name)</code>
-     * to obtain the requisite header field.
-     *
-     * @return  Content-Type of this body part
-     */
-    public String getContentType() {
-        if (mimePart != null) {
-            return mimePart.getContentType();
-        }
-        String s = getHeader("Content-Type", null);
-        if (s == null)
-            s = "text/plain";
-
-        return s;
-    }
-
-    /**
-     * Is this MimeBodyPart of the specified MIME type?  This method
-     * compares <strong>only the <code>primaryType</code> and
-     * <code>subType</code></strong>.
-     * The parameters of the content types are ignored. <p>
-     *
-     * For example, this method will return <code>true</code> when
-     * comparing a MimeBodyPart of content type <strong>"text/plain"</strong>
-     * with <strong>"text/plain; charset=foobar"</strong>. <p>
-     *
-     * If the <code>subType</code> of <code>mimeType</code> is the
-     * special character '*', then the subtype is ignored during the
-     * comparison.
-     */
-    public boolean isMimeType(String mimeType) {
-        boolean result;
-        // XXX - lots of room for optimization here!
-        try {
-            ContentType ct = new ContentType(getContentType());
-            result = ct.match(mimeType);
-        } catch (ParseException ex) {
-            result = getContentType().equalsIgnoreCase(mimeType);
-        }
-        return result;
-    }
-
-    /**
-     * Returns the value of the "Content-Disposition" header field.
-     * This represents the disposition of this part. The disposition
-     * describes how the part should be presented to the user. <p>
-     *
-     * If the Content-Disposition field is unavailable,
-     * null is returned. <p>
-     *
-     * This implementation uses <code>getHeader(name)</code>
-     * to obtain the requisite header field.
-     *
-     * @see #headers
-     */
-    public String getDisposition() throws MessagingException {
-        String s = getHeader("Content-Disposition", null);
-
-        if (s == null)
-            return null;
-
-        ContentDisposition cd = new ContentDisposition(s);
-        return cd.getDisposition();
-    }
-
-    /**
-     * Set the "Content-Disposition" header field of this body part.
-     * If the disposition is null, any existing "Content-Disposition"
-     * header field is removed.
-     *
-     * @exception       IllegalStateException if this body part is
-     *                  obtained from a READ_ONLY folder.
-     */
-    public void setDisposition(String disposition) throws MessagingException {
-        if (disposition == null)
-            removeHeader("Content-Disposition");
-        else {
-            String s = getHeader("Content-Disposition", null);
-            if (s != null) {
-                /* A Content-Disposition header already exists ..
-                 *
-                 * Override disposition, but attempt to retain
-                 * existing disposition parameters
-                 */
-                ContentDisposition cd = new ContentDisposition(s);
-                cd.setDisposition(disposition);
-                disposition = cd.toString();
-            }
-            setHeader("Content-Disposition", disposition);
-        }
-    }
-
-    /**
-     * Returns the content transfer encoding from the
-     * "Content-Transfer-Encoding" header
-     * field. Returns <code>null</code> if the header is unavailable
-     * or its value is absent. <p>
-     *
-     * This implementation uses <code>getHeader(name)</code>
-     * to obtain the requisite header field.
-     *
-     * @see #headers
-     */
-    public String getEncoding() throws MessagingException {
-        String s = getHeader("Content-Transfer-Encoding", null);
-
-        if (s == null)
-            return null;
-
-        s = s.trim();   // get rid of trailing spaces
-        // quick check for known values to avoid unnecessary use
-        // of tokenizer.
-        if (s.equalsIgnoreCase("7bit") || s.equalsIgnoreCase("8bit") ||
-            s.equalsIgnoreCase("quoted-printable") ||
-            s.equalsIgnoreCase("base64"))
-            return s;
-
-        // Tokenize the header to obtain the encoding (skip comments)
-        HeaderTokenizer h = new HeaderTokenizer(s, HeaderTokenizer.MIME);
-
-        HeaderTokenizer.Token tk;
-        int tkType;
-
-        for (;;) {
-            tk = h.next(); // get a token
-            tkType = tk.getType();
-            if (tkType == HeaderTokenizer.Token.EOF)
-            break; // done
-            else if (tkType == HeaderTokenizer.Token.ATOM)
-            return tk.getValue();
-            else // invalid token, skip it.
-            continue;
-        }
-        return s;
-    }
-
-    /**
-     * Returns the value of the "Content-ID" header field. Returns
-     * <code>null</code> if the field is unavailable or its value is
-     * absent. <p>
-     *
-     * This implementation uses <code>getHeader(name)</code>
-     * to obtain the requisite header field.
-     */
-    public String getContentID() {
-        return getHeader("Content-ID", null);
-    }
-
-    /**
-     * Set the "Content-ID" header field of this body part.
-     * If the <code>cid</code> parameter is null, any existing
-     * "Content-ID" is removed.
-     *
-     * @exception       IllegalStateException if this body part is
-     *                  obtained from a READ_ONLY folder.
-     * @since           JavaMail 1.3
-     */
-    public void setContentID(String cid) {
-        if (cid == null)
-            removeHeader("Content-ID");
-        else
-            setHeader("Content-ID", cid);
-    }
-
-    /**
-     * Return the value of the "Content-MD5" header field. Returns
-     * <code>null</code> if this field is unavailable or its value
-     * is absent. <p>
-     *
-     * This implementation uses <code>getHeader(name)</code>
-     * to obtain the requisite header field.
-     */
-    public String getContentMD5() {
-        return getHeader("Content-MD5", null);
-    }
-
-    /**
-     * Set the "Content-MD5" header field of this body part.
-     *
-     * @exception       IllegalStateException if this body part is
-     *                  obtained from a READ_ONLY folder.
-     */
-    public void setContentMD5(String md5) {
-        setHeader("Content-MD5", md5);
-    }
-
-    /**
-     * Get the languages specified in the Content-Language header
-     * of this MimeBodyPart. The Content-Language header is defined by
-     * RFC 1766. Returns <code>null</code> if this header is not
-     * available or its value is absent. <p>
-     *
-     * This implementation uses <code>getHeader(name)</code>
-     * to obtain the requisite header field.
-     */
-    public String[] getContentLanguage() throws MessagingException {
-        String s = getHeader("Content-Language", null);
-
-        if (s == null)
-            return null;
-
-        // Tokenize the header to obtain the Language-tags (skip comments)
-        HeaderTokenizer h = new HeaderTokenizer(s, HeaderTokenizer.MIME);
-        FinalArrayList v = new FinalArrayList();
-
-        HeaderTokenizer.Token tk;
-        int tkType;
-
-        while (true) {
-            tk = h.next(); // get a language-tag
-            tkType = tk.getType();
-            if (tkType == HeaderTokenizer.Token.EOF)
-            break; // done
-            else if (tkType == HeaderTokenizer.Token.ATOM) v.add(tk.getValue());
-            else // invalid token, skip it.
-            continue;
-        }
-
-        if (v.size() == 0)
-            return null;
-
-        return (String[])v.toArray(new String[v.size()]);
-    }
-
-    /**
-     * Set the Content-Language header of this MimeBodyPart. The
-     * Content-Language header is defined by RFC 1766.
-     *
-     * @param languages         array of language tags
-     */
-    public void setContentLanguage(String[] languages) {
-        StringBuffer sb = new StringBuffer(languages[0]);
-        for (int i = 1; i < languages.length; i++)
-            sb.append(',').append(languages[i]);
-        setHeader("Content-Language", sb.toString());
-    }
-
-    /**
-     * Returns the "Content-Description" header field of this body part.
-     * This typically associates some descriptive information with
-     * this part. Returns null if this field is unavailable or its
-     * value is absent. <p>
-     *
-     * If the Content-Description field is encoded as per RFC 2047,
-     * it is decoded and converted into Unicode. If the decoding or
-     * conversion fails, the raw data is returned as is. <p>
-     *
-     * This implementation uses <code>getHeader(name)</code>
-     * to obtain the requisite header field.
-     *
-     * @return  content description
-     */
-    public String getDescription() {
-        String rawvalue = getHeader("Content-Description", null);
-
-        if (rawvalue == null)
-            return null;
-
-        try {
-            return MimeUtility.decodeText(MimeUtility.unfold(rawvalue));
-        } catch (UnsupportedEncodingException ex) {
-            return rawvalue;
-        }
-    }
-
-    /**
-     * Set the "Content-Description" header field for this body part.
-     * If the description parameter is <code>null</code>, then any
-     * existing "Content-Description" fields are removed. <p>
-     *
-     * If the description contains non US-ASCII characters, it will
-     * be encoded using the platform's default charset. If the
-     * description contains only US-ASCII characters, no encoding
-     * is done and it is used as is. <p>
-     *
-     * Note that if the charset encoding process fails, a
-     * MessagingException is thrown, and an UnsupportedEncodingException
-     * is included in the chain of nested exceptions within the
-     * MessagingException.
-     *
-     * @param description content description
-     * @exception       IllegalStateException if this body part is
-     *                  obtained from a READ_ONLY folder.
-     * @exception       MessagingException An
-     *                  UnsupportedEncodingException may be included
-     *                  in the exception chain if the charset
-     *                  conversion fails.
-     */
-    public void setDescription(String description) throws MessagingException {
-        setDescription(description, null);
-    }
-
-    /**
-     * Set the "Content-Description" header field for this body part.
-     * If the description parameter is <code>null</code>, then any
-     * existing "Content-Description" fields are removed. <p>
-     *
-     * If the description contains non US-ASCII characters, it will
-     * be encoded using the specified charset. If the description
-     * contains only US-ASCII characters, no encoding  is done and
-     * it is used as is. <p>
-     *
-     * Note that if the charset encoding process fails, a
-     * MessagingException is thrown, and an UnsupportedEncodingException
-     * is included in the chain of nested exceptions within the
-     * MessagingException.
-     *
-     * @param   description     Description
-     * @param   charset         Charset for encoding
-     * @exception       IllegalStateException if this body part is
-     *                  obtained from a READ_ONLY folder.
-     * @exception       MessagingException An
-     *                  UnsupportedEncodingException may be included
-     *                  in the exception chain if the charset
-     *                  conversion fails.
-     */
-    public void setDescription(String description, String charset)
-                throws MessagingException {
-        if (description == null) {
-            removeHeader("Content-Description");
-            return;
-        }
-
-        try {
-            setHeader("Content-Description", MimeUtility.fold(21,
-            MimeUtility.encodeText(description, charset, null)));
-        } catch (UnsupportedEncodingException uex) {
-            throw new MessagingException("Encoding error", uex);
-        }
-    }
-
-    /**
-     * Get the filename associated with this body part. <p>
-     *
-     * Returns the value of the "filename" parameter from the
-     * "Content-Disposition" header field of this body part. If its
-     * not available, returns the value of the "name" parameter from
-     * the "Content-Type" header field of this body part.
-     * Returns <code>null</code> if both are absent.
-     *
-     * @return  filename
-     */
-    public String getFileName() throws MessagingException {
-        String filename = null;
-        String s = getHeader("Content-Disposition", null);
-
-        if (s != null) {
-            // Parse the header ..
-            ContentDisposition cd = new ContentDisposition(s);
-            filename = cd.getParameter("filename");
-        }
-        if (filename == null) {
-            // Still no filename ? Try the "name" ContentType parameter
-            s = getHeader("Content-Type", null);
-            if (s != null) {
-            try {
-                ContentType ct = new ContentType(s);
-                filename = ct.getParameter("name");
-            } catch (ParseException pex) { }    // ignore it
-            }
-        }
-        return filename;
-    }
-
-    /**
-     * Set the filename associated with this body part, if possible. <p>
-     *
-     * Sets the "filename" parameter of the "Content-Disposition"
-     * header field of this body part.
-     *
-     * @exception       IllegalStateException if this body part is
-     *                  obtained from a READ_ONLY folder.
-     */
-    public void setFileName(String filename) throws MessagingException {
-        // Set the Content-Disposition "filename" parameter
-        String s = getHeader("Content-Disposition", null);
-        ContentDisposition cd =
-            new ContentDisposition(s == null ? ATTACHMENT : s);
-        cd.setParameter("filename", filename);
-        setHeader("Content-Disposition", cd.toString());
-
-        /* Also attempt to set the Content-Type "name" parameter,
-         * to satisfy ancient MUAs.
-         * XXX: This is not RFC compliant, and hence should really
-         * be conditional based on some property. Fix this once we
-         * figure out how to get at Properties from here !
-         */
-        s = getHeader("Content-Type", null);
-        if (s != null) {
-            try {
-            ContentType cType = new ContentType(s);
-            cType.setParameter("name", filename);
-            setHeader("Content-Type", cType.toString());
-            } catch (ParseException pex) { }    // ignore it
-        }
-    }
-
-    /**
-     * Return a decoded input stream for this body part's "content". <p>
-     *
-     * This implementation obtains the input stream from the DataHandler.
-     * That is, it invokes getDataHandler().getInputStream();
-     *
-     * @return          an InputStream
-     * @exception       IOException this is typically thrown by the
-     *                  DataHandler. Refer to the documentation for
-     *                  javax.activation.DataHandler for more details.
-     *
-     * @see     #getContentStream
-     * @see     DataHandler#getInputStream
-     */
-    public InputStream getInputStream()
-                throws IOException {
-        return getDataHandler().getInputStream();
-    }
-
-   /**
-     * Produce the raw bytes of the content. This method is used
-     * when creating a DataHandler object for the content. Subclasses
-     * that can provide a separate input stream for just the MimeBodyPart
-     * content might want to override this method. <p>
-     *
-     * @see #content
-     */
-    /*package*/ InputStream getContentStream() throws MessagingException {
-        if (mimePart != null) {
-            return mimePart.read();
-        }
-        if (contentStream != null)
-            return ((SharedInputStream)contentStream).newStream(0, -1);
-        if (content != null)
-            return new ByteArrayInputStream(content,start,contentLength);
-
-        throw new MessagingException("No content");
-    }
-
-    /**
-     * Return an InputStream to the raw data with any Content-Transfer-Encoding
-     * intact.  This method is useful if the "Content-Transfer-Encoding"
-     * header is incorrect or corrupt, which would prevent the
-     * <code>getInputStream</code> method or <code>getContent</code> method
-     * from returning the correct data.  In such a case the application may
-     * use this method and attempt to decode the raw data itself. <p>
-     *
-     * This implementation simply calls the <code>getContentStream</code>
-     * method.
-     *
-     * @see     #getInputStream
-     * @see     #getContentStream
-     * @since   JavaMail 1.2
-     */
-    public InputStream getRawInputStream() throws MessagingException {
-        return getContentStream();
-    }
-
-    /**
-     * Return a DataHandler for this body part's content. <p>
-     *
-     * The implementation provided here works just like the
-     * the implementation in MimeMessage.
-     */
-    public DataHandler getDataHandler() {
-        if (mimePart != null) {
-            //return an inputstream
-            return new DataHandler(new DataSource() {
-
-                public InputStream getInputStream() throws IOException {
-                    return mimePart.read();
-                }
-
-                public OutputStream getOutputStream() throws IOException {
-                    throw new UnsupportedOperationException("getOutputStream cannot be supported : You have enabled LazyAttachments Option");
-                }
-
-                public String getContentType() {
-                    return mimePart.getContentType();
-                }
-
-                public String getName() {
-                    return "MIMEPart Wrapped DataSource";
-                }
-            });
-        }
-        if (dh == null)
-            dh = new DataHandler(new MimePartDataSource(this));
-        return dh;
-    }
-
-    /**
-     * Return the content as a java object. The type of the object
-     * returned is of course dependent on the content itself. For
-     * example, the native format of a text/plain content is usually
-     * a String object. The native format for a "multipart"
-     * content is always a MimeMultipart subclass. For content types that are
-     * unknown to the DataHandler system, an input stream is returned
-     * as the content. <p>
-     *
-     * This implementation obtains the content from the DataHandler.
-     * That is, it invokes getDataHandler().getContent();
-     *
-     * @return          Object
-     * @exception       IOException this is typically thrown by the
-     *                  DataHandler. Refer to the documentation for
-     *                  javax.activation.DataHandler for more details.
-     */
-    public Object getContent() throws IOException {
-        return getDataHandler().getContent();
-    }
-
-    /**
-     * This method provides the mechanism to set this body part's content.
-     * The given DataHandler object should wrap the actual content.
-     *
-     * @param   dh      The DataHandler for the content
-     * @exception       IllegalStateException if this body part is
-     *                  obtained from a READ_ONLY folder.
-     */
-    public void setDataHandler(DataHandler dh) {
-        if (mimePart != null) {
-            mimePart = null;
-        }
-        this.dh = dh;
-        this.content = null;
-        this.contentStream = null;
-        removeHeader("Content-Type");
-        removeHeader("Content-Transfer-Encoding");
-    }
-
-    /**
-     * A convenience method for setting this body part's content. <p>
-     *
-     * The content is wrapped in a DataHandler object. Note that a
-     * DataContentHandler class for the specified type should be
-     * available to the JavaMail implementation for this to work right.
-     * That is, to do <code>setContent(foobar, "application/x-foobar")</code>,
-     * a DataContentHandler for "application/x-foobar" should be installed.
-     * Refer to the Java Activation Framework for more information.
-     *
-     * @param   o       the content object
-     * @param   type    Mime type of the object
-     * @exception       IllegalStateException if this body part is
-     *                  obtained from a READ_ONLY folder.
-     */
-    public void setContent(Object o, String type) {
-        if (mimePart != null) {
-            mimePart = null;
-        }
-        if (o instanceof MimeMultipart) {
-            setContent((MimeMultipart)o);
-        } else {
-            setDataHandler(new DataHandler(o, type));
-        }
-    }
-
-    /**
-     * Convenience method that sets the given String as this
-     * part's content, with a MIME type of "text/plain". If the
-     * string contains non US-ASCII characters, it will be encoded
-     * using the platform's default charset. The charset is also
-     * used to set the "charset" parameter. <p>
-     *
-     * Note that there may be a performance penalty if
-     * <code>text</code> is large, since this method may have
-     * to scan all the characters to determine what charset to
-     * use. <p>
-     * If the charset is already known, use the
-     * setText() version that takes the charset parameter.
-     *
-     * @see     #setText(String text, String charset)
-     */
-    public void setText(String text) {
-        setText(text, null);
-    }
-
-    /**
-     * Convenience method that sets the given String as this part's
-     * content, with a MIME type of "text/plain" and the specified
-     * charset. The given Unicode string will be charset-encoded
-     * using the specified charset. The charset is also used to set
-     * the "charset" parameter.
-     */
-    public void setText(String text, String charset) {
-        if (charset == null) {
-            if (MimeUtility.checkAscii(text) != MimeUtility.ALL_ASCII)
-                charset = MimeUtility.getDefaultMIMECharset();
-            else
-                charset = "us-ascii";
-        }
-        setContent(text, "text/plain; charset=" +
-                MimeUtility.quote(charset, HeaderTokenizer.MIME));
-    }
-
-    /**
-     * This method sets the body part's content to a MimeMultipart object.
-     *
-     * @param  mp       The multipart object that is the Message's content
-     * @exception       IllegalStateException if this body part is
-     *                  obtained from a READ_ONLY folder.
-     */
-    public void setContent(MimeMultipart mp) {
-        if (mimePart != null) {
-            mimePart = null;
-        }
-        setDataHandler(new DataHandler(mp, mp.getContentType().toString()));
-        mp.setParent(this);
-    }
-
-    /**
-     * Output the body part as an RFC 822 format stream.
-     *
-     * @exception MessagingException
-     * @exception IOException   if an error occurs writing to the
-     *                          stream or if an error is generated
-     *                          by the javax.activation layer.
-     * @see DataHandler#writeTo
-     */
-    public void writeTo(OutputStream os)
-                                throws IOException, MessagingException {
-
-        // First, write out the header
-        List hdrLines = headers.getAllHeaderLines();
-        int sz = hdrLines.size();
-        for( int i=0; i<sz; i++ )
-            OutputUtil.writeln((String)hdrLines.get(i),os);
-
-        // The CRLF separator between header and content
-        OutputUtil.writeln(os);
-
-        // Finally, the content.
-        // XXX: May need to account for ESMTP ?
-        if (contentStream != null) {
-            ((SharedInputStream)contentStream).writeTo(0,-1,os);
-        } else
-        if (content != null) {
-            os.write(content,start,contentLength);
-        } else
-        if (dh!=null) {
-            // this is the slowest route, so try it as the last resort
-            OutputStream wos = MimeUtility.encode(os, getEncoding());
-            getDataHandler().writeTo(wos);
-            if(os!=wos)
-                wos.flush(); // Needed to complete encoding
-        } else if (mimePart != null) {
-            OutputStream wos = MimeUtility.encode(os, getEncoding());
-            getDataHandler().writeTo(wos);
-            if(os!=wos)
-                wos.flush(); // Needed to complete encoding
-        }else {
-            throw new MessagingException("no content");
-        }
-    }
-
-    /**
-     * Get all the headers for this header_name. Note that certain
-     * headers may be encoded as per RFC 2047 if they contain
-     * non US-ASCII characters and these should be decoded.
-     *
-     * @param   name    name of header
-     * @return  array of headers
-     * @see     MimeUtility
-     */
-    public String[] getHeader(String name) {
-        return headers.getHeader(name);
-    }
-
-    /**
-     * Get all the headers for this header name, returned as a single
-     * String, with headers separated by the delimiter. If the
-     * delimiter is <code>null</code>, only the first header is
-     * returned.
-     *
-     * @param name              the name of this header
-     * @param delimiter         delimiter between fields in returned string
-     * @return                  the value fields for all headers with
-     *                          this name
-     */
-    public String getHeader(String name, String delimiter) {
-        return headers.getHeader(name, delimiter);
-    }
-
-    /**
-     * Set the value for this header_name. Replaces all existing
-     * header values with this new value. Note that RFC 822 headers
-     * must contain only US-ASCII characters, so a header that
-     * contains non US-ASCII characters must be encoded as per the
-     * rules of RFC 2047.
-     *
-     * @param   name    header name
-     * @param   value   header value
-     * @see     MimeUtility
-     */
-    public void setHeader(String name, String value) {
-        headers.setHeader(name, value);
-    }
-
-    /**
-     * Add this value to the existing values for this header_name.
-     * Note that RFC 822 headers must contain only US-ASCII
-     * characters, so a header that contains non US-ASCII characters
-     * must be encoded as per the rules of RFC 2047.
-     *
-     * @param   name    header name
-     * @param   value   header value
-     * @see     MimeUtility
-     */
-    public void addHeader(String name, String value) {
-        headers.addHeader(name, value);
-    }
-
-    /**
-     * Remove all headers with this name.
-     */
-    public void removeHeader(String name) {
-        headers.removeHeader(name);
-    }
-
-    /**
-     * Return all the headers from this Message as an Enumeration of
-     * Header objects.
-     */
-    public FinalArrayList getAllHeaders() {
-        return headers.getAllHeaders();
-    }
-
-
-    /**
-     * Add a header line to this body part
-     */
-    public void addHeaderLine(String line) {
-        headers.addHeaderLine(line);
-    }
-
-    /**
-     * Examine the content of this body part and update the appropriate
-     * MIME headers.  Typical headers that get set here are
-     * <code>Content-Type</code> and <code>Content-Transfer-Encoding</code>.
-     * Headers might need to be updated in two cases:
-     *
-     * <br>
-     * - A message being crafted by a mail application will certainly
-     * need to activate this method at some point to fill up its internal
-     * headers.
-     *
-     * <br>
-     * - A message read in from a Store will have obtained
-     * all its headers from the store, and so doesn't need this.
-     * However, if this message is editable and if any edits have
-     * been made to either the content or message structure, we might
-     * need to resync our headers.
-     *
-     * <br>
-     * In both cases this method is typically called by the
-     * <code>Message.saveChanges</code> method.
-     */
-    protected void updateHeaders() throws MessagingException {
-        DataHandler dh = getDataHandler();
-        /*
-         * Code flow indicates null is never returned from
-         * getdataHandler() - findbugs
-         */
-        //if (dh == null) // Huh ?
-        //    return;
-
-        try {
-            String type = dh.getContentType();
-            boolean composite = false;
-            boolean needCTHeader = getHeader("Content-Type") == null;
-
-            ContentType cType = new ContentType(type);
-            if (cType.match("multipart/*")) {
-                // If multipart, recurse
-                composite = true;
-                Object o = dh.getContent();
-                ((MimeMultipart) o).updateHeaders();
-            } else if (cType.match("message/rfc822")) {
-                composite = true;
-            }
-
-            // Content-Transfer-Encoding, but only if we don't
-            // already have one
-            if (!composite) {   // not allowed on composite parts
-                if (getHeader("Content-Transfer-Encoding") == null)
-                    setEncoding(MimeUtility.getEncoding(dh));
-
-                if (needCTHeader && setDefaultTextCharset &&
-                        cType.match("text/*") &&
-                        cType.getParameter("charset") == null) {
-                    /*
-                     * Set a default charset for text parts.
-                     * We really should examine the data to determine
-                     * whether or not it's all ASCII, but that's too
-                     * expensive so we make an assumption:  If we
-                     * chose 7bit encoding for this data, it's probably
-                     * ASCII.  (MimeUtility.getEncoding will choose
-                     * 7bit only in this case, but someone might've
-                     * set the Content-Transfer-Encoding header manually.)
-                     */
-                    String charset;
-                    String enc = getEncoding();
-                    if (enc != null && enc.equalsIgnoreCase("7bit"))
-                        charset = "us-ascii";
-                    else
-                        charset = MimeUtility.getDefaultMIMECharset();
-                    cType.setParameter("charset", charset);
-                    type = cType.toString();
-                }
-            }
-
-            // Now, let's update our own headers ...
-
-            // Content-type, but only if we don't already have one
-            if (needCTHeader) {
-                /*
-                 * Pull out "filename" from Content-Disposition, and
-                 * use that to set the "name" parameter. This is to
-                 * satisfy older MUAs (DtMail, Roam and probably
-                 * a bunch of others).
-                 */
-                String s = getHeader("Content-Disposition", null);
-                if (s != null) {
-                    // Parse the header ..
-                    ContentDisposition cd = new ContentDisposition(s);
-                    String filename = cd.getParameter("filename");
-                    if (filename != null) {
-                        cType.setParameter("name", filename);
-                        type = cType.toString();
-                    }
-                }
-
-                setHeader("Content-Type", type);
-            }
-        } catch (IOException ex) {
-            throw new MessagingException("IOException updating headers", ex);
-        }
-    }
-
-    private void setEncoding(String encoding) {
-            setHeader("Content-Transfer-Encoding", encoding);
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimeMultipart.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,657 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)MimeMultipart.java     1.31 03/01/29
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
-
-import java.io.*;
-
-import javax.activation.DataSource;
-
-import com.sun.xml.internal.messaging.saaj.packaging.mime.*;
-import com.sun.xml.internal.messaging.saaj.packaging.mime.util.*;
-import com.sun.xml.internal.messaging.saaj.util.FinalArrayList;
-import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;
-import com.sun.xml.internal.messaging.saaj.util.SAAJUtil;
-
-/**
- * The MimeMultipart class is an implementation
- * that uses MIME conventions for the multipart data. <p>
- *
- * A MimeMultipart is obtained from a MimeBodyPart whose primary type
- * is "multipart" (by invoking the part's <code>getContent()</code> method)
- * or it can be created by a client as part of creating a new MimeMessage. <p>
- *
- * The default multipart subtype is "mixed".  The other multipart
- * subtypes, such as "alternative", "related", and so on, can be
- * implemented as subclasses of MimeMultipart with additional methods
- * to implement the additional semantics of that type of multipart
- * content. The intent is that service providers, mail JavaBean writers
- * and mail clients will write many such subclasses and their Command
- * Beans, and will install them into the JavaBeans Activation
- * Framework, so that any JavaMail implementation and its clients can
- * transparently find and use these classes. Thus, a MIME multipart
- * handler is treated just like any other type handler, thereby
- * decoupling the process of providing multipart handlers from the
- * JavaMail API. Lacking these additional MimeMultipart subclasses,
- * all subtypes of MIME multipart data appear as MimeMultipart objects. <p>
- *
- * An application can directly construct a MIME multipart object of any
- * subtype by using the <code>MimeMultipart(String subtype)</code>
- * constructor.  For example, to create a "multipart/alternative" object,
- * use <code>new MimeMultipart("alternative")</code>.
- *
- * @version 1.31, 03/01/29
- * @author  John Mani
- * @author  Bill Shannon
- * @author  Max Spivak
- */
-
-//BM MimeMultipart can extend this
-public  class MimeMultipart {
-
-    /**
-     * The DataSource supplying our InputStream.
-     */
-    protected DataSource ds = null;
-
-    /**
-     * Have we parsed the data from our InputStream yet?
-     * Defaults to true; set to false when our constructor is
-     * given a DataSource with an InputStream that we need to
-     * parse.
-     */
-    protected boolean parsed = true;
-
-    /**
-     * Vector of MimeBodyPart objects.
-     */
-    protected FinalArrayList parts = new FinalArrayList(); // Holds BodyParts
-
-    /**
-     * This field specifies the content-type of this multipart
-     * object. It defaults to "multipart/mixed".
-     */
-    protected ContentType contentType;
-
-    /**
-     * The <code>MimeBodyPart</code> containing this <code>MimeMultipart</code>,
-     * if known.
-     * @since   JavaMail 1.1
-     */
-    protected MimeBodyPart parent;
-
-    protected static final boolean ignoreMissingEndBoundary;
-    static {
-        ignoreMissingEndBoundary = SAAJUtil.getSystemBoolean("saaj.mime.multipart.ignoremissingendboundary");
-    }
-
-    /**
-     * Default constructor. An empty MimeMultipart object
-     * is created. Its content type is set to "multipart/mixed".
-     * A unique boundary string is generated and this string is
-     * setup as the "boundary" parameter for the
-     * <code>contentType</code> field. <p>
-     *
-     * MimeBodyParts may be added later.
-     */
-    public MimeMultipart() {
-        this("mixed");
-    }
-
-    /**
-     * Construct a MimeMultipart object of the given subtype.
-     * A unique boundary string is generated and this string is
-     * setup as the "boundary" parameter for the
-     * <code>contentType</code> field. <p>
-     *
-     * MimeBodyParts may be added later.
-     */
-    public MimeMultipart(String subtype) {
-        //super();
-        /*
-         * Compute a boundary string.
-         */
-        String boundary = UniqueValue.getUniqueBoundaryValue();
-        contentType = new ContentType("multipart", subtype, null);
-        contentType.setParameter("boundary", boundary);
-    }
-
-    /**
-     * Constructs a MimeMultipart object and its bodyparts from the
-     * given DataSource. <p>
-     *
-     * This constructor handles as a special case the situation where the
-     * given DataSource is a MultipartDataSource object.
-     *
-     * Otherwise, the DataSource is assumed to provide a MIME multipart
-     * byte stream.  The <code>parsed</code> flag is set to false.  When
-     * the data for the body parts are needed, the parser extracts the
-     * "boundary" parameter from the content type of this DataSource,
-     * skips the 'preamble' and reads bytes till the terminating
-     * boundary and creates MimeBodyParts for each part of the stream.
-     *
-     * @param   ds      DataSource, can be a MultipartDataSource
-     * @param ct
-     *      This must be the same information as {@link DataSource#getContentType()}.
-     *      All the callers of this method seem to have this object handy, so
-     *      for performance reason this method accepts it. Can be null.
-     */
-    public MimeMultipart(DataSource ds, ContentType ct) throws MessagingException {
-        // 'ds' was not a MultipartDataSource, we have
-        // to parse this ourself.
-        parsed = false;
-        this.ds = ds;
-        if (ct==null)
-            contentType = new ContentType(ds.getContentType());
-        else
-            contentType = ct;
-    }
-
-    /**
-     * Set the subtype. This method should be invoked only on a new
-     * MimeMultipart object created by the client. The default subtype
-     * of such a multipart object is "mixed". <p>
-     *
-     * @param   subtype         Subtype
-     */
-    public  void setSubType(String subtype) {
-        contentType.setSubType(subtype);
-    }
-
-    /**
-     * Return the number of enclosed MimeBodyPart objects.
-     *
-     * @return          number of parts
-     */
-    public  int getCount() throws MessagingException {
-        parse();
-        if (parts == null)
-            return 0;
-
-        return parts.size();
-    }
-
-    /**
-     * Get the specified MimeBodyPart.  BodyParts are numbered starting at 0.
-     *
-     * @param index     the index of the desired MimeBodyPart
-     * @return          the MimeBodyPart
-     * @exception       MessagingException if no such MimeBodyPart exists
-     */
-    public  MimeBodyPart getBodyPart(int index)
-                        throws MessagingException {
-        parse();
-        if (parts == null)
-            throw new IndexOutOfBoundsException("No such BodyPart");
-
-        return (MimeBodyPart)parts.get(index);
-    }
-
-    /**
-     * Get the MimeBodyPart referred to by the given ContentID (CID).
-     * Returns null if the part is not found.
-     *
-     * @param  CID      the ContentID of the desired part
-     * @return          the MimeBodyPart
-     */
-    public  MimeBodyPart getBodyPart(String CID)
-                        throws MessagingException {
-        parse();
-
-        int count = getCount();
-        for (int i = 0; i < count; i++) {
-           MimeBodyPart part = getBodyPart(i);
-           String s = part.getContentID();
-           // Old versions of AXIS2 put angle brackets around the content
-           // id but not the start param
-           String sNoAngle = (s!= null) ? s.replaceFirst("^<", "").replaceFirst(">$", "")
-                   :null;
-           if (s != null && (s.equals(CID) || CID.equals(sNoAngle)))
-                return part;
-        }
-        return null;
-    }
-
-    /**
-     * Update headers. The default implementation here just
-     * calls the <code>updateHeaders</code> method on each of its
-     * children BodyParts. <p>
-     *
-     * Note that the boundary parameter is already set up when
-     * a new and empty MimeMultipart object is created. <p>
-     *
-     * This method is called when the <code>saveChanges</code>
-     * method is invoked on the Message object containing this
-     * MimeMultipart. This is typically done as part of the Message
-     * send process, however note that a client is free to call
-     * it any number of times. So if the header updating process is
-     * expensive for a specific MimeMultipart subclass, then it
-     * might itself want to track whether its internal state actually
-     * did change, and do the header updating only if necessary.
-     */
-    protected void updateHeaders() throws MessagingException {
-        for (int i = 0; i < parts.size(); i++)
-            ((MimeBodyPart)parts.get(i)).updateHeaders();
-    }
-
-    /**
-     * Iterates through all the parts and outputs each Mime part
-     * separated by a boundary.
-     */
-    public void writeTo(OutputStream os)
-            throws IOException, MessagingException {
-        parse();
-
-        String boundary = "--" + contentType.getParameter("boundary");
-
-        for (int i = 0; i < parts.size(); i++) {
-            OutputUtil.writeln(boundary, os); // put out boundary
-            getBodyPart(i).writeTo(os);
-            OutputUtil.writeln(os); // put out empty line
-        }
-
-        // put out last boundary
-        OutputUtil.writeAsAscii(boundary, os);
-        OutputUtil.writeAsAscii("--", os);
-        os.flush();
-    }
-
-    /**
-     * Parse the InputStream from our DataSource, constructing the
-     * appropriate MimeBodyParts.  The <code>parsed</code> flag is
-     * set to true, and if true on entry nothing is done.  This
-     * method is called by all other methods that need data for
-     * the body parts, to make sure the data has been parsed.
-     *
-     * @since   JavaMail 1.2
-     */
-    protected  void parse() throws MessagingException {
-        if (parsed)
-            return;
-
-        InputStream in;
-        SharedInputStream sin = null;
-        long start = 0, end = 0;
-        boolean foundClosingBoundary = false;
-
-        try {
-            in = ds.getInputStream();
-            if (!(in instanceof ByteArrayInputStream) &&
-                !(in instanceof BufferedInputStream) &&
-                !(in instanceof SharedInputStream))
-                in = new BufferedInputStream(in);
-        } catch (Exception ex) {
-            throw new MessagingException("No inputstream from datasource");
-        }
-        if (in instanceof SharedInputStream)
-            sin = (SharedInputStream)in;
-
-        String boundary = "--" + contentType.getParameter("boundary");
-        byte[] bndbytes = ASCIIUtility.getBytes(boundary);
-        int bl = bndbytes.length;
-
-        ByteOutputStream buf = null;
-        try {
-            // Skip the preamble
-            LineInputStream lin = new LineInputStream(in);
-            String line;
-            while ((line = lin.readLine()) != null) {
-                /*
-                 * Strip trailing whitespace.  Can't use trim method
-                 * because it's too aggressive.  Some bogus MIME
-                 * messages will include control characters in the
-                 * boundary string.
-                 */
-                int i;
-                for (i = line.length() - 1; i >= 0; i--) {
-                    char c = line.charAt(i);
-                    if (!(c == ' ' || c == '\t'))
-                        break;
-                }
-                line = line.substring(0, i + 1);
-                if (line.equals(boundary))
-                    break;
-            }
-            if (line == null)
-                throw new MessagingException("Missing start boundary");
-
-            /*
-             * Read and process body parts until we see the
-             * terminating boundary line (or EOF).
-             */
-            boolean done = false;
-        getparts:
-            while (!done) {
-                InternetHeaders headers = null;
-                if (sin != null) {
-                    start = sin.getPosition();
-                    // skip headers
-                    while ((line = lin.readLine()) != null && line.length() > 0)
-                        ;
-                    if (line == null) {
-                        if (!ignoreMissingEndBoundary) {
-                           throw new MessagingException("Missing End Boundary for Mime Package : EOF while skipping headers");
-                        }
-                        // assume there's just a missing end boundary
-                        break getparts;
-                    }
-                } else {
-                    // collect the headers for this body part
-                    headers = createInternetHeaders(in);
-                }
-
-                if (!in.markSupported())
-                    throw new MessagingException("Stream doesn't support mark");
-
-                buf = null;
-                // if we don't have a shared input stream, we copy the data
-                if (sin == null)
-                    buf = new ByteOutputStream();
-                int b;
-                boolean bol = true;    // beginning of line flag
-                // the two possible end of line characters
-                int eol1 = -1, eol2 = -1;
-
-                /*
-                 * Read and save the content bytes in buf.
-                 */
-                for (;;) {
-                    if (bol) {
-                        /*
-                         * At the beginning of a line, check whether the
-                         * next line is a boundary.
-                         */
-                        int i;
-                        in.mark(bl + 4 + 1000); // bnd + "--\r\n" + lots of LWSP
-                        // read bytes, matching against the boundary
-                        for (i = 0; i < bl; i++)
-                            if (in.read() != bndbytes[i])
-                                break;
-                        if (i == bl) {
-                            // matched the boundary, check for last boundary
-                            int b2 = in.read();
-                            if (b2 == '-') {
-                                if (in.read() == '-') {
-                                    done = true;
-                                    foundClosingBoundary = true;
-                                    break;      // ignore trailing text
-                                }
-                            }
-                            // skip linear whitespace
-                            while (b2 == ' ' || b2 == '\t')
-                                b2 = in.read();
-                            // check for end of line
-                            if (b2 == '\n')
-                                break;  // got it!  break out of the loop
-                            if (b2 == '\r') {
-                                in.mark(1);
-                                if (in.read() != '\n')
-                                    in.reset();
-                                break;  // got it!  break out of the loop
-                            }
-                        }
-                        // failed to match, reset and proceed normally
-                        in.reset();
-
-                        // if this is not the first line, write out the
-                        // end of line characters from the previous line
-                        if (buf != null && eol1 != -1) {
-                            buf.write(eol1);
-                            if (eol2 != -1)
-                                buf.write(eol2);
-                            eol1 = eol2 = -1;
-                        }
-                    }
-
-                    // read the next byte
-                    if ((b = in.read()) < 0) {
-                        done = true;
-                        break;
-                    }
-
-                    /*
-                     * If we're at the end of the line, save the eol characters
-                     * to be written out before the beginning of the next line.
-                     */
-                    if (b == '\r' || b == '\n') {
-                        bol = true;
-                        if (sin != null)
-                            end = sin.getPosition() - 1;
-                        eol1 = b;
-                        if (b == '\r') {
-                            in.mark(1);
-                            if ((b = in.read()) == '\n')
-                                eol2 = b;
-                            else
-                                in.reset();
-                        }
-                    } else {
-                        bol = false;
-                        if (buf != null)
-                            buf.write(b);
-                    }
-                }
-
-                /*
-                 * Create a MimeBody element to represent this body part.
-                 */
-                MimeBodyPart part;
-                if (sin != null)
-                    part = createMimeBodyPart(sin.newStream(start, end));
-                else
-                    part = createMimeBodyPart(headers, buf.getBytes(), buf.getCount());
-                addBodyPart(part);
-            }
-        } catch (IOException ioex) {
-            throw new MessagingException("IO Error", ioex);
-        } finally {
-            if (buf != null)
-                buf.close();
-        }
-
-        if (!ignoreMissingEndBoundary && !foundClosingBoundary && sin== null) {
-            throw new MessagingException("Missing End Boundary for Mime Package : EOF while skipping headers");
-        }
-        parsed = true;
-    }
-
-    /**
-     * Create and return an InternetHeaders object that loads the
-     * headers from the given InputStream.  Subclasses can override
-     * this method to return a subclass of InternetHeaders, if
-     * necessary.  This implementation simply constructs and returns
-     * an InternetHeaders object.
-     *
-     * @param   is      the InputStream to read the headers from
-     * @exception       MessagingException
-     * @since           JavaMail 1.2
-     */
-    protected InternetHeaders createInternetHeaders(InputStream is)
-                                throws MessagingException {
-        return new InternetHeaders(is);
-    }
-
-    /**
-     * Create and return a MimeBodyPart object to represent a
-     * body part parsed from the InputStream.  Subclasses can override
-     * this method to return a subclass of MimeBodyPart, if
-     * necessary.  This implementation simply constructs and returns
-     * a MimeBodyPart object.
-     *
-     * @param   headers         the headers for the body part
-     * @param   content         the content of the body part
-     * @since                   JavaMail 1.2
-     */
-    protected MimeBodyPart createMimeBodyPart(InternetHeaders headers, byte[] content, int len) {
-            return new MimeBodyPart(headers, content,len);
-    }
-
-    /**
-     * Create and return a MimeBodyPart object to represent a
-     * body part parsed from the InputStream.  Subclasses can override
-     * this method to return a subclass of MimeBodyPart, if
-     * necessary.  This implementation simply constructs and returns
-     * a MimeBodyPart object.
-     *
-     * @param   is              InputStream containing the body part
-     * @exception               MessagingException
-     * @since                   JavaMail 1.2
-     */
-    protected MimeBodyPart createMimeBodyPart(InputStream is) throws MessagingException {
-            return new MimeBodyPart(is);
-    }
-
-    /**
-     * Setup this MimeMultipart object from the given MultipartDataSource. <p>
-     *
-     * The method adds the MultipartDataSource's MimeBodyPart
-     * objects into this MimeMultipart. This MimeMultipart's contentType is
-     * set to that of the MultipartDataSource. <p>
-     *
-     * This method is typically used in those cases where one
-     * has a multipart data source that has already been pre-parsed into
-     * the individual body parts (for example, an IMAP datasource), but
-     * needs to create an appropriate MimeMultipart subclass that represents
-     * a specific multipart subtype.
-     *
-     * @param   mp      MimeMultipart datasource
-     */
-
-    protected void setMultipartDataSource(MultipartDataSource mp)
-                        throws MessagingException {
-        contentType = new ContentType(mp.getContentType());
-
-        int count = mp.getCount();
-        for (int i = 0; i < count; i++)
-            addBodyPart(mp.getBodyPart(i));
-    }
-
-    /**
-     * Return the content-type of this MimeMultipart. <p>
-     *
-     * This implementation just returns the value of the
-     * <code>contentType</code> field.
-     *
-     * @return  content-type
-     * @see     #contentType
-     */
-    public ContentType getContentType() {
-            return contentType;
-    }
-
-    /**
-     * Remove the specified part from the multipart message.
-     * Shifts all the parts after the removed part down one.
-     *
-     * @param   part    The part to remove
-     * @return          true if part removed, false otherwise
-     * @exception       MessagingException if no such MimeBodyPart exists
-     */
-    public boolean removeBodyPart(MimeBodyPart part) throws MessagingException {
-        if (parts == null)
-            throw new MessagingException("No such body part");
-
-        boolean ret = parts.remove(part);
-        part.setParent(null);
-        return ret;
-    }
-
-    /**
-     * Remove the part at specified location (starting from 0).
-     * Shifts all the parts after the removed part down one.
-     *
-     * @param   index   Index of the part to remove
-     * @exception       IndexOutOfBoundsException if the given index
-     *                  is out of range.
-     */
-    public void removeBodyPart(int index) {
-        if (parts == null)
-            throw new IndexOutOfBoundsException("No such BodyPart");
-
-        MimeBodyPart part = (MimeBodyPart)parts.get(index);
-        parts.remove(index);
-        part.setParent(null);
-    }
-
-    /**
-     * Adds a MimeBodyPart to the multipart.  The MimeBodyPart is appended to
-     * the list of existing Parts.
-     *
-     * @param  part  The MimeBodyPart to be appended
-     */
-    public synchronized void addBodyPart(MimeBodyPart part) {
-        if (parts == null)
-            parts = new FinalArrayList();
-
-        parts.add(part);
-        part.setParent(this);
-    }
-
-    /**
-     * Adds a MimeBodyPart at position <code>index</code>.
-     * If <code>index</code> is not the last one in the list,
-     * the subsequent parts are shifted up. If <code>index</code>
-     * is larger than the number of parts present, the
-     * MimeBodyPart is appended to the end.
-     *
-     * @param  part  The MimeBodyPart to be inserted
-     * @param  index Location where to insert the part
-     */
-    public synchronized void addBodyPart(MimeBodyPart part, int index) {
-        if (parts == null)
-            parts = new FinalArrayList();
-
-        parts.add(index,part);
-        part.setParent(this);
-    }
-
-    /**
-     * Return the <code>MimeBodyPart</code> that contains this <code>MimeMultipart</code>
-     * object, or <code>null</code> if not known.
-     * @since   JavaMail 1.1
-     */
-    MimeBodyPart getParent() {
-        return parent;
-    }
-
-    /**
-     * Set the parent of this <code>MimeMultipart</code> to be the specified
-     * <code>MimeBodyPart</code>.  Normally called by the <code>Message</code>
-     * or <code>MimeBodyPart</code> <code>setContent(MimeMultipart)</code> method.
-     * <code>parent</code> may be <code>null</code> if the
-     * <code>MimeMultipart</code> is being removed from its containing
-     * <code>MimeBodyPart</code>.
-     * @since   JavaMail 1.1
-     */
-    void setParent(MimeBodyPart parent) {
-        this.parent = parent;
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimePartDataSource.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)MimePartDataSource.java        1.9 02/03/27
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
-
-import java.io.*;
-import java.net.UnknownServiceException;
-
-import javax.activation.DataSource;
-
-import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException;
-
-/**
- * A utility class that implements a DataSource out of
- * a MimeBodyPart. This class is primarily meant for service providers.
- *
- * @author      John Mani
- */
-
-public final class MimePartDataSource implements DataSource {
-    private final MimeBodyPart part;
-
-    /**
-     * Constructor, that constructs a DataSource from a MimeBodyPart.
-     */
-    public MimePartDataSource(MimeBodyPart part) {
-        this.part = part;
-    }
-
-    /**
-     * Returns an input stream from this  MimeBodyPart. <p>
-     *
-     * This method applies the appropriate transfer-decoding, based
-     * on the Content-Transfer-Encoding attribute of this MimeBodyPart.
-     * Thus the returned input stream is a decoded stream of bytes.<p>
-     *
-     * This implementation obtains the raw content from the MimeBodyPart
-     * using the <code>getContentStream()</code> method and decodes
-     * it using the <code>MimeUtility.decode()</code> method.
-     *
-     * @return  decoded input stream
-     */
-    public InputStream getInputStream() throws IOException {
-
-        try {
-        InputStream is = part.getContentStream();
-
-            String encoding = part.getEncoding();
-            if (encoding != null)
-                return MimeUtility.decode(is, encoding);
-            else
-                return is;
-        } catch (MessagingException mex) {
-            throw new IOException(mex.getMessage());
-        }
-    }
-
-    /**
-     * DataSource method to return an output stream. <p>
-     *
-     * This implementation throws the UnknownServiceException.
-     */
-    public OutputStream getOutputStream() throws IOException {
-        throw new UnknownServiceException();
-    }
-
-    /**
-     * Returns the content-type of this DataSource. <p>
-     *
-     * This implementation just invokes the <code>getContentType</code>
-     * method on the MimeBodyPart.
-     */
-    public String getContentType() {
-        return part.getContentType();
-    }
-
-    /**
-     * DataSource method to return a name.  <p>
-     *
-     * This implementation just returns an empty string.
-     */
-    public String getName() {
-        try {
-                return part.getFileName();
-        } catch (MessagingException mex) {
-        return "";
-        }
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimePullMultipart.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
-
-import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException;
-import com.sun.xml.internal.messaging.saaj.soap.AttachmentPartImpl;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.List;
-import javax.activation.DataSource;
-import javax.xml.soap.AttachmentPart;
-import com.sun.xml.internal.org.jvnet.mimepull.MIMEConfig;
-import com.sun.xml.internal.org.jvnet.mimepull.MIMEMessage;
-import com.sun.xml.internal.org.jvnet.mimepull.MIMEPart;
-
-/**
- *
- * @author Kumar
- */
-public class MimePullMultipart  extends MimeMultipart {
-
-    private InputStream in = null;
-    private String boundary = null;
-    private MIMEMessage mm = null;
-    private DataSource dataSource = null;
-    private ContentType contType = null;
-    private String startParam = null;
-    private MIMEPart soapPart = null;
-
-    public MimePullMultipart(DataSource ds, ContentType ct)
-        throws MessagingException {
-        parsed = false;
-        if (ct==null)
-            contType = new ContentType(ds.getContentType());
-        else
-            contType = ct;
-
-        dataSource = ds;
-        boundary = contType.getParameter("boundary");
-    }
-
-    public  MIMEPart readAndReturnSOAPPart() throws  MessagingException {
-         if (soapPart != null) {
-            throw new MessagingException("Inputstream from datasource was already consumed");
-         }
-         readSOAPPart();
-         return soapPart;
-
-    }
-
-    protected  void readSOAPPart() throws  MessagingException {
-        try {
-            if (soapPart != null) {
-                return;
-            }
-            in = dataSource.getInputStream();
-            MIMEConfig config = new MIMEConfig(); //use defaults
-            mm = new MIMEMessage(in, boundary, config);
-            String st = contType.getParameter("start");
-            if(startParam == null) {
-                soapPart = mm.getPart(0);
-            } else {
-                  // Strip <...> from root part's Content-I
-                if (st != null && st.length() > 2 && st.charAt(0) == '<' && st.charAt(st.length()-1) == '>') {
-                    st = st.substring(1, st.length()-1);
-                }
-                startParam = st;
-                soapPart = mm.getPart(startParam);
-
-            }
-        } catch (IOException ex) {
-            throw new MessagingException("No inputstream from datasource", ex);
-        }
-    }
-
-    public void parseAll() throws MessagingException {
-        if (parsed) {
-            return;
-        }
-        if (soapPart == null) {
-            readSOAPPart();
-        }
-
-        List<MIMEPart> prts = mm.getAttachments();
-        for(MIMEPart part : prts) {
-            if (part != soapPart) {
-                new AttachmentPartImpl(part);
-                this.addBodyPart(new MimeBodyPart(part));
-            }
-       }
-       parsed = true;
-    }
-
-    protected  void parse() throws MessagingException {
-        parseAll();
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimeUtility.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1507 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)MimeUtility.java       1.45 03/03/10
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
-
-import java.io.*;
-import java.util.*;
-
-import javax.activation.DataHandler;
-import javax.activation.DataSource;
-
-import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException;
-import com.sun.xml.internal.messaging.saaj.packaging.mime.util.*;
-import com.sun.xml.internal.messaging.saaj.util.SAAJUtil;
-
-/**
- * This is a utility class that provides various MIME related
- * functionality. <p>
- *
- * There are a set of methods to encode and decode MIME headers as
- * per RFC 2047. A brief description on handling such headers is
- * given below: <p>
- *
- * RFC 822 mail headers <strong>must</strong> contain only US-ASCII
- * characters. Headers that contain non US-ASCII characters must be
- * encoded so that they contain only US-ASCII characters. Basically,
- * this process involves using either BASE64 or QP to encode certain
- * characters. RFC 2047 describes this in detail. <p>
- *
- * In Java, Strings contain (16 bit) Unicode characters. ASCII is a
- * subset of Unicode (and occupies the range 0 - 127). A String
- * that contains only ASCII characters is already mail-safe. If the
- * String contains non US-ASCII characters, it must be encoded. An
- * additional complexity in this step is that since Unicode is not
- * yet a widely used charset, one might want to first charset-encode
- * the String into another charset and then do the transfer-encoding.
- * <p>
- * Note that to get the actual bytes of a mail-safe String (say,
- * for sending over SMTP), one must do
- * <p><blockquote><pre>
- *
- *      byte[] bytes = string.getBytes("iso-8859-1");
- *
- * </pre></blockquote><p>
- *
- * The <code>setHeader</code> and <code>addHeader</code> methods
- * on MimeMessage and MimeBodyPart assume that the given header values
- * are Unicode strings that contain only US-ASCII characters. Hence
- * the callers of those methods must insure that the values they pass
- * do not contain non US-ASCII characters. The methods in this class
- * help do this. <p>
- *
- * The <code>getHeader</code> family of methods on MimeMessage and
- * MimeBodyPart return the raw header value. These might be encoded
- * as per RFC 2047, and if so, must be decoded into Unicode Strings.
- * The methods in this class help to do this. <p>
- *
- * Several System properties control strict conformance to the MIME
- * spec.  Note that these are not session properties but must be set
- * globally as System properties. <p>
- *
- * The <code>mail.mime.decodetext.strict</code> property controls
- * decoding of MIME encoded words.  The MIME spec requires that encoded
- * words start at the beginning of a whitespace separated word.  Some
- * mailers incorrectly include encoded words in the middle of a word.
- * If the <code>mail.mime.decodetext.strict</code> System property is
- * set to <code>"false"</code>, an attempt will be made to decode these
- * illegal encoded words. The default is true. <p>
- *
- * The <code>mail.mime.encodeeol.strict</code> property controls the
- * choice of Content-Transfer-Encoding for MIME parts that are not of
- * type "text".  Often such parts will contain textual data for which
- * an encoding that allows normal end of line conventions is appropriate.
- * In rare cases, such a part will appear to contain entirely textual
- * data, but will require an encoding that preserves CR and LF characters
- * without change.  If the <code>mail.mime.decodetext.strict</code>
- * System property is set to <code>"true"</code>, such an encoding will
- * be used when necessary.  The default is false. <p>
- *
- * In addition, the <code>mail.mime.charset</code> System property can
- * be used to specify the default MIME charset to use for encoded words
- * and text parts that don't otherwise specify a charset.  Normally, the
- * default MIME charset is derived from the default Java charset, as
- * specified in the <code>file.encoding</code> System property.  Most
- * applications will have no need to explicitly set the default MIME
- * charset.  In cases where the default MIME charset to be used for
- * mail messages is different than the charset used for files stored on
- * the system, this property should be set.
- *
- * @version 1.45, 03/03/10
- * @author  John Mani
- * @author  Bill Shannon
- */
-
-public class MimeUtility {
-
-    // This class cannot be instantiated
-    private MimeUtility() { }
-
-    public static final int ALL = -1;
-
-    private static final int BUFFER_SIZE = 1024;
-    private static boolean decodeStrict = true;
-    private static boolean encodeEolStrict = false;
-    private static boolean foldEncodedWords = false;
-    private static boolean foldText = true;
-
-    static {
-        try {
-            String s = SAAJUtil.getSystemProperty("mail.mime.decodetext.strict");
-            // default to true
-            decodeStrict = s == null || !s.equalsIgnoreCase("false");
-            s = SAAJUtil.getSystemProperty("mail.mime.encodeeol.strict");
-            // default to false
-            encodeEolStrict = s != null && s.equalsIgnoreCase("true");
-            s = SAAJUtil.getSystemProperty("mail.mime.foldencodedwords");
-            // default to false
-            foldEncodedWords = s != null && s.equalsIgnoreCase("true");
-            s = SAAJUtil.getSystemProperty("mail.mime.foldtext");
-            // default to true
-            foldText = s == null || !s.equalsIgnoreCase("false");
-        } catch (SecurityException sex) {
-            // ignore it
-        }
-    }
-
-
-    /**
-     * Get the content-transfer-encoding that should be applied
-     * to the input stream of this datasource, to make it mailsafe. <p>
-     *
-     * The algorithm used here is: <br>
-     * <ul>
-     * <li>
-     * If the primary type of this datasource is "text" and if all
-     * the bytes in its input stream are US-ASCII, then the encoding
-     * is "7bit". If more than half of the bytes are non-US-ASCII, then
-     * the encoding is "base64". If less than half of the bytes are
-     * non-US-ASCII, then the encoding is "quoted-printable".
-     * <li>
-     * If the primary type of this datasource is not "text", then if
-     * all the bytes of its input stream are US-ASCII, the encoding
-     * is "7bit". If there is even one non-US-ASCII character, the
-     * encoding is "base64".
-     * </ul>
-     *
-     * @param   ds      DataSource
-     * @return          the encoding. This is either "7bit",
-     *                  "quoted-printable" or "base64"
-     */
-    public static String getEncoding(DataSource ds) {
-        ContentType cType = null;
-        InputStream is = null;
-        String encoding = null;
-
-        try {
-            cType = new ContentType(ds.getContentType());
-            is = ds.getInputStream();
-        } catch (Exception ex) {
-            return "base64"; // what else ?!
-        }
-
-        boolean isText = cType.match("text/*");
-        // if not text, stop processing when we see non-ASCII
-        int i = checkAscii(is, ALL, !isText);
-        switch (i) {
-        case ALL_ASCII:
-            encoding = "7bit"; // all ascii
-            break;
-        case MOSTLY_ASCII:
-            encoding = "quoted-printable"; // mostly ascii
-            break;
-        default:
-            encoding = "base64"; // mostly binary
-            break;
-        }
-
-        // Close the input stream
-        try {
-            is.close();
-        } catch (IOException ioex) { }
-
-        return encoding;
-    }
-
-    /**
-     * Same as <code>getEncoding(DataSource)</code> except that instead
-     * of reading the data from an <code>InputStream</code> it uses the
-     * <code>writeTo</code> method to examine the data.  This is more
-     * efficient in the common case of a <code>DataHandler</code>
-     * created with an object and a MIME type (for example, a
-     * "text/plain" String) because all the I/O is done in this
-     * thread.  In the case requiring an <code>InputStream</code> the
-     * <code>DataHandler</code> uses a thread, a pair of pipe streams,
-     * and the <code>writeTo</code> method to produce the data. <p>
-     *
-     * @since   JavaMail 1.2
-     */
-    public static String getEncoding(DataHandler dh) {
-        ContentType cType = null;
-        String encoding = null;
-
-        /*
-         * Try to pick the most efficient means of determining the
-         * encoding.  If this DataHandler was created using a DataSource,
-         * the getEncoding(DataSource) method is typically faster.  If
-         * the DataHandler was created with an object, this method is
-         * much faster.  To distinguish the two cases, we use a heuristic.
-         * A DataHandler created with an object will always have a null name.
-         * A DataHandler created with a DataSource will usually have a
-         * non-null name.
-         *
-         * XXX - This is actually quite a disgusting hack, but it makes
-         *       a common case run over twice as fast.
-         */
-        if (dh.getName() != null)
-            return getEncoding(dh.getDataSource());
-
-        try {
-            cType = new ContentType(dh.getContentType());
-        } catch (Exception ex) {
-            return "base64"; // what else ?!
-        }
-
-        if (cType.match("text/*")) {
-            // Check all of the available bytes
-            AsciiOutputStream aos = new AsciiOutputStream(false, false);
-            try {
-                dh.writeTo(aos);
-            } catch (IOException ex) { }        // ignore it
-            switch (aos.getAscii()) {
-            case ALL_ASCII:
-                encoding = "7bit"; // all ascii
-                break;
-            case MOSTLY_ASCII:
-                encoding = "quoted-printable"; // mostly ascii
-                break;
-            default:
-                encoding = "base64"; // mostly binary
-                break;
-            }
-        } else { // not "text"
-            // Check all of available bytes, break out if we find
-            // at least one non-US-ASCII character
-            AsciiOutputStream aos =
-                        new AsciiOutputStream(true, encodeEolStrict);
-            try {
-                dh.writeTo(aos);
-            } catch (IOException ex) { }        // ignore it
-            if (aos.getAscii() == ALL_ASCII) // all ascii
-                encoding = "7bit";
-            else // found atleast one non-ascii character, use b64
-                encoding = "base64";
-        }
-
-        return encoding;
-    }
-
-    /**
-     * Decode the given input stream. The Input stream returned is
-     * the decoded input stream. All the encodings defined in RFC 2045
-     * are supported here. They include "base64", "quoted-printable",
-     * "7bit", "8bit", and "binary". In addition, "uuencode" is also
-     * supported.
-     *
-     * @param   is              input stream
-     * @param   encoding        the encoding of the stream.
-     * @return                  decoded input stream.
-     */
-    public static InputStream decode(InputStream is, String encoding)
-                throws MessagingException {
-        if (encoding.equalsIgnoreCase("base64"))
-            return new BASE64DecoderStream(is);
-        else if (encoding.equalsIgnoreCase("quoted-printable"))
-            return new QPDecoderStream(is);
-        else if (encoding.equalsIgnoreCase("uuencode") ||
-                 encoding.equalsIgnoreCase("x-uuencode") ||
-                 encoding.equalsIgnoreCase("x-uue"))
-            return new UUDecoderStream(is);
-        else if (encoding.equalsIgnoreCase("binary") ||
-                 encoding.equalsIgnoreCase("7bit") ||
-                 encoding.equalsIgnoreCase("8bit"))
-            return is;
-        else
-            throw new MessagingException("Unknown encoding: " + encoding);
-    }
-
-    /**
-     * Wrap an encoder around the given output stream.
-     * All the encodings defined in RFC 2045 are supported here.
-     * They include "base64", "quoted-printable", "7bit", "8bit" and
-     * "binary". In addition, "uuencode" is also supported.
-     *
-     * @param   os              output stream
-     * @param   encoding        the encoding of the stream.
-     * @return                  output stream that applies the
-     *                          specified encoding.
-     */
-    public static OutputStream encode(OutputStream os, String encoding)
-                throws MessagingException {
-        if (encoding == null)
-            return os;
-        else if (encoding.equalsIgnoreCase("base64"))
-            return new BASE64EncoderStream(os);
-        else if (encoding.equalsIgnoreCase("quoted-printable"))
-            return new QPEncoderStream(os);
-        else if (encoding.equalsIgnoreCase("uuencode") ||
-                 encoding.equalsIgnoreCase("x-uuencode") ||
-                 encoding.equalsIgnoreCase("x-uue"))
-            return new UUEncoderStream(os);
-        else if (encoding.equalsIgnoreCase("binary") ||
-                 encoding.equalsIgnoreCase("7bit") ||
-                 encoding.equalsIgnoreCase("8bit"))
-            return os;
-        else
-            throw new MessagingException("Unknown encoding: " +encoding);
-    }
-
-    /**
-     * Wrap an encoder around the given output stream.
-     * All the encodings defined in RFC 2045 are supported here.
-     * They include "base64", "quoted-printable", "7bit", "8bit" and
-     * "binary". In addition, "uuencode" is also supported.
-     * The <code>filename</code> parameter is used with the "uuencode"
-     * encoding and is included in the encoded output.
-     *
-     * @param   os              output stream
-     * @param   encoding        the encoding of the stream.
-     * @param   filename        name for the file being encoded (only used
-     *                          with uuencode)
-     * @return                  output stream that applies the
-     *                          specified encoding.
-     * @since                   JavaMail 1.2
-     */
-    public static OutputStream encode(OutputStream os, String encoding,
-                                      String filename)
-                throws MessagingException {
-        if (encoding == null)
-            return os;
-        else if (encoding.equalsIgnoreCase("base64"))
-            return new BASE64EncoderStream(os);
-        else if (encoding.equalsIgnoreCase("quoted-printable"))
-            return new QPEncoderStream(os);
-        else if (encoding.equalsIgnoreCase("uuencode") ||
-                 encoding.equalsIgnoreCase("x-uuencode") ||
-                 encoding.equalsIgnoreCase("x-uue"))
-            return new UUEncoderStream(os, filename);
-        else if (encoding.equalsIgnoreCase("binary") ||
-                 encoding.equalsIgnoreCase("7bit") ||
-                 encoding.equalsIgnoreCase("8bit"))
-            return os;
-        else
-            throw new MessagingException("Unknown encoding: " +encoding);
-    }
-
-    /**
-     * Encode a RFC 822 "text" token into mail-safe form as per
-     * RFC 2047. <p>
-     *
-     * The given Unicode string is examined for non US-ASCII
-     * characters. If the string contains only US-ASCII characters,
-     * it is returned as-is.  If the string contains non US-ASCII
-     * characters, it is first character-encoded using the platform's
-     * default charset, then transfer-encoded using either the B or
-     * Q encoding. The resulting bytes are then returned as a Unicode
-     * string containing only ASCII  characters. <p>
-     *
-     * Note that this method should be used to encode only
-     * "unstructured" RFC 822 headers. <p>
-     *
-     * Example of usage:
-     * <p><blockquote><pre>
-     *
-     *  MimeBodyPart part = ...
-     *  String rawvalue = "FooBar Mailer, Japanese version 1.1"
-     *  try {
-     *    // If we know for sure that rawvalue contains only US-ASCII
-     *    // characters, we can skip the encoding part
-     *    part.setHeader("X-mailer", MimeUtility.encodeText(rawvalue));
-     *  } catch (UnsupportedEncodingException e) {
-     *    // encoding failure
-     *  } catch (MessagingException me) {
-     *   // setHeader() failure
-     *  }
-     *
-     * </pre></blockquote><p>
-     *
-     * @param   text    unicode string
-     * @return  Unicode string containing only US-ASCII characters
-     * @exception UnsupportedEncodingException if the encoding fails
-     */
-    public static String encodeText(String text)
-                        throws UnsupportedEncodingException {
-        return encodeText(text, null, null);
-    }
-
-    /**
-     * Encode a RFC 822 "text" token into mail-safe form as per
-     * RFC 2047. <p>
-     *
-     * The given Unicode string is examined for non US-ASCII
-     * characters. If the string contains only US-ASCII characters,
-     * it is returned as-is.  If the string contains non US-ASCII
-     * characters, it is first character-encoded using the specified
-     * charset, then transfer-encoded using either the B or Q encoding.
-     * The resulting bytes are then returned as a Unicode string
-     * containing only ASCII characters. <p>
-     *
-     * Note that this method should be used to encode only
-     * "unstructured" RFC 822 headers.
-     *
-     * @param   text    the header value
-     * @param   charset the charset. If this parameter is null, the
-     *          platform's default chatset is used.
-     * @param   encoding the encoding to be used. Currently supported
-     *          values are "B" and "Q". If this parameter is null, then
-     *          the "Q" encoding is used if most of characters to be
-     *          encoded are in the ASCII charset, otherwise "B" encoding
-     *          is used.
-     * @return  Unicode string containing only US-ASCII characters
-     */
-    public static String encodeText(String text, String charset,
-                                    String encoding)
-                        throws UnsupportedEncodingException {
-        return encodeWord(text, charset, encoding, false);
-    }
-
-    /**
-     * Decode "unstructured" headers, that is, headers that are defined
-     * as '*text' as per RFC 822. <p>
-     *
-     * The string is decoded using the algorithm specified in
-     * RFC 2047, Section 6.1.1. If the charset-conversion fails
-     * for any sequence, an UnsupportedEncodingException is thrown.
-     * If the String is not an RFC 2047 style encoded header, it is
-     * returned as-is <p>
-     *
-     * Example of usage:
-     * <p><blockquote><pre>
-     *
-     *  MimeBodyPart part = ...
-     *  String rawvalue = null;
-     *  String  value = null;
-     *  try {
-     *    if ((rawvalue = part.getHeader("X-mailer")[0]) != null)
-     *      value = MimeUtility.decodeText(rawvalue);
-     *  } catch (UnsupportedEncodingException e) {
-     *      // Don't care
-     *      value = rawvalue;
-     *  } catch (MessagingException me) { }
-     *
-     *  return value;
-     *
-     * </pre></blockquote><p>
-     *
-     * @param   etext   the possibly encoded value
-     * @exception       UnsupportedEncodingException if the charset
-     *                  conversion failed.
-     */
-    public static String decodeText(String etext)
-                throws UnsupportedEncodingException {
-        /*
-         * We look for sequences separated by "linear-white-space".
-         * (as per RFC 2047, Section 6.1.1)
-         * RFC 822 defines "linear-white-space" as SPACE | HT | CR | NL.
-         */
-        String lwsp = " \t\n\r";
-        StringTokenizer st;
-
-        /*
-         * First, lets do a quick run thru the string and check
-         * whether the sequence "=?"  exists at all. If none exists,
-         * we know there are no encoded-words in here and we can just
-         * return the string as-is, without suffering thru the later
-         * decoding logic.
-         * This handles the most common case of unencoded headers
-         * efficiently.
-         */
-        if (etext.indexOf("=?") == -1)
-            return etext;
-
-        // Encoded words found. Start decoding ...
-
-        st = new StringTokenizer(etext, lwsp, true);
-        StringBuffer sb = new StringBuffer();  // decode buffer
-        StringBuffer wsb = new StringBuffer(); // white space buffer
-        boolean prevWasEncoded = false;
-
-        while (st.hasMoreTokens()) {
-            char c;
-            String s = st.nextToken();
-            // If whitespace, append it to the whitespace buffer
-            if (((c = s.charAt(0)) == ' ') || (c == '\t') ||
-                (c == '\r') || (c == '\n'))
-                wsb.append(c);
-            else {
-                // Check if token is an 'encoded-word' ..
-                String word;
-                try {
-                    word = decodeWord(s);
-                    // Yes, this IS an 'encoded-word'.
-                    if (!prevWasEncoded && wsb.length() > 0) {
-                        // if the previous word was also encoded, we
-                        // should ignore the collected whitespace. Else
-                        // we include the whitespace as well.
-                        sb.append(wsb);
-                    }
-                    prevWasEncoded = true;
-                } catch (ParseException pex) {
-                    // This is NOT an 'encoded-word'.
-                    word = s;
-                    // possibly decode inner encoded words
-                    if (!decodeStrict)
-                        word = decodeInnerWords(word);
-                    // include colleced whitespace ..
-                    if (wsb.length() > 0)
-                        sb.append(wsb);
-                    prevWasEncoded = false;
-                }
-                sb.append(word); // append the actual word
-                wsb.setLength(0); // reset wsb for reuse
-            }
-        }
-        return sb.toString();
-    }
-
-    /**
-     * Encode a RFC 822 "word" token into mail-safe form as per
-     * RFC 2047. <p>
-     *
-     * The given Unicode string is examined for non US-ASCII
-     * characters. If the string contains only US-ASCII characters,
-     * it is returned as-is.  If the string contains non US-ASCII
-     * characters, it is first character-encoded using the platform's
-     * default charset, then transfer-encoded using either the B or
-     * Q encoding. The resulting bytes are then returned as a Unicode
-     * string containing only ASCII  characters. <p>
-     *
-     * This method is meant to be used when creating RFC 822 "phrases".
-     * The InternetAddress class, for example, uses this to encode
-     * it's 'phrase' component.
-     *
-     * @param   text    unicode string
-     * @return  Array of Unicode strings containing only US-ASCII
-     *          characters.
-     * @exception UnsupportedEncodingException if the encoding fails
-     */
-    public static String encodeWord(String word)
-                        throws UnsupportedEncodingException {
-        return encodeWord(word, null, null);
-    }
-
-    /**
-     * Encode a RFC 822 "word" token into mail-safe form as per
-     * RFC 2047. <p>
-     *
-     * The given Unicode string is examined for non US-ASCII
-     * characters. If the string contains only US-ASCII characters,
-     * it is returned as-is.  If the string contains non US-ASCII
-     * characters, it is first character-encoded using the specified
-     * charset, then transfer-encoded using either the B or Q encoding.
-     * The resulting bytes are then returned as a Unicode string
-     * containing only ASCII characters. <p>
-     *
-     * @param   text    unicode string
-     * @param   charset the MIME charset
-     * @param   encoding the encoding to be used. Currently supported
-     *          values are "B" and "Q". If this parameter is null, then
-     *          the "Q" encoding is used if most of characters to be
-     *          encoded are in the ASCII charset, otherwise "B" encoding
-     *          is used.
-     * @return  Unicode string containing only US-ASCII characters
-     * @exception UnsupportedEncodingException if the encoding fails
-     */
-    public static String encodeWord(String word, String charset,
-                                    String encoding)
-                        throws UnsupportedEncodingException {
-        return encodeWord(word, charset, encoding, true);
-    }
-
-    /*
-     * Encode the given string. The parameter 'encodingWord' should
-     * be true if a RFC 822 "word" token is being encoded and false if a
-     * RFC 822 "text" token is being encoded. This is because the
-     * "Q" encoding defined in RFC 2047 has more restrictions when
-     * encoding "word" tokens. (Sigh)
-     */
-    private static String encodeWord(String string, String charset,
-                                     String encoding, boolean encodingWord)
-                        throws UnsupportedEncodingException {
-
-        // If 'string' contains only US-ASCII characters, just
-        // return it.
-        int ascii = checkAscii(string);
-        if (ascii == ALL_ASCII)
-            return string;
-
-        // Else, apply the specified charset conversion.
-        String jcharset;
-        if (charset == null) { // use default charset
-            jcharset = getDefaultJavaCharset(); // the java charset
-            charset = getDefaultMIMECharset(); // the MIME equivalent
-        } else // MIME charset -> java charset
-            jcharset = javaCharset(charset);
-
-        // If no transfer-encoding is specified, figure one out.
-        if (encoding == null) {
-            if (ascii != MOSTLY_NONASCII)
-                encoding = "Q";
-            else
-                encoding = "B";
-        }
-
-        boolean b64;
-        if (encoding.equalsIgnoreCase("B"))
-            b64 = true;
-        else if (encoding.equalsIgnoreCase("Q"))
-            b64 = false;
-        else
-            throw new UnsupportedEncodingException(
-                        "Unknown transfer encoding: " + encoding);
-
-        StringBuffer outb = new StringBuffer(); // the output buffer
-        doEncode(string, b64, jcharset,
-                 // As per RFC 2047, size of an encoded string should not
-                 // exceed 75 bytes.
-                 // 7 = size of "=?", '?', 'B'/'Q', '?', "?="
-                 75 - 7 - charset.length(), // the available space
-                 "=?" + charset + "?" + encoding + "?", // prefix
-                 true, encodingWord, outb);
-
-        return outb.toString();
-    }
-
-    private static void doEncode(String string, boolean b64,
-                String jcharset, int avail, String prefix,
-                boolean first, boolean encodingWord, StringBuffer buf)
-                        throws UnsupportedEncodingException {
-
-        // First find out what the length of the encoded version of
-        // 'string' would be.
-        byte[] bytes = string.getBytes(jcharset);
-        int len;
-        if (b64) // "B" encoding
-            len = BEncoderStream.encodedLength(bytes);
-        else // "Q"
-            len = QEncoderStream.encodedLength(bytes, encodingWord);
-
-        int size;
-        if ((len > avail) && ((size = string.length()) > 1)) {
-            // If the length is greater than 'avail', split 'string'
-            // into two and recurse.
-            doEncode(string.substring(0, size/2), b64, jcharset,
-                     avail, prefix, first, encodingWord, buf);
-            doEncode(string.substring(size/2, size), b64, jcharset,
-                     avail, prefix, false, encodingWord, buf);
-        } else {
-            // length <= than 'avail'. Encode the given string
-            ByteArrayOutputStream os = new ByteArrayOutputStream(BUFFER_SIZE);
-            OutputStream eos; // the encoder
-            if (b64) // "B" encoding
-                eos = new BEncoderStream(os);
-            else // "Q" encoding
-                eos = new QEncoderStream(os, encodingWord);
-
-            try { // do the encoding
-                eos.write(bytes);
-                eos.close();
-            } catch (IOException ioex) { }
-
-            byte[] encodedBytes = os.toByteArray(); // the encoded stuff
-            // Now write out the encoded (all ASCII) bytes into our
-            // StringBuffer
-            if (!first) // not the first line of this sequence
-                if (foldEncodedWords)
-                    buf.append("\r\n "); // start a continuation line
-                else
-                    buf.append(" "); // line will be folded later
-
-            buf.append(prefix);
-            for (int i = 0; i < encodedBytes.length; i++)
-                buf.append((char)encodedBytes[i]);
-            buf.append("?="); // terminate the current sequence
-        }
-    }
-
-    /**
-     * The string is parsed using the rules in RFC 2047 for parsing
-     * an "encoded-word". If the parse fails, a ParseException is
-     * thrown. Otherwise, it is transfer-decoded, and then
-     * charset-converted into Unicode. If the charset-conversion
-     * fails, an UnsupportedEncodingException is thrown.<p>
-     *
-     * @param   eword   the possibly encoded value
-     * @exception       ParseException if the string is not an
-     *                  encoded-word as per RFC 2047.
-     * @exception       UnsupportedEncodingException if the charset
-     *                  conversion failed.
-     */
-    public static String decodeWord(String eword)
-                throws ParseException, UnsupportedEncodingException {
-
-        if (!eword.startsWith("=?")) // not an encoded word
-            throw new ParseException();
-
-        // get charset
-        int start = 2; int pos;
-        if ((pos = eword.indexOf('?', start)) == -1)
-            throw new ParseException();
-        String charset = javaCharset(eword.substring(start, pos));
-
-        // get encoding
-        start = pos+1;
-        if ((pos = eword.indexOf('?', start)) == -1)
-            throw new ParseException();
-        String encoding = eword.substring(start, pos);
-
-        // get encoded-sequence
-        start = pos+1;
-        if ((pos = eword.indexOf("?=", start)) == -1)
-            throw new ParseException();
-        String word = eword.substring(start, pos);
-
-        try {
-            // Extract the bytes from word
-            ByteArrayInputStream bis =
-                new ByteArrayInputStream(ASCIIUtility.getBytes(word));
-
-            // Get the appropriate decoder
-            InputStream is;
-            if (encoding.equalsIgnoreCase("B"))
-                is = new BASE64DecoderStream(bis);
-            else if (encoding.equalsIgnoreCase("Q"))
-                is = new QDecoderStream(bis);
-            else
-                throw new UnsupportedEncodingException(
-                                "unknown encoding: " + encoding);
-
-            // For b64 & q, size of decoded word <= size of word. So
-            // the decoded bytes must fit into the 'bytes' array. This
-            // is certainly more efficient than writing bytes into a
-            // ByteArrayOutputStream and then pulling out the byte[]
-            // from it.
-            int count = bis.available();
-            byte[] bytes = new byte[count];
-            // count is set to the actual number of decoded bytes
-            count = is.read(bytes, 0, count);
-
-            // Finally, convert the decoded bytes into a String using
-            // the specified charset
-            String s = new String(bytes, 0, count, charset);
-            if (pos + 2 < eword.length()) {
-                // there's still more text in the string
-                String rest = eword.substring(pos + 2);
-                if (!decodeStrict)
-                    rest = decodeInnerWords(rest);
-                s += rest;
-            }
-            return s;
-        } catch (UnsupportedEncodingException uex) {
-            // explicitly catch and rethrow this exception, otherwise
-            // the below IOException catch will swallow this up!
-            throw uex;
-        } catch (IOException ioex) {
-            // Shouldn't happen.
-            throw new ParseException();
-        } catch (IllegalArgumentException iex) {
-            /* An unknown charset of the form ISO-XXX-XXX, will cause
-             * the JDK to throw an IllegalArgumentException ... Since the
-             * JDK will attempt to create a classname using this string,
-             * but valid classnames must not contain the character '-',
-             * and this results in an IllegalArgumentException, rather than
-             * the expected UnsupportedEncodingException. Yikes
-             */
-            throw new UnsupportedEncodingException();
-        }
-    }
-
-    /**
-     * Look for encoded words within a word.  The MIME spec doesn't
-     * allow this, but many broken mailers, especially Japanese mailers,
-     * produce such incorrect encodings.
-     */
-    private static String decodeInnerWords(String word)
-                                throws UnsupportedEncodingException {
-        int start = 0, i;
-        StringBuffer buf = new StringBuffer();
-        while ((i = word.indexOf("=?", start)) >= 0) {
-            buf.append(word.substring(start, i));
-            int end = word.indexOf("?=", i);
-            if (end < 0)
-                break;
-            String s = word.substring(i, end + 2);
-            try {
-                s = decodeWord(s);
-            } catch (ParseException pex) {
-                // ignore it, just use the original string
-            }
-            buf.append(s);
-            start = end + 2;
-        }
-        if (start == 0)
-            return word;
-        if (start < word.length())
-            buf.append(word.substring(start));
-        return buf.toString();
-    }
-
-    /**
-     * A utility method to quote a word, if the word contains any
-     * characters from the specified 'specials' list.<p>
-     *
-     * The <code>HeaderTokenizer</code> class defines two special
-     * sets of delimiters - MIME and RFC 822. <p>
-     *
-     * This method is typically used during the generation of
-     * RFC 822 and MIME header fields.
-     *
-     * @param   word    word to be quoted
-     * @param   specials the set of special characters
-     * @return          the possibly quoted word
-     * @see     javax.mail.internet.HeaderTokenizer#MIME
-     * @see     javax.mail.internet.HeaderTokenizer#RFC822
-     */
-    public static String quote(String word, String specials) {
-        int len = word.length();
-
-        /*
-         * Look for any "bad" characters, Escape and
-         *  quote the entire string if necessary.
-         */
-        boolean needQuoting = false;
-        for (int i = 0; i < len; i++) {
-            char c = word.charAt(i);
-            if (c == '"' || c == '\\' || c == '\r' || c == '\n') {
-                // need to escape them and then quote the whole string
-                StringBuffer sb = new StringBuffer(len + 3);
-                sb.append('"');
-                sb.append(word.substring(0, i));
-                int lastc = 0;
-                for (int j = i; j < len; j++) {
-                    char cc = word.charAt(j);
-                    if ((cc == '"') || (cc == '\\') ||
-                        (cc == '\r') || (cc == '\n'))
-                        if (cc == '\n' && lastc == '\r')
-                            ;   // do nothing, CR was already escaped
-                        else
-                            sb.append('\\');    // Escape the character
-                    sb.append(cc);
-                    lastc = cc;
-                }
-                sb.append('"');
-                return sb.toString();
-            } else if (c < 040 || c >= 0177 || specials.indexOf(c) >= 0)
-                // These characters cause the string to be quoted
-                needQuoting = true;
-        }
-
-        if (needQuoting) {
-            StringBuffer sb = new StringBuffer(len + 2);
-            sb.append('"').append(word).append('"');
-            return sb.toString();
-        } else
-            return word;
-    }
-
-    /**
-     * Fold a string at linear whitespace so that each line is no longer
-     * than 76 characters, if possible.  If there are more than 76
-     * non-whitespace characters consecutively, the string is folded at
-     * the first whitespace after that sequence.  The parameter
-     * <code>used</code> indicates how many characters have been used in
-     * the current line; it is usually the length of the header name. <p>
-     *
-     * Note that line breaks in the string aren't escaped; they probably
-     * should be.
-     *
-     * @param   used    characters used in line so far
-     * @param   s       the string to fold
-     * @return          the folded string
-     */
-    /*public*/ static String fold(int used, String s) {
-        if (!foldText)
-            return s;
-
-        int end;
-        char c;
-        // Strip trailing spaces
-        for (end = s.length() - 1; end >= 0; end--) {
-            c = s.charAt(end);
-            if (c != ' ' && c != '\t')
-                break;
-        }
-        if (end != s.length() - 1)
-            s = s.substring(0, end + 1);
-
-        // if the string fits now, just return it
-        if (used + s.length() <= 76)
-            return s;
-
-        // have to actually fold the string
-        StringBuffer sb = new StringBuffer(s.length() + 4);
-        char lastc = 0;
-        while (used + s.length() > 76) {
-            int lastspace = -1;
-            for (int i = 0; i < s.length(); i++) {
-                if (lastspace != -1 && used + i > 76)
-                    break;
-                c = s.charAt(i);
-                if (c == ' ' || c == '\t')
-                    if (!(lastc == ' ' || lastc == '\t'))
-                        lastspace = i;
-                lastc = c;
-            }
-            if (lastspace == -1) {
-                // no space, use the whole thing
-                sb.append(s);
-                s = "";
-                used = 0;
-                break;
-            }
-            sb.append(s.substring(0, lastspace));
-            sb.append("\r\n");
-            lastc = s.charAt(lastspace);
-            sb.append(lastc);
-            s = s.substring(lastspace + 1);
-            used = 1;
-        }
-        sb.append(s);
-        return sb.toString();
-    }
-
-    /**
-     * Unfold a folded header.  Any line breaks that aren't escaped and
-     * are followed by whitespace are removed.
-     *
-     * @param   s       the string to unfold
-     * @return          the unfolded string
-     */
-    /*public*/ static String unfold(String s) {
-        if (!foldText)
-            return s;
-
-        StringBuffer sb = null;
-        int i;
-        while ((i = indexOfAny(s, "\r\n")) >= 0) {
-            int start = i;
-            int l = s.length();
-            i++;                // skip CR or NL
-            if (i < l && s.charAt(i - 1) == '\r' && s.charAt(i) == '\n')
-                i++;    // skip LF
-            if (start == 0 || s.charAt(start - 1) != '\\') {
-                char c;
-                // if next line starts with whitespace, skip all of it
-                // XXX - always has to be true?
-                if (i < l && ((c = s.charAt(i)) == ' ' || c == '\t')) {
-                    i++;        // skip whitespace
-                    while (i < l && ((c = s.charAt(i)) == ' ' || c == '\t'))
-                        i++;
-                    if (sb == null)
-                        sb = new StringBuffer(s.length());
-                    if (start != 0) {
-                        sb.append(s.substring(0, start));
-                        sb.append(' ');
-                    }
-                    s = s.substring(i);
-                    continue;
-                }
-                // it's not a continuation line, just leave it in
-                if (sb == null)
-                    sb = new StringBuffer(s.length());
-                sb.append(s.substring(0, i));
-                s = s.substring(i);
-            } else {
-                // there's a backslash at "start - 1"
-                // strip it out, but leave in the line break
-                if (sb == null)
-                    sb = new StringBuffer(s.length());
-                sb.append(s.substring(0, start - 1));
-                sb.append(s.substring(start, i));
-                s = s.substring(i);
-            }
-        }
-        if (sb != null) {
-            sb.append(s);
-            return sb.toString();
-        } else
-            return s;
-    }
-
-    /**
-     * Return the first index of any of the characters in "any" in "s",
-     * or -1 if none are found.
-     *
-     * This should be a method on String.
-     */
-    private static int indexOfAny(String s, String any) {
-        return indexOfAny(s, any, 0);
-    }
-
-    private static int indexOfAny(String s, String any, int start) {
-        try {
-            int len = s.length();
-            for (int i = start; i < len; i++) {
-                if (any.indexOf(s.charAt(i)) >= 0)
-                    return i;
-            }
-            return -1;
-        } catch (StringIndexOutOfBoundsException e) {
-            return -1;
-        }
-    }
-
-    /**
-     * Convert a MIME charset name into a valid Java charset name. <p>
-     *
-     * @param charset   the MIME charset name
-     * @return  the Java charset equivalent. If a suitable mapping is
-     *          not available, the passed in charset is itself returned.
-     */
-    public static String javaCharset(String charset) {
-        if (mime2java == null || charset == null)
-            // no mapping table, or charset parameter is null
-            return charset;
-
-        String alias = (String)mime2java.get(charset.toLowerCase());
-        return alias == null ? charset : alias;
-    }
-
-    /**
-     * Convert a java charset into its MIME charset name. <p>
-     *
-     * Note that a future version of JDK (post 1.2) might provide
-     * this functionality, in which case, we may deprecate this
-     * method then.
-     *
-     * @param   charset    the JDK charset
-     * @return          the MIME/IANA equivalent. If a mapping
-     *                  is not possible, the passed in charset itself
-     *                  is returned.
-     * @since           JavaMail 1.1
-     */
-    public static String mimeCharset(String charset) {
-        if (java2mime == null || charset == null)
-            // no mapping table or charset param is null
-            return charset;
-
-        String alias = (String)java2mime.get(charset.toLowerCase());
-        return alias == null ? charset : alias;
-    }
-
-    private static String defaultJavaCharset;
-    private static String defaultMIMECharset;
-
-    /**
-     * Get the default charset corresponding to the system's current
-     * default locale.  If the System property <code>mail.mime.charset</code>
-     * is set, a system charset corresponding to this MIME charset will be
-     * returned. <p>
-     *
-     * @return  the default charset of the system's default locale,
-     *          as a Java charset. (NOT a MIME charset)
-     * @since   JavaMail 1.1
-     */
-    public static String getDefaultJavaCharset() {
-        if (defaultJavaCharset == null) {
-            /*
-             * If mail.mime.charset is set, it controls the default
-             * Java charset as well.
-             */
-            String mimecs = null;
-
-            mimecs = SAAJUtil.getSystemProperty("mail.mime.charset");
-
-            if (mimecs != null && mimecs.length() > 0) {
-                defaultJavaCharset = javaCharset(mimecs);
-                return defaultJavaCharset;
-            }
-
-            try {
-                defaultJavaCharset = System.getProperty("file.encoding",
-                                                        "8859_1");
-            } catch (SecurityException sex) {
-
-                class NullInputStream extends InputStream {
-                    public int read() {
-                        return 0;
-                    }
-                }
-                InputStreamReader reader =
-                        new InputStreamReader(new NullInputStream());
-                defaultJavaCharset = reader.getEncoding();
-                if (defaultJavaCharset == null)
-                    defaultJavaCharset = "8859_1";
-            }
-        }
-
-        return defaultJavaCharset;
-    }
-
-    /*
-     * Get the default MIME charset for this locale.
-     */
-    static String getDefaultMIMECharset() {
-        if (defaultMIMECharset == null) {
-                defaultMIMECharset = SAAJUtil.getSystemProperty("mail.mime.charset");
-        }
-        if (defaultMIMECharset == null)
-            defaultMIMECharset = mimeCharset(getDefaultJavaCharset());
-        return defaultMIMECharset;
-    }
-
-    // Tables to map MIME charset names to Java names and vice versa.
-    // XXX - Should eventually use J2SE 1.4 java.nio.charset.Charset
-    private static Hashtable mime2java;
-    private static Hashtable java2mime;
-
-    static {
-        java2mime = new Hashtable(40);
-        mime2java = new Hashtable(10);
-
-        try {
-            // Use this class's classloader to load the mapping file
-            // XXX - we should use SecuritySupport, but it's in another package
-            InputStream is =
-                    com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeUtility.class.getResourceAsStream(
-                    "/META-INF/javamail.charset.map");
-
-            if (is != null) {
-                is = new LineInputStream(is);
-
-                // Load the JDK-to-MIME charset mapping table
-                loadMappings((LineInputStream)is, java2mime);
-
-                // Load the MIME-to-JDK charset mapping table
-                loadMappings((LineInputStream)is, mime2java);
-            }
-        } catch (Exception ex) { }
-
-        // If we didn't load the tables, e.g., because we didn't have
-        // permission, load them manually.  The entries here should be
-        // the same as the default javamail.charset.map.
-        if (java2mime.isEmpty()) {
-            java2mime.put("8859_1", "ISO-8859-1");
-            java2mime.put("iso8859_1", "ISO-8859-1");
-            java2mime.put("ISO8859-1", "ISO-8859-1");
-
-            java2mime.put("8859_2", "ISO-8859-2");
-            java2mime.put("iso8859_2", "ISO-8859-2");
-            java2mime.put("ISO8859-2", "ISO-8859-2");
-
-            java2mime.put("8859_3", "ISO-8859-3");
-            java2mime.put("iso8859_3", "ISO-8859-3");
-            java2mime.put("ISO8859-3", "ISO-8859-3");
-
-            java2mime.put("8859_4", "ISO-8859-4");
-            java2mime.put("iso8859_4", "ISO-8859-4");
-            java2mime.put("ISO8859-4", "ISO-8859-4");
-
-            java2mime.put("8859_5", "ISO-8859-5");
-            java2mime.put("iso8859_5", "ISO-8859-5");
-            java2mime.put("ISO8859-5", "ISO-8859-5");
-
-            java2mime.put("8859_6", "ISO-8859-6");
-            java2mime.put("iso8859_6", "ISO-8859-6");
-            java2mime.put("ISO8859-6", "ISO-8859-6");
-
-            java2mime.put("8859_7", "ISO-8859-7");
-            java2mime.put("iso8859_7", "ISO-8859-7");
-            java2mime.put("ISO8859-7", "ISO-8859-7");
-
-            java2mime.put("8859_8", "ISO-8859-8");
-            java2mime.put("iso8859_8", "ISO-8859-8");
-            java2mime.put("ISO8859-8", "ISO-8859-8");
-
-            java2mime.put("8859_9", "ISO-8859-9");
-            java2mime.put("iso8859_9", "ISO-8859-9");
-            java2mime.put("ISO8859-9", "ISO-8859-9");
-
-            java2mime.put("SJIS", "Shift_JIS");
-            java2mime.put("MS932", "Shift_JIS");
-            java2mime.put("JIS", "ISO-2022-JP");
-            java2mime.put("ISO2022JP", "ISO-2022-JP");
-            java2mime.put("EUC_JP", "euc-jp");
-            java2mime.put("KOI8_R", "koi8-r");
-            java2mime.put("EUC_CN", "euc-cn");
-            java2mime.put("EUC_TW", "euc-tw");
-            java2mime.put("EUC_KR", "euc-kr");
-        }
-        if (mime2java.isEmpty()) {
-            mime2java.put("iso-2022-cn", "ISO2022CN");
-            mime2java.put("iso-2022-kr", "ISO2022KR");
-            mime2java.put("utf-8", "UTF8");
-            mime2java.put("utf8", "UTF8");
-            mime2java.put("ja_jp.iso2022-7", "ISO2022JP");
-            mime2java.put("ja_jp.eucjp", "EUCJIS");
-            mime2java.put("euc-kr", "KSC5601");
-            mime2java.put("euckr", "KSC5601");
-            mime2java.put("us-ascii", "ISO-8859-1");
-            mime2java.put("x-us-ascii", "ISO-8859-1");
-        }
-    }
-
-    private static void loadMappings(LineInputStream is, Hashtable table) {
-        String currLine;
-
-        while (true) {
-            try {
-                currLine = is.readLine();
-            } catch (IOException ioex) {
-                break; // error in reading, stop
-            }
-
-            if (currLine == null) // end of file, stop
-                break;
-            if (currLine.startsWith("--") && currLine.endsWith("--"))
-                // end of this table
-                break;
-
-            // ignore empty lines and comments
-            if (currLine.trim().length() == 0 || currLine.startsWith("#"))
-                continue;
-
-            // A valid entry is of the form <key><separator><value>
-            // where, <separator> := SPACE | HT. Parse this
-            StringTokenizer tk = new StringTokenizer(currLine, " \t");
-            try {
-                String key = tk.nextToken();
-                String value = tk.nextToken();
-                table.put(key.toLowerCase(), value);
-            } catch (NoSuchElementException nex) { }
-        }
-    }
-
-    static final int ALL_ASCII          = 1;
-    static final int MOSTLY_ASCII       = 2;
-    static final int MOSTLY_NONASCII    = 3;
-
-    /**
-     * Check if the given string contains non US-ASCII characters.
-     * @param   s       string
-     * @return          ALL_ASCII if all characters in the string
-     *                  belong to the US-ASCII charset. MOSTLY_ASCII
-     *                  if more than half of the available characters
-     *                  are US-ASCII characters. Else MOSTLY_NONASCII.
-     */
-    static int checkAscii(String s) {
-        int ascii = 0, non_ascii = 0;
-        int l = s.length();
-
-        for (int i = 0; i < l; i++) {
-            if (nonascii((int)s.charAt(i))) // non-ascii
-                non_ascii++;
-            else
-                ascii++;
-        }
-
-        if (non_ascii == 0)
-            return ALL_ASCII;
-        if (ascii > non_ascii)
-            return MOSTLY_ASCII;
-
-        return MOSTLY_NONASCII;
-    }
-
-    /**
-     * Check if the given byte array contains non US-ASCII characters.
-     * @param   b       byte array
-     * @return          ALL_ASCII if all characters in the string
-     *                  belong to the US-ASCII charset. MOSTLY_ASCII
-     *                  if more than half of the available characters
-     *                  are US-ASCII characters. Else MOSTLY_NONASCII.
-     *
-     * XXX - this method is no longer used
-     */
-    static int checkAscii(byte[] b) {
-        int ascii = 0, non_ascii = 0;
-
-        for (int i=0; i < b.length; i++) {
-            // The '&' operator automatically causes b[i] to be promoted
-            // to an int, and we mask out the higher bytes in the int
-            // so that the resulting value is not a negative integer.
-            if (nonascii(b[i] & 0xff)) // non-ascii
-                non_ascii++;
-            else
-                ascii++;
-        }
-
-        if (non_ascii == 0)
-            return ALL_ASCII;
-        if (ascii > non_ascii)
-            return MOSTLY_ASCII;
-
-        return MOSTLY_NONASCII;
-    }
-
-    /**
-     * Check if the given input stream contains non US-ASCII characters.
-     * Upto <code>max</code> bytes are checked. If <code>max</code> is
-     * set to <code>ALL</code>, then all the bytes available in this
-     * input stream are checked. If <code>breakOnNonAscii</code> is true
-     * the check terminates when the first non-US-ASCII character is
-     * found and MOSTLY_NONASCII is returned. Else, the check continues
-     * till <code>max</code> bytes or till the end of stream.
-     *
-     * @param   is      the input stream
-     * @param   max     maximum bytes to check for. The special value
-     *                  ALL indicates that all the bytes in this input
-     *                  stream must be checked.
-     * @param   breakOnNonAscii if <code>true</code>, then terminate the
-     *                  the check when the first non-US-ASCII character
-     *                  is found.
-     * @return          ALL_ASCII if all characters in the string
-     *                  belong to the US-ASCII charset. MOSTLY_ASCII
-     *                  if more than half of the available characters
-     *                  are US-ASCII characters. Else MOSTLY_NONASCII.
-     */
-    static int checkAscii(InputStream is, int max, boolean breakOnNonAscii) {
-        int ascii = 0, non_ascii = 0;
-        int len;
-        int block = 4096;
-        int linelen = 0;
-        boolean longLine = false, badEOL = false;
-        boolean checkEOL = encodeEolStrict && breakOnNonAscii;
-        byte buf[] = null;
-        if (max != 0) {
-            block = (max == ALL) ? 4096 : Math.min(max, 4096);
-            buf = new byte[block];
-        }
-        while (max != 0) {
-            try {
-                if ((len = is.read(buf, 0, block)) == -1)
-                    break;
-                int lastb = 0;
-                for (int i = 0; i < len; i++) {
-                    // The '&' operator automatically causes b[i] to
-                    // be promoted to an int, and we mask out the higher
-                    // bytes in the int so that the resulting value is
-                    // not a negative integer.
-                    int b = buf[i] & 0xff;
-                    if (checkEOL &&
-                            ((lastb == '\r' && b != '\n') ||
-                            (lastb != '\r' && b == '\n')))
-                        badEOL = true;
-                    if (b == '\r' || b == '\n')
-                        linelen = 0;
-                    else {
-                        linelen++;
-                        if (linelen > 998)      // 1000 - CRLF
-                            longLine = true;
-                    }
-                    if (nonascii(b)) {  // non-ascii
-                        if (breakOnNonAscii) // we are done
-                            return MOSTLY_NONASCII;
-                        else
-                            non_ascii++;
-                    } else
-                        ascii++;
-                    lastb = b;
-                }
-            } catch (IOException ioex) {
-                break;
-            }
-            if (max != ALL)
-                max -= len;
-        }
-
-        if (max == 0 && breakOnNonAscii)
-            // We have been told to break on the first non-ascii character.
-            // We haven't got any non-ascii character yet, but then we
-            // have not checked all of the available bytes either. So we
-            // cannot say for sure that this input stream is ALL_ASCII,
-            // and hence we must play safe and return MOSTLY_NONASCII
-
-            return MOSTLY_NONASCII;
-
-        if (non_ascii == 0) { // no non-us-ascii characters so far
-            // If we're looking at non-text data, and we saw CR without LF
-            // or vice versa, consider this mostly non-ASCII so that it
-            // will be base64 encoded (since the quoted-printable encoder
-            // doesn't encode this case properly).
-            if (badEOL)
-                return MOSTLY_NONASCII;
-            // if we've seen a long line, we degrade to mostly ascii
-            else if (longLine)
-                return MOSTLY_ASCII;
-            else
-                return ALL_ASCII;
-        }
-        if (ascii > non_ascii) // mostly ascii
-            return MOSTLY_ASCII;
-        return MOSTLY_NONASCII;
-    }
-
-    static final boolean nonascii(int b) {
-        return b >= 0177 || (b < 040 && b != '\r' && b != '\n' && b != '\t');
-    }
-}
-
-/**
- * An OutputStream that determines whether the data written to
- * it is all ASCII, mostly ASCII, or mostly non-ASCII.
- */
-class AsciiOutputStream extends OutputStream {
-    private boolean breakOnNonAscii;
-    private int ascii = 0, non_ascii = 0;
-    private int linelen = 0;
-    private boolean longLine = false;
-    private boolean badEOL = false;
-    private boolean checkEOL = false;
-    private int lastb = 0;
-    private int ret = 0;
-
-    public AsciiOutputStream(boolean breakOnNonAscii, boolean encodeEolStrict) {
-        this.breakOnNonAscii = breakOnNonAscii;
-        checkEOL = encodeEolStrict && breakOnNonAscii;
-    }
-
-    public void write(int b) throws IOException {
-        check(b);
-    }
-
-    public void write(byte b[]) throws IOException {
-        write(b, 0, b.length);
-    }
-
-    public void write(byte b[], int off, int len) throws IOException {
-        len += off;
-        for (int i = off; i < len ; i++)
-            check(b[i]);
-    }
-
-    private final void check(int b) throws IOException {
-        b &= 0xff;
-        if (checkEOL &&
-                ((lastb == '\r' && b != '\n') || (lastb != '\r' && b == '\n')))
-            badEOL = true;
-        if (b == '\r' || b == '\n')
-            linelen = 0;
-        else {
-            linelen++;
-            if (linelen > 998)  // 1000 - CRLF
-                longLine = true;
-        }
-        if (MimeUtility.nonascii(b)) { // non-ascii
-            non_ascii++;
-            if (breakOnNonAscii) {      // we are done
-                ret = MimeUtility.MOSTLY_NONASCII;
-                throw new EOFException();
-            }
-        } else
-            ascii++;
-        lastb = b;
-    }
-
-    /**
-     * Return ASCII-ness of data stream.
-     */
-    public int getAscii() {
-        if (ret != 0)
-            return ret;
-        // If we're looking at non-text data, and we saw CR without LF
-        // or vice versa, consider this mostly non-ASCII so that it
-        // will be base64 encoded (since the quoted-printable encoder
-        // doesn't encode this case properly).
-        if (badEOL)
-            return MimeUtility.MOSTLY_NONASCII;
-        else if (non_ascii == 0) { // no non-us-ascii characters so far
-            // if we've seen a long line, we degrade to mostly ascii
-            if (longLine)
-                return MimeUtility.MOSTLY_ASCII;
-            else
-                return MimeUtility.ALL_ASCII;
-        }
-        if (ascii > non_ascii) // mostly ascii
-            return MimeUtility.MOSTLY_ASCII;
-        return MimeUtility.MOSTLY_NONASCII;
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ParameterList.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,237 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)ParameterList.java     1.10 03/02/12
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-/**
- * This class holds MIME parameters (attribute-value pairs).
- *
- * @version 1.10, 03/02/12
- * @author  John Mani
- */
-
-public final class ParameterList {
-
-    private final HashMap list;
-
-    /**
-     * No-arg Constructor.
-     */
-    public ParameterList() {
-        this.list = new HashMap();
-    }
-
-    private ParameterList(HashMap m) {
-        this.list = m;
-    }
-
-    /**
-     * Constructor that takes a parameter-list string. The String
-     * is parsed and the parameters are collected and stored internally.
-     * A ParseException is thrown if the parse fails.
-     * Note that an empty parameter-list string is valid and will be
-     * parsed into an empty ParameterList.
-     *
-     * @param   s       the parameter-list string.
-     * @exception       ParseException if the parse fails.
-     */
-    public ParameterList(String s) throws ParseException {
-        HeaderTokenizer h = new HeaderTokenizer(s, HeaderTokenizer.MIME);
-        HeaderTokenizer.Token tk;
-        int type;
-        String name;
-
-        list = new HashMap();
-        while (true) {
-            tk = h.next();
-            type = tk.getType();
-
-            if (type == HeaderTokenizer.Token.EOF) // done
-                return;
-
-            if ((char)type == ';') {
-                // expect parameter name
-                tk = h.next();
-                // tolerate trailing semicolon, even though it violates the spec
-                if (tk.getType() == HeaderTokenizer.Token.EOF)
-                    return;
-                // parameter name must be a MIME Atom
-                if (tk.getType() != HeaderTokenizer.Token.ATOM)
-                    throw new ParseException();
-                name = tk.getValue().toLowerCase();
-
-                // expect '='
-                tk = h.next();
-                if ((char)tk.getType() != '=')
-                    throw new ParseException();
-
-                // expect parameter value
-                tk = h.next();
-                type = tk.getType();
-                // parameter value must be a MIME Atom or Quoted String
-                if (type != HeaderTokenizer.Token.ATOM &&
-                    type != HeaderTokenizer.Token.QUOTEDSTRING)
-                    throw new ParseException();
-
-                list.put(name, tk.getValue());
-            } else
-                throw new ParseException();
-        }
-    }
-
-    /**
-     * Return the number of parameters in this list.
-     *
-     * @return  number of parameters.
-     */
-    public int size() {
-        return list.size();
-    }
-
-    /**
-     * Returns the value of the specified parameter. Note that
-     * parameter names are case-insensitive.
-     *
-     * @param name      parameter name.
-     * @return          Value of the parameter. Returns
-     *                  <code>null</code> if the parameter is not
-     *                  present.
-     */
-    public String get(String name) {
-        return (String)list.get(name.trim().toLowerCase());
-    }
-
-    /**
-     * Set a parameter. If this parameter already exists, it is
-     * replaced by this new value.
-     *
-     * @param   name    name of the parameter.
-     * @param   value   value of the parameter.
-     */
-    public void set(String name, String value) {
-        list.put(name.trim().toLowerCase(), value);
-    }
-
-    /**
-     * Removes the specified parameter from this ParameterList.
-     * This method does nothing if the parameter is not present.
-     *
-     * @param   name    name of the parameter.
-     */
-    public void remove(String name) {
-        list.remove(name.trim().toLowerCase());
-    }
-
-    /**
-     * Return an enumeration of the names of all parameters in this
-     * list.
-     *
-     * @return Enumeration of all parameter names in this list.
-     */
-    public Iterator getNames() {
-        return list.keySet().iterator();
-    }
-
-
-    /**
-     * Convert this ParameterList into a MIME String. If this is
-     * an empty list, an empty string is returned.
-     *
-     * @return          String
-     */
-    public String toString() {
-        return toString(0);
-    }
-
-    /**
-     * Convert this ParameterList into a MIME String. If this is
-     * an empty list, an empty string is returned.
-     *
-     * The 'used' parameter specifies the number of character positions
-     * already taken up in the field into which the resulting parameter
-     * list is to be inserted. It's used to determine where to fold the
-     * resulting parameter list.
-     *
-     * @param used      number of character positions already used, in
-     *                  the field into which the parameter list is to
-     *                  be inserted.
-     * @return          String
-     */
-    public String toString(int used) {
-        StringBuffer sb = new StringBuffer();
-        Iterator itr = list.entrySet().iterator();
-
-        while (itr.hasNext()) {
-            Map.Entry e = (Map.Entry)itr.next();
-            String name = (String)e.getKey();
-            String value = quote((String)e.getValue());
-            sb.append("; ");
-            used += 2;
-            int len = name.length() + value.length() + 1;
-            if (used + len > 76) { // overflows ...
-                sb.append("\r\n\t"); // .. start new continuation line
-                used = 8; // account for the starting <tab> char
-            }
-            sb.append(name).append('=');
-            used += name.length() + 1;
-            if (used + value.length() > 76) { // still overflows ...
-                // have to fold value
-                String s = MimeUtility.fold(used, value);
-                sb.append(s);
-                int lastlf = s.lastIndexOf('\n');
-                if (lastlf >= 0)        // always true
-                    used += s.length() - lastlf - 1;
-                else
-                    used += s.length();
-            } else {
-                sb.append(value);
-                used += value.length();
-            }
-        }
-
-        return sb.toString();
-    }
-
-    // Quote a parameter value token if required.
-    private String quote(String value) {
-        if ("".equals(value))
-                return "\"\"";
-        return MimeUtility.quote(value, HeaderTokenizer.MIME);
-    }
-
-    public ParameterList copy() {
-        return new ParameterList((HashMap)list.clone());
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ParseException.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)ParseException.java    1.3 02/03/27
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
-
-import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException;
-
-/**
- * The exception thrown due to an error in parsing RFC822
- * or MIME headers
- *
- * @author John Mani
- */
-
-public class ParseException extends MessagingException {
-
-    /**
-     * Constructs a ParseException with no detail message.
-     */
-    public ParseException() {
-        super();
-    }
-
-    /**
-     * Constructs a ParseException with the specified detail message.
-     * @param s         the detail message
-     */
-    public ParseException(String s) {
-        super(s);
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/SharedInputStream.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)SharedInputStream.java 1.2 02/03/27
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
-
-import java.io.InputStream;
-import java.io.OutputStream;
-
-// SAAJ doesn't utilize this, but I think it should.
-/**
- * An InputStream that is backed by data that can be shared by multiple
- * readers may implement this interface.  This allows users of such an
- * InputStream to determine the current positionin the InputStream, and
- * to create new InputStreams representing a subset of the data in the
- * original InputStream.  The new InputStream will access the same
- * underlying data as the original, without copying the data.
- *
- * @version 1.2, 02/03/27
- * @author  Bill Shannon
- * @since JavaMail 1.2
- */
-
-public interface SharedInputStream {
-    /**
-     * Return the current position in the InputStream, as an
-     * offset from the beginning of the InputStream.
-     *
-     * @return  the current position
-     */
-    public long getPosition();
-
-    /**
-     * Return a new InputStream representing a subset of the data
-     * from this InputStream, starting at <code>start</code> (inclusive)
-     * up to <code>end</code> (exclusive).  <code>start</code> must be
-     * non-negative.  If <code>end</code> is -1, the new stream ends
-     * at the same place as this stream.  The returned InputStream
-     * will also implement the SharedInputStream interface.
-     *
-     * @param   start   the starting position
-     * @param   end     the ending position + 1
-     * @return          the new stream
-     */
-    public InputStream newStream(long start, long end);
-
-    /**
-     * Writes the specified region to another {@link OutputStream}.
-     */
-    public void writeTo(long start,long end, OutputStream out);
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/UniqueValue.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)UniqueValue.java       1.6 02/03/27
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
-
-
-/**
- * This is a utility class that generates unique values. The generated
- * String contains only US-ASCII characters and hence is safe for use
- * in RFC822 headers. <p>
- *
- * This is a package private class.
- *
- * @author John Mani
- * @author Max Spivak
- * @author Bill Shannon
- */
-
-class UniqueValue {
-    /**
-     * A global part number.  Access is not synchronized because the
-     * value is only one part of the unique value and so doesn't need
-     * to be accurate.
-     */
-    private static int part = 0;
-
-    /**
-     * Get a unique value for use in a multipart boundary string.
-     *
-     * This implementation generates it by concatenating a global
-     * part number, a newly created object's <code>hashCode()</code>,
-     * and the current time (in milliseconds).
-     */
-    public static String getUniqueBoundaryValue() {
-        StringBuffer s = new StringBuffer();
-
-        // Unique string is ----=_Part_<part>_<hashcode>.<currentTime>
-        s.append("----=_Part_").append(part++).append("_").
-          append(s.hashCode()).append('.').
-          append(System.currentTimeMillis());
-        return s.toString();
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/ASCIIUtility.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,155 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)ASCIIUtility.java      1.9 02/03/27
- */
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
-
-import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;
-
-import java.io.*;
-
-public class ASCIIUtility {
-
-    // Private constructor so that this class is not instantiated
-    private ASCIIUtility() { }
-
-
-    /**
-     * Convert the bytes within the specified range of the given byte
-     * array into a signed integer in the given radix . The range extends
-     * from <code>start</code> till, but not including <code>end</code>. <p>
-     *
-     * Based on java.lang.Integer.parseInt()
-     */
-    public static int parseInt(byte[] b, int start, int end, int radix)
-                throws NumberFormatException {
-        if (b == null)
-            throw new NumberFormatException("null");
-
-        int result = 0;
-        boolean negative = false;
-        int i = start;
-        int limit;
-        int multmin;
-        int digit;
-
-        if (end > start) {
-            if (b[i] == '-') {
-                negative = true;
-                limit = Integer.MIN_VALUE;
-                i++;
-            } else {
-                limit = -Integer.MAX_VALUE;
-            }
-            multmin = limit / radix;
-            if (i < end) {
-                digit = Character.digit((char)b[i++], radix);
-                if (digit < 0) {
-                    throw new NumberFormatException(
-                        "illegal number: " + toString(b, start, end)
-                        );
-                } else {
-                    result = -digit;
-                }
-            }
-            while (i < end) {
-                // Accumulating negatively avoids surprises near MAX_VALUE
-                digit = Character.digit((char)b[i++], radix);
-                if (digit < 0) {
-                    throw new NumberFormatException("illegal number");
-                }
-                if (result < multmin) {
-                    throw new NumberFormatException("illegal number");
-                }
-                result *= radix;
-                if (result < limit + digit) {
-                    throw new NumberFormatException("illegal number");
-                }
-                result -= digit;
-            }
-        } else {
-            throw new NumberFormatException("illegal number");
-        }
-        if (negative) {
-            if (i > start + 1) {
-                return result;
-            } else {    /* Only got "-" */
-                throw new NumberFormatException("illegal number");
-            }
-        } else {
-            return -result;
-        }
-    }
-
-    /**
-     * Convert the bytes within the specified range of the given byte
-     * array into a String. The range extends from <code>start</code>
-     * till, but not including <code>end</code>. <p>
-     */
-    public static String toString(byte[] b, int start, int end) {
-        int size = end - start;
-        char[] theChars = new char[size];
-
-        for (int i = 0, j = start; i < size; )
-            theChars[i++] = (char)(b[j++]&0xff);
-
-        return new String(theChars);
-    }
-
-    public static byte[] getBytes(String s) {
-        char [] chars= s.toCharArray();
-        int size = chars.length;
-        byte[] bytes = new byte[size];
-
-        for (int i = 0; i < size;)
-            bytes[i] = (byte) chars[i++];
-        return bytes;
-    }
-
-    /**
-     *
-     * @deprecated
-     *      this is an expensive operation that require an additional
-     *      buffer reallocation just to get the array of an exact size.
-     *      Unless you absolutely need the exact size array, don't use this.
-     *      Use {@link ByteOutputStream} and {@link ByteOutputStream#write(InputStream)}.
-     */
-    public static byte[] getBytes(InputStream is) throws IOException {
-        ByteOutputStream bos = null;
-        try {
-            bos = new ByteOutputStream();
-            bos.write(is);
-        } finally {
-            if (bos != null)
-                bos.close();
-            is.close();
-        }
-        return bos.toByteArray();
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/BASE64DecoderStream.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,256 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)BASE64DecoderStream.java       1.8 02/03/27
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
-
-import java.io.*;
-
-/**
- * This class implements a BASE64 Decoder. It is implemented as
- * a FilterInputStream, so one can just wrap this class around
- * any input stream and read bytes from this filter. The decoding
- * is done as the bytes are read out.
- *
- * @author John Mani
- * @author Bill Shannon
- */
-
-public class BASE64DecoderStream extends FilterInputStream {
-    private byte[] buffer;      // cache of decoded bytes
-    private int bufsize = 0;    // size of the cache
-    private int index = 0;      // index into the cache
-
-    /**
-     * Create a BASE64 decoder that decodes the specified input stream
-     * @param in        the input stream
-     */
-    public BASE64DecoderStream(InputStream in) {
-        super(in);
-        buffer = new byte[3];
-    }
-
-    /**
-     * Read the next decoded byte from this input stream. The byte
-     * is returned as an <code>int</code> in the range <code>0</code>
-     * to <code>255</code>. If no byte is available because the end of
-     * the stream has been reached, the value <code>-1</code> is returned.
-     * This method blocks until input data is available, the end of the
-     * stream is detected, or an exception is thrown.
-     *
-     * @return     next byte of data, or <code>-1</code> if the end of the
-     *             stream is reached.
-     * @exception  IOException  if an I/O error occurs.
-     * @see        java.io.FilterInputStream#in
-     */
-    public int read() throws IOException {
-        if (index >= bufsize) {
-            decode(); // Fills up buffer
-            if (bufsize == 0) // buffer is empty
-                return -1;
-            index = 0; // reset index into buffer
-        }
-        return buffer[index++] & 0xff; // Zero off the MSB
-    }
-
-    /**
-     * Reads up to <code>len</code> decoded bytes of data from this input stream
-     * into an array of bytes. This method blocks until some input is
-     * available.
-     * <p>
-     *
-     * @param      buf   the buffer into which the data is read.
-     * @param      off   the start offset of the data.
-     * @param      len   the maximum number of bytes read.
-     * @return     the total number of bytes read into the buffer, or
-     *             <code>-1</code> if there is no more data because the end of
-     *             the stream has been reached.
-     * @exception  IOException  if an I/O error occurs.
-     */
-    public int read(byte[] buf, int off, int len) throws IOException {
-        int i, c;
-        for (i = 0; i < len; i++) {
-            if ((c = read()) == -1) {
-                if (i == 0) // At end of stream, so we should
-                    i = -1; // return -1 , NOT 0.
-                break;
-            }
-            buf[off+i] = (byte)c;
-        }
-
-        return i;
-    }
-
-    /**
-     * Tests if this input stream supports marks. Currently this class
-     * does not support marks
-     */
-    public boolean markSupported() {
-        return false; // Maybe later ..
-    }
-
-    /**
-     * Returns the number of bytes that can be read from this input
-     * stream without blocking. However, this figure is only
-     * a close approximation in case the original encoded stream
-     * contains embedded CRLFs; since the CRLFs are discarded, not decoded
-     */
-    public int available() throws IOException {
-         // This is only an estimate, since in.available()
-         // might include CRLFs too ..
-         return ((in.available() * 3)/4 + (bufsize-index));
-    }
-
-    /**
-     * This character array provides the character to value map
-     * based on RFC1521.
-     */
-    private final static char pem_array[] = {
-        'A','B','C','D','E','F','G','H', // 0
-        'I','J','K','L','M','N','O','P', // 1
-        'Q','R','S','T','U','V','W','X', // 2
-        'Y','Z','a','b','c','d','e','f', // 3
-        'g','h','i','j','k','l','m','n', // 4
-        'o','p','q','r','s','t','u','v', // 5
-        'w','x','y','z','0','1','2','3', // 6
-        '4','5','6','7','8','9','+','/'  // 7
-    };
-
-    private final static byte pem_convert_array[] = new byte[256];
-
-    static {
-        for (int i = 0; i < 255; i++)
-            pem_convert_array[i] = -1;
-        for(int i = 0; i < pem_array.length; i++)
-            pem_convert_array[pem_array[i]] = (byte) i;
-    }
-
-    /* The decoder algorithm */
-    private byte[] decode_buffer = new byte[4];
-    private void decode() throws IOException {
-        bufsize = 0;
-        /*
-         * We need 4 valid base64 characters before we start decoding.
-         * We skip anything that's not a valid base64 character (usually
-         * just CRLF).
-         */
-        int got = 0;
-        while (got < 4) {
-            int i = in.read();
-            if (i == -1) {
-                if (got == 0)
-                    return;     // EOF before any data is ok
-                throw new IOException("Error in encoded stream, got " + got);
-            }
-            if (i >= 0 && i < 256 && i == '=' || pem_convert_array[i] != -1)
-                decode_buffer[got++] = (byte)i;
-        }
-
-        byte a, b;
-        a = pem_convert_array[decode_buffer[0] & 0xff];
-        b = pem_convert_array[decode_buffer[1] & 0xff];
-        // The first decoded byte
-        buffer[bufsize++] = (byte)(((a << 2) & 0xfc) | ((b >>> 4) & 3));
-
-        if (decode_buffer[2] == '=') // End of this BASE64 encoding
-            return;
-        a = b;
-        b = pem_convert_array[decode_buffer[2] & 0xff];
-        // The second decoded byte
-        buffer[bufsize++] = (byte)(((a << 4) & 0xf0) | ((b >>> 2) & 0xf));
-
-        if (decode_buffer[3] == '=') // End of this BASE64 encoding
-            return;
-        a = b;
-        b = pem_convert_array[decode_buffer[3] & 0xff];
-        // The third decoded byte
-        buffer[bufsize++] = (byte)(((a << 6) & 0xc0) | (b & 0x3f));
-    }
-
-    /**
-     * Base64 decode a byte array.  No line breaks are allowed.
-     * This method is suitable for short strings, such as those
-     * in the IMAP AUTHENTICATE protocol, but not to decode the
-     * entire content of a MIME part.
-     *
-     * NOTE: inbuf may only contain valid base64 characters.
-     *       Whitespace is not ignored.
-     */
-    public static byte[] decode(byte[] inbuf) {
-        int size = (inbuf.length / 4) * 3;
-        if (size == 0)
-            return inbuf;
-
-        if (inbuf[inbuf.length - 1] == '=') {
-            size--;
-            if (inbuf[inbuf.length - 2] == '=')
-                size--;
-        }
-        byte[] outbuf = new byte[size];
-
-        int inpos = 0, outpos = 0;
-        size = inbuf.length;
-        while (size > 0) {
-            byte a, b;
-            a = pem_convert_array[inbuf[inpos++] & 0xff];
-            b = pem_convert_array[inbuf[inpos++] & 0xff];
-            // The first decoded byte
-            outbuf[outpos++] = (byte)(((a << 2) & 0xfc) | ((b >>> 4) & 3));
-
-            if (inbuf[inpos] == '=') // End of this BASE64 encoding
-                return outbuf;
-            a = b;
-            b = pem_convert_array[inbuf[inpos++] & 0xff];
-            // The second decoded byte
-            outbuf[outpos++] = (byte)(((a << 4) & 0xf0) | ((b >>> 2) & 0xf));
-
-            if (inbuf[inpos] == '=') // End of this BASE64 encoding
-                return outbuf;
-            a = b;
-            b = pem_convert_array[inbuf[inpos++] & 0xff];
-            // The third decoded byte
-            outbuf[outpos++] = (byte)(((a << 6) & 0xc0) | (b & 0x3f));
-            size -= 4;
-        }
-        return outbuf;
-    }
-
-    /*** begin TEST program ***
-    public static void main(String argv[]) throws Exception {
-        FileInputStream infile = new FileInputStream(argv[0]);
-        BASE64DecoderStream decoder = new BASE64DecoderStream(infile);
-        int c;
-
-        while ((c = decoder.read()) != -1)
-            System.out.print((char)c);
-        System.out.flush();
-    }
-    *** end TEST program ***/
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/BASE64EncoderStream.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,244 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)BASE64EncoderStream.java       1.6 02/03/27
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
-
-import java.io.*;
-
-/**
- * This class implements a BASE64 Encoder. It is implemented as
- * a FilterOutputStream, so one can just wrap this class around
- * any output stream and write bytes into this filter. The Encoding
- * is done as the bytes are written out.
- *
- * @author John Mani
- * @author Bill Shannon
- */
-
-public class BASE64EncoderStream extends FilterOutputStream {
-    private byte[] buffer;      // cache of bytes that are yet to be encoded
-    private int bufsize = 0;    // size of the cache
-    private int count = 0;      // number of bytes that have been output
-    private int bytesPerLine;   // number of bytes per line
-
-    /**
-     * Create a BASE64 encoder that encodes the specified input stream
-     * @param out        the output stream
-     * @param bytesPerLine  number of bytes per line. The encoder inserts
-     *                   a CRLF sequence after the specified number of bytes
-     */
-    public BASE64EncoderStream(OutputStream out, int bytesPerLine) {
-        super(out);
-        buffer = new byte[3];
-        this.bytesPerLine = bytesPerLine;
-    }
-
-    /**
-     * Create a BASE64 encoder that encodes the specified input stream.
-     * Inserts the CRLF sequence after outputting 76 bytes.
-     * @param out        the output stream
-     */
-    public BASE64EncoderStream(OutputStream out) {
-        this(out, 76);
-    }
-
-    /**
-     * Encodes <code>len</code> bytes from the specified
-     * <code>byte</code> array starting at offset <code>off</code> to
-     * this output stream.
-     *
-     * @param      b     the data.
-     * @param      off   the start offset in the data.
-     * @param      len   the number of bytes to write.
-     * @exception  IOException  if an I/O error occurs.
-     */
-    public void write(byte[] b, int off, int len) throws IOException {
-        for (int i = 0; i < len; i++)
-            write(b[off + i]);
-    }
-
-    /**
-     * Encodes <code>b.length</code> bytes to this output stream.
-     * @param      b   the data to be written.
-     * @exception  IOException  if an I/O error occurs.
-     */
-    public void write(byte[] b) throws IOException {
-        write(b, 0, b.length);
-    }
-
-    /**
-     * Encodes the specified <code>byte</code> to this output stream.
-     * @param      c   the <code>byte</code>.
-     * @exception  IOException  if an I/O error occurs.
-     */
-    public void write(int c) throws IOException {
-        buffer[bufsize++] = (byte)c;
-        if (bufsize == 3) { // Encoding unit = 3 bytes
-            encode();
-            bufsize = 0;
-        }
-    }
-
-    /**
-     * Flushes this output stream and forces any buffered output bytes
-     * to be encoded out to the stream.
-     * @exception  IOException  if an I/O error occurs.
-     */
-    public void flush() throws IOException {
-        if (bufsize > 0) { // If there's unencoded characters in the buffer ..
-            encode();      // .. encode them
-            bufsize = 0;
-        }
-        out.flush();
-    }
-
-    /**
-     * Forces any buffered output bytes to be encoded out to the stream
-     * and closes this output stream
-     */
-    public void close() throws IOException {
-        flush();
-        out.close();
-    }
-
-    /** This array maps the characters to their 6 bit values */
-    private final static char pem_array[] = {
-        'A','B','C','D','E','F','G','H', // 0
-        'I','J','K','L','M','N','O','P', // 1
-        'Q','R','S','T','U','V','W','X', // 2
-        'Y','Z','a','b','c','d','e','f', // 3
-        'g','h','i','j','k','l','m','n', // 4
-        'o','p','q','r','s','t','u','v', // 5
-        'w','x','y','z','0','1','2','3', // 6
-        '4','5','6','7','8','9','+','/'  // 7
-    };
-
-    private void encode() throws IOException {
-        // If writing out this encoded unit will cause overflow,
-        // start a new line.
-        if (count + 4 > bytesPerLine) {
-            out.write('\r');
-            out.write('\n');
-            count = 0;
-        }
-
-        byte a, b, c;
-        if (bufsize == 1) {
-            a = buffer[0];
-            b = 0;
-            c = 0;
-            out.write(pem_array[(a >>> 2) & 0x3F]);
-            out.write(pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)]);
-            out.write('='); // pad character
-            out.write('='); // pad character
-        } else if (bufsize == 2) {
-            a = buffer[0];
-            b = buffer[1];
-            c = 0;
-            out.write(pem_array[(a >>> 2) & 0x3F]);
-            out.write(pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)]);
-            out.write(pem_array[((b << 2) & 0x3c) + ((c >>> 6) & 0x3)]);
-            out.write('='); // pad character
-        } else {
-            a = buffer[0];
-            b = buffer[1];
-            c = buffer[2];
-            out.write(pem_array[(a >>> 2) & 0x3F]);
-            out.write(pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)]);
-            out.write(pem_array[((b << 2) & 0x3c) + ((c >>> 6) & 0x3)]);
-            out.write(pem_array[c & 0x3F]);
-        }
-
-        // increment count
-        count += 4;
-    }
-
-    /**
-     * Base64 encode a byte array.  No line breaks are inserted.
-     * This method is suitable for short strings, such as those
-     * in the IMAP AUTHENTICATE protocol, but not to encode the
-     * entire content of a MIME part.
-     */
-    public static byte[] encode(byte[] inbuf) {
-        if (inbuf.length == 0)
-            return inbuf;
-        byte[] outbuf = new byte[((inbuf.length + 2) / 3) * 4];
-        int inpos = 0, outpos = 0;
-        int size = inbuf.length;
-        while (size > 0) {
-            byte a, b, c;
-            if (size == 1) {
-                a = inbuf[inpos++];
-                b = 0;
-                c = 0;
-                outbuf[outpos++] = (byte)pem_array[(a >>> 2) & 0x3F];
-                outbuf[outpos++] =
-                        (byte)pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)];
-                outbuf[outpos++] = (byte)'=';  // pad character
-                outbuf[outpos++] = (byte)'=';  // pad character
-            } else if (size == 2) {
-                a = inbuf[inpos++];
-                b = inbuf[inpos++];
-                c = 0;
-                outbuf[outpos++] = (byte)pem_array[(a >>> 2) & 0x3F];
-                outbuf[outpos++] =
-                        (byte)pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)];
-                outbuf[outpos++] =
-                        (byte)pem_array[((b << 2) & 0x3c) + ((c >>> 6) & 0x3)];
-                outbuf[outpos++] = (byte)'=';  // pad character
-            } else {
-                a = inbuf[inpos++];
-                b = inbuf[inpos++];
-                c = inbuf[inpos++];
-                outbuf[outpos++] = (byte)pem_array[(a >>> 2) & 0x3F];
-                outbuf[outpos++] =
-                        (byte)pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)];
-                outbuf[outpos++] =
-                        (byte)pem_array[((b << 2) & 0x3c) + ((c >>> 6) & 0x3)];
-                outbuf[outpos++] = (byte)pem_array[c & 0x3F];
-            }
-            size -= 3;
-        }
-        return outbuf;
-    }
-
-    /*** begin TEST program
-    public static void main(String argv[]) throws Exception {
-        FileInputStream infile = new FileInputStream(argv[0]);
-        BASE64EncoderStream encoder = new BASE64EncoderStream(System.out);
-        int c;
-
-        while ((c = infile.read()) != -1)
-            encoder.write(c);
-        encoder.close();
-    }
-    *** end TEST program **/
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/BEncoderStream.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)BEncoderStream.java    1.3 02/03/27
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
-
-import java.io.OutputStream;
-
-/**
- * This class implements a 'B' Encoder as defined by RFC2047 for
- * encoding MIME headers. It subclasses the BASE64EncoderStream
- * class.
- *
- * @author John Mani
- */
-
-public class BEncoderStream extends BASE64EncoderStream {
-
-    /**
-     * Create a 'B' encoder that encodes the specified input stream.
-     * @param out        the output stream
-     */
-    public BEncoderStream(OutputStream out) {
-        super(out, Integer.MAX_VALUE); // MAX_VALUE is 2^31, should
-                                       // suffice (!) to indicate that
-                                       // CRLFs should not be inserted
-    }
-
-    /**
-     * Returns the length of the encoded version of this byte array.
-     */
-    public static int encodedLength(byte[] b) {
-        return ((b.length + 2)/3) * 4;
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/LineInputStream.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,112 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)LineInputStream.java   1.7 03/01/07
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
-
-import java.io.*;
-
-/**
- * This class is to support reading CRLF terminated lines that
- * contain only US-ASCII characters from an input stream. Provides
- * functionality that is similar to the deprecated
- * <code>DataInputStream.readLine()</code>. Expected use is to read
- * lines as String objects from a RFC822 stream.
- *
- * It is implemented as a FilterInputStream, so one can just wrap
- * this class around any input stream and read bytes from this filter.
- *
- * @author John Mani
- */
-
-public final class LineInputStream extends FilterInputStream {
-
-    private char[] lineBuffer = null; // reusable byte buffer
-
-    public LineInputStream(InputStream in) {
-        super(in);
-    }
-
-    /**
-     * Read a line containing only ASCII characters from the input
-     * stream. A line is terminated by a CR or NL or CR-NL sequence.
-     * A common error is a CR-CR-NL sequence, which will also terminate
-     * a line.
-     * The line terminator is not returned as part of the returned
-     * String. Returns null if no data is available. <p>
-     *
-     * This class is similar to the deprecated
-     * <code>DataInputStream.readLine()</code>
-     */
-    public String readLine() throws IOException {
-        InputStream in = this.in;
-        char[] buf = lineBuffer;
-
-        if (buf == null)
-            buf = lineBuffer = new char[128];
-
-        int c1;
-        int room = buf.length;
-        int offset = 0;
-
-        while ((c1 = in.read()) != -1) {
-            if (c1 == '\n') // Got NL, outa here.
-                break;
-            else if (c1 == '\r') {
-                // Got CR, is the next char NL ?
-                int c2 = in.read();
-                if (c2 == '\r')         // discard extraneous CR
-                    c2 = in.read();
-                if (c2 != '\n') {
-                    // If not NL, push it back
-                    if (!(in instanceof PushbackInputStream))
-                        in = this.in = new PushbackInputStream(in);
-                    ((PushbackInputStream)in).unread(c2);
-                }
-                break; // outa here.
-            }
-
-            // Not CR, NL or CR-NL ...
-            // .. Insert the byte into our byte buffer
-            if (--room < 0) { // No room, need to grow.
-                buf = new char[offset + 128];
-                room = buf.length - offset - 1;
-                System.arraycopy(lineBuffer, 0, buf, 0, offset);
-                lineBuffer = buf;
-            }
-            buf[offset++] = (char)c1;
-        }
-
-        if ((c1 == -1) && (offset == 0))
-            return null;
-
-        return String.copyValueOf(buf, 0, offset);
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/OutputUtil.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)OutputUtil.java  1.6 02/03/27
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
-
-import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;
-
-import java.io.OutputStream;
-import java.io.IOException;
-
-/**
- * This class is to support writing out Strings as a sequence of bytes
- * terminated by a CRLF sequence. The String must contain only US-ASCII
- * characters.<p>
- *
- * The expected use is to write out RFC822 style headers to an output
- * stream. <p>
- *
- * @author Kohsuke Kawaguchi
- */
-public abstract class OutputUtil {
-    private static byte[] newline = {'\r','\n'};
-
-    public static void writeln(String s,OutputStream out) throws IOException {
-        writeAsAscii(s,out);
-        writeln(out);
-    }
-
-    /**
-     * Writes a string as ASCII string.
-     */
-    public static void writeAsAscii(String s,OutputStream out) throws IOException {
-        int len = s.length();
-        for( int i=0; i<len; i++ )
-            out.write((byte)s.charAt(i));
-    }
-
-    public static void writeln(OutputStream out) throws IOException {
-        out.write(newline);
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QDecoderStream.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)QDecoderStream.java    1.5 02/03/27
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * This class implements a Q Decoder as defined in RFC 2047
- * for decoding MIME headers. It subclasses the QPDecoderStream class.
- *
- * @author John Mani
- */
-
-public class QDecoderStream extends QPDecoderStream {
-
-    /**
-     * Create a Q-decoder that decodes the specified input stream.
-     * @param in        the input stream
-     */
-    public QDecoderStream(InputStream in) {
-        super(in);
-    }
-
-    /**
-     * Read the next decoded byte from this input stream. The byte
-     * is returned as an <code>int</code> in the range <code>0</code>
-     * to <code>255</code>. If no byte is available because the end of
-     * the stream has been reached, the value <code>-1</code> is returned.
-     * This method blocks until input data is available, the end of the
-     * stream is detected, or an exception is thrown.
-     *
-     * @return     the next byte of data, or <code>-1</code> if the end of the
-     *             stream is reached.
-     * @exception  IOException  if an I/O error occurs.
-     */
-    public int read() throws IOException {
-        int c = in.read();
-
-        if (c == '_') // Return '_' as ' '
-            return ' ';
-        else if (c == '=') {
-            // QP Encoded atom. Get the next two bytes ..
-            ba[0] = (byte)in.read();
-            ba[1] = (byte)in.read();
-            // .. and decode them
-            try {
-                return ASCIIUtility.parseInt(ba, 0, 2, 16);
-            } catch (NumberFormatException nex) {
-                throw new IOException("Error in QP stream " + nex.getMessage());
-            }
-        } else
-            return c;
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QEncoderStream.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)QEncoderStream.java    1.4 02/03/27
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-/**
- * This class implements a Q Encoder as defined by RFC 2047 for
- * encoding MIME headers. It subclasses the QPEncoderStream class.
- *
- * @author John Mani
- */
-
-public class QEncoderStream extends QPEncoderStream {
-
-    private String specials;
-    private static String WORD_SPECIALS = "=_?\"#$%&'(),.:;<>@[\\]^`{|}~";
-    private static String TEXT_SPECIALS = "=_?";
-
-    /**
-     * Create a Q encoder that encodes the specified input stream
-     * @param out        the output stream
-     * @param encodingWord true if we are Q-encoding a word within a
-     *                  phrase.
-     */
-    public QEncoderStream(OutputStream out, boolean encodingWord) {
-        super(out, Integer.MAX_VALUE); // MAX_VALUE is 2^31, should
-                                       // suffice (!) to indicate that
-                                       // CRLFs should not be inserted
-                                       // when encoding rfc822 headers
-
-        // a RFC822 "word" token has more restrictions than a
-        // RFC822 "text" token.
-        specials = encodingWord ? WORD_SPECIALS : TEXT_SPECIALS;
-    }
-
-    /**
-     * Encodes the specified <code>byte</code> to this output stream.
-     * @param      c   the <code>byte</code>.
-     * @exception  IOException  if an I/O error occurs.
-     */
-    public void write(int c) throws IOException {
-        c = c & 0xff; // Turn off the MSB.
-        if (c == ' ')
-            output('_', false);
-        else if (c < 040 || c >= 0177 || specials.indexOf(c) >= 0)
-            // Encoding required.
-            output(c, true);
-        else // No encoding required
-            output(c, false);
-    }
-
-    /**
-     * Returns the length of the encoded version of this byte array.
-     */
-    public static int encodedLength(byte[] b, boolean encodingWord) {
-        int len = 0;
-        String specials = encodingWord ? WORD_SPECIALS: TEXT_SPECIALS;
-        for (int i = 0; i < b.length; i++) {
-            int c = b[i] & 0xff; // Mask off MSB
-            if (c < 040 || c >= 0177 || specials.indexOf(c) >= 0)
-                // needs encoding
-                len += 3; // Q-encoding is 1 -> 3 conversion
-            else
-                len++;
-        }
-        return len;
-    }
-
-    /**** begin TEST program ***
-    public static void main(String argv[]) throws Exception {
-        FileInputStream infile = new FileInputStream(argv[0]);
-        QEncoderStream encoder = new QEncoderStream(System.out);
-        int c;
-
-        while ((c = infile.read()) != -1)
-            encoder.write(c);
-        encoder.close();
-    }
-    *** end TEST program ***/
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QPDecoderStream.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,198 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)QPDecoderStream.java   1.9 02/04/02
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
-
-import java.io.*;
-
-/**
- * This class implements a QP Decoder. It is implemented as
- * a FilterInputStream, so one can just wrap this class around
- * any input stream and read bytes from this filter. The decoding
- * is done as the bytes are read out.
- *
- * @author John Mani
- */
-
-public class QPDecoderStream extends FilterInputStream {
-    protected byte[] ba = new byte[2];
-    protected int spaces = 0;
-
-    /**
-     * Create a Quoted Printable decoder that decodes the specified
-     * input stream.
-     * @param in        the input stream
-     */
-    public QPDecoderStream(InputStream in) {
-        super(new PushbackInputStream(in, 2)); // pushback of size=2
-    }
-
-    /**
-     * Read the next decoded byte from this input stream. The byte
-     * is returned as an <code>int</code> in the range <code>0</code>
-     * to <code>255</code>. If no byte is available because the end of
-     * the stream has been reached, the value <code>-1</code> is returned.
-     * This method blocks until input data is available, the end of the
-     * stream is detected, or an exception is thrown.
-     *
-     * @return     the next byte of data, or <code>-1</code> if the end of the
-     *             stream is reached.
-     * @exception  IOException  if an I/O error occurs.
-     */
-    public int read() throws IOException {
-        if (spaces > 0) {
-            // We have cached space characters, return one
-            spaces--;
-            return ' ';
-        }
-
-        int c = in.read();
-
-        if (c == ' ') {
-            // Got space, keep reading till we get a non-space char
-            while ((c = in.read()) == ' ')
-                spaces++;
-
-            if (c == '\r' || c == '\n' || c == -1)
-                // If the non-space char is CR/LF/EOF, the spaces we got
-                // so far is junk introduced during transport. Junk 'em.
-                spaces = 0;
-            else {
-                // The non-space char is NOT CR/LF, the spaces are valid.
-                ((PushbackInputStream)in).unread(c);
-                c = ' ';
-            }
-            return c; // return either <SPACE> or <CR/LF>
-        }
-        else if (c == '=') {
-            // QP Encoded atom. Decode the next two bytes
-            int a = in.read();
-
-            if (a == '\n') {
-                /* Hmm ... not really confirming QP encoding, but lets
-                 * allow this as a LF terminated encoded line .. and
-                 * consider this a soft linebreak and recurse to fetch
-                 * the next char.
-                 */
-                return read();
-            } else if (a == '\r') {
-                // Expecting LF. This forms a soft linebreak to be ignored.
-                int b = in.read();
-                if (b != '\n')
-                    /* Not really confirming QP encoding, but
-                     * lets allow this as well.
-                     */
-                    ((PushbackInputStream)in).unread(b);
-                return read();
-            } else if (a == -1) {
-                // Not valid QP encoding, but we be nice and tolerant here !
-                return -1;
-            } else {
-                ba[0] = (byte)a;
-                ba[1] = (byte)in.read();
-                try {
-                    return ASCIIUtility.parseInt(ba, 0, 2, 16);
-                } catch (NumberFormatException nex) {
-                    /*
-                    System.err.println(
-                        "Illegal characters in QP encoded stream: " +
-                        ASCIIUtility.toString(ba, 0, 2)
-                    );
-                    */
-
-                    ((PushbackInputStream)in).unread(ba);
-                    return c;
-                }
-            }
-        }
-        return c;
-    }
-
-    /**
-     * Reads up to <code>len</code> decoded bytes of data from this input stream
-     * into an array of bytes. This method blocks until some input is
-     * available.
-     * <p>
-     *
-     * @param      buf   the buffer into which the data is read.
-     * @param      off   the start offset of the data.
-     * @param      len   the maximum number of bytes read.
-     * @return     the total number of bytes read into the buffer, or
-     *             <code>-1</code> if there is no more data because the end of
-     *             the stream has been reached.
-     * @exception  IOException  if an I/O error occurs.
-     */
-    public int read(byte[] buf, int off, int len) throws IOException {
-        int i, c;
-        for (i = 0; i < len; i++) {
-            if ((c = read()) == -1) {
-                if (i == 0) // At end of stream, so we should
-                    i = -1; // return -1 , NOT 0.
-                break;
-            }
-            buf[off+i] = (byte)c;
-        }
-        return i;
-    }
-
-    /**
-     * Tests if this input stream supports marks. Currently this class
-     * does not support marks
-     */
-    public boolean markSupported() {
-        return false;
-    }
-
-    /**
-     * Returns the number of bytes that can be read from this input
-     * stream without blocking. The QP algorithm does not permit
-     * a priori knowledge of the number of bytes after decoding, so
-     * this method just invokes the <code>available</code> method
-     * of the original input stream.
-     */
-    public int available() throws IOException {
-        // This is bogus ! We don't really know how much
-        // bytes are available *after* decoding
-        return in.available();
-    }
-
-    /**** begin TEST program
-    public static void main(String argv[]) throws Exception {
-        FileInputStream infile = new FileInputStream(argv[0]);
-        QPDecoderStream decoder = new QPDecoderStream(infile);
-        int c;
-
-        while ((c = decoder.read()) != -1)
-            System.out.print((char)c);
-        System.out.println();
-    }
-    *** end TEST program ****/
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QPEncoderStream.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,199 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)QPEncoderStream.java   1.6 02/03/27
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
-
-import java.io.*;
-
-/**
- * This class implements a Quoted Printable Encoder. It is implemented as
- * a FilterOutputStream, so one can just wrap this class around
- * any output stream and write bytes into this filter. The Encoding
- * is done as the bytes are written out.
- *
- * @author John Mani
- */
-
-public class QPEncoderStream extends FilterOutputStream {
-    private int count = 0;      // number of bytes that have been output
-    private int bytesPerLine;   // number of bytes per line
-    private boolean gotSpace = false;
-    private boolean gotCR = false;
-
-    /**
-     * Create a QP encoder that encodes the specified input stream
-     * @param out        the output stream
-     * @param bytesPerLine  the number of bytes per line. The encoder
-     *                   inserts a CRLF sequence after this many number
-     *                   of bytes.
-     */
-    public QPEncoderStream(OutputStream out, int bytesPerLine) {
-        super(out);
-        // Subtract 1 to account for the '=' in the soft-return
-        // at the end of a line
-        this.bytesPerLine = bytesPerLine - 1;
-    }
-
-    /**
-     * Create a QP encoder that encodes the specified input stream.
-     * Inserts the CRLF sequence after outputting 76 bytes.
-     * @param out        the output stream
-     */
-    public QPEncoderStream(OutputStream out) {
-        this(out, 76);
-    }
-
-    /**
-     * Encodes <code>len</code> bytes from the specified
-     * <code>byte</code> array starting at offset <code>off</code> to
-     * this output stream.
-     *
-     * @param      b     the data.
-     * @param      off   the start offset in the data.
-     * @param      len   the number of bytes to write.
-     * @exception  IOException  if an I/O error occurs.
-     */
-    public void write(byte[] b, int off, int len) throws IOException {
-        for (int i = 0; i < len; i++)
-            write(b[off + i]);
-    }
-
-    /**
-     * Encodes <code>b.length</code> bytes to this output stream.
-     * @param      b   the data to be written.
-     * @exception  IOException  if an I/O error occurs.
-     */
-    public void write(byte[] b) throws IOException {
-        write(b, 0, b.length);
-    }
-
-    /**
-     * Encodes the specified <code>byte</code> to this output stream.
-     * @param      c   the <code>byte</code>.
-     * @exception  IOException  if an I/O error occurs.
-     */
-    public void write(int c) throws IOException {
-        c = c & 0xff; // Turn off the MSB.
-        if (gotSpace) { // previous character was <SPACE>
-            if (c == '\r' || c == '\n')
-                // if CR/LF, we need to encode the <SPACE> char
-                output(' ', true);
-            else // no encoding required, just output the char
-                output(' ', false);
-            gotSpace = false;
-        }
-
-        if (c == '\r') {
-            gotCR = true;
-            outputCRLF();
-        } else {
-            if (c == '\n') {
-                if (gotCR)
-                    // This is a CRLF sequence, we already output the
-                    // corresponding CRLF when we got the CR, so ignore this
-                    ;
-                else
-                    outputCRLF();
-            } else if (c == ' ') {
-                gotSpace = true;
-            } else if (c < 040 || c >= 0177 || c == '=')
-                // Encoding required.
-                output(c, true);
-            else // No encoding required
-                output(c, false);
-            // whatever it was, it wasn't a CR
-            gotCR = false;
-        }
-    }
-
-    /**
-     * Flushes this output stream and forces any buffered output bytes
-     * to be encoded out to the stream.
-     * @exception  IOException  if an I/O error occurs.
-     */
-    public void flush() throws IOException {
-        out.flush();
-    }
-
-    /**
-     * Forces any buffered output bytes to be encoded out to the stream
-     * and closes this output stream
-     */
-    public void close() throws IOException {
-        out.close();
-    }
-
-    private void outputCRLF() throws IOException {
-        out.write('\r');
-        out.write('\n');
-        count = 0;
-    }
-
-    // The encoding table
-    private final static char hex[] = {
-        '0','1', '2', '3', '4', '5', '6', '7',
-        '8','9', 'A', 'B', 'C', 'D', 'E', 'F'
-    };
-
-    protected void output(int c, boolean encode) throws IOException {
-        if (encode) {
-            if ((count += 3) > bytesPerLine) {
-                out.write('=');
-                out.write('\r');
-                out.write('\n');
-                count = 3; // set the next line's length
-            }
-            out.write('=');
-            out.write(hex[c >> 4]);
-            out.write(hex[c & 0xf]);
-        } else {
-            if (++count > bytesPerLine) {
-                out.write('=');
-                out.write('\r');
-                out.write('\n');
-                count = 1; // set the next line's length
-            }
-            out.write(c);
-        }
-    }
-
-    /**** begin TEST program ***
-    public static void main(String argv[]) throws Exception {
-        FileInputStream infile = new FileInputStream(argv[0]);
-        QPEncoderStream encoder = new QPEncoderStream(System.out);
-        int c;
-
-        while ((c = infile.read()) != -1)
-            encoder.write(c);
-        encoder.close();
-    }
-    *** end TEST program ***/
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/UUDecoderStream.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,257 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)UUDecoderStream.java   1.8 02/07/08
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
-
-import java.io.*;
-
-/**
- * This class implements a UUDecoder. It is implemented as
- * a FilterInputStream, so one can just wrap this class around
- * any input stream and read bytes from this filter. The decoding
- * is done as the bytes are read out.
- *
- * @author John Mani
- * @author Bill Shannon
- */
-
-public class UUDecoderStream extends FilterInputStream {
-    private String name;
-    private int mode;
-
-    private byte[] buffer;      // cache of decoded bytes
-    private int bufsize = 0;    // size of the cache
-    private int index = 0;      // index into the cache
-    private boolean gotPrefix = false;
-    private boolean gotEnd = false;
-    private LineInputStream lin;
-
-    /**
-     * Create a UUdecoder that decodes the specified input stream
-     * @param in        the input stream
-     */
-    public UUDecoderStream(InputStream in) {
-        super(in);
-        lin = new LineInputStream(in);
-        buffer = new byte[45]; // max decoded chars in a line = 45
-    }
-
-    /**
-     * Read the next decoded byte from this input stream. The byte
-     * is returned as an <code>int</code> in the range <code>0</code>
-     * to <code>255</code>. If no byte is available because the end of
-     * the stream has been reached, the value <code>-1</code> is returned.
-     * This method blocks until input data is available, the end of the
-     * stream is detected, or an exception is thrown.
-     *
-     * @return     next byte of data, or <code>-1</code> if the end of
-     *             stream is reached.
-     * @exception  IOException  if an I/O error occurs.
-     * @see        java.io.FilterInputStream#in
-     */
-
-    public int read() throws IOException {
-        if (index >= bufsize) {
-            readPrefix();
-            if (!decode())
-                return -1;
-            index = 0; // reset index into buffer
-        }
-        return buffer[index++] & 0xff; // return lower byte
-    }
-
-    public int read(byte[] buf, int off, int len) throws IOException {
-        int i, c;
-        for (i = 0; i < len; i++) {
-            if ((c = read()) == -1) {
-                if (i == 0) // At end of stream, so we should
-                    i = -1; // return -1, NOT 0.
-                break;
-            }
-            buf[off+i] = (byte)c;
-        }
-        return i;
-    }
-
-    public boolean markSupported() {
-        return false;
-    }
-
-    public int available() throws IOException {
-         // This is only an estimate, since in.available()
-         // might include CRLFs too ..
-         return ((in.available() * 3)/4 + (bufsize-index));
-    }
-
-    /**
-     * Get the "name" field from the prefix. This is meant to
-     * be the pathname of the decoded file
-     *
-     * @return     name of decoded file
-     * @exception  IOException  if an I/O error occurs.
-     */
-    public String getName() throws IOException {
-        readPrefix();
-        return name;
-    }
-
-    /**
-     * Get the "mode" field from the prefix. This is the permission
-     * mode of the source file.
-     *
-     * @return     permission mode of source file
-     * @exception  IOException  if an I/O error occurs.
-     */
-    public int getMode() throws IOException {
-        readPrefix();
-        return mode;
-    }
-
-    /**
-     * UUencoded streams start off with the line:
-     *  "begin <mode> <filename>"
-     * Search for this prefix and gobble it up.
-     */
-    private void readPrefix() throws IOException {
-        if (gotPrefix) // got the prefix
-            return;
-
-        String s;
-        for (;;) {
-            // read till we get the prefix: "begin MODE FILENAME"
-            s = lin.readLine(); // NOTE: readLine consumes CRLF pairs too
-            if (s == null)
-                throw new IOException("UUDecoder error: No Begin");
-            if (s.regionMatches(true, 0, "begin", 0, 5)) {
-                try {
-                    mode = Integer.parseInt(s.substring(6,9));
-                } catch (NumberFormatException ex) {
-                    throw new IOException("UUDecoder error: " + ex.toString());
-                }
-                name = s.substring(10);
-                gotPrefix = true;
-                return;
-            }
-        }
-    }
-
-    private boolean decode() throws IOException {
-
-        if (gotEnd)
-            return false;
-        bufsize = 0;
-        String line;
-        do {
-            line = lin.readLine();
-
-            /*
-             * Improperly encoded data sometimes omits the zero length
-             * line that starts with a space character, we detect the
-             * following "end" line here.
-             */
-            if (line == null)
-                throw new IOException("Missing End");
-            if (line.regionMatches(true, 0, "end", 0, 3)) {
-                gotEnd = true;
-                return false;
-            }
-        } while (line.length() == 0);
-        int count = line.charAt(0);
-        if (count < ' ')
-            throw new IOException("Buffer format error");
-
-        /*
-         * The first character in a line is the number of original (not
-         *  the encoded atoms) characters in the line. Note that all the
-         *  code below has to handle the <SPACE> character that indicates
-         *  end of encoded stream.
-         */
-        count = (count - ' ') & 0x3f;
-
-        if (count == 0) {
-            line = lin.readLine();
-            if (line == null || !line.regionMatches(true, 0, "end", 0, 3))
-                throw new IOException("Missing End");
-            gotEnd = true;
-            return false;
-        }
-
-        int need = ((count * 8)+5)/6;
-//System.out.println("count " + count + ", need " + need + ", len " + line.length());
-        if (line.length() < need + 1)
-            throw new IOException("Short buffer error");
-
-        int i = 1;
-        byte a, b;
-        /*
-         * A correct uuencoder always encodes 3 characters at a time, even
-         * if there aren't 3 characters left.  But since some people out
-         * there have broken uuencoders we handle the case where they
-         * don't include these "unnecessary" characters.
-         */
-        while (bufsize < count) {
-            // continue decoding until we get 'count' decoded chars
-            a = (byte)((line.charAt(i++) - ' ') & 0x3f);
-            b = (byte)((line.charAt(i++) - ' ') & 0x3f);
-            buffer[bufsize++] = (byte)(((a << 2) & 0xfc) | ((b >>> 4) & 3));
-
-            if (bufsize < count) {
-                a = b;
-                b = (byte)((line.charAt(i++) - ' ') & 0x3f);
-                buffer[bufsize++] =
-                                (byte)(((a << 4) & 0xf0) | ((b >>> 2) & 0xf));
-            }
-
-            if (bufsize < count) {
-                a = b;
-                b = (byte)((line.charAt(i++) - ' ') & 0x3f);
-                buffer[bufsize++] = (byte)(((a << 6) & 0xc0) | (b & 0x3f));
-            }
-        }
-        return true;
-    }
-
-    /*** begin TEST program *****
-    public static void main(String argv[]) throws Exception {
-        FileInputStream infile = new FileInputStream(argv[0]);
-        UUDecoderStream decoder = new UUDecoderStream(infile);
-        int c;
-
-        try {
-            while ((c = decoder.read()) != -1)
-                System.out.write(c);
-            System.out.flush();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-    **** end TEST program ****/
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/UUEncoderStream.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,206 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @(#)UUEncoderStream.java   1.3 02/03/27
- */
-
-
-
-package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
-
-import java.io.*;
-
-/**
- * This class implements a UUEncoder. It is implemented as
- * a FilterOutputStream, so one can just wrap this class around
- * any output stream and write bytes into this filter. The Encoding
- * is done as the bytes are written out.
- *
- * @author John Mani
- */
-
-public class UUEncoderStream extends FilterOutputStream {
-    private byte[] buffer;      // cache of bytes that are yet to be encoded
-    private int bufsize = 0;    // size of the cache
-    private boolean wrotePrefix = false;
-
-    protected String name;      // name of file
-    protected int mode;         // permissions mode
-
-    /**
-     * Create a UUencoder that encodes the specified input stream
-     * @param out        the output stream
-     */
-    public UUEncoderStream(OutputStream out) {
-        this(out, "encoder.buf", 644);
-    }
-
-    /**
-     * Create a UUencoder that encodes the specified input stream
-     * @param out        the output stream
-     * @param name       Specifies a name for the encoded buffer
-     */
-    public UUEncoderStream(OutputStream out, String name) {
-        this(out, name, 644);
-    }
-
-    /**
-     * Create a UUencoder that encodes the specified input stream
-     * @param out        the output stream
-     * @param name       Specifies a name for the encoded buffer
-     * @param mode       Specifies permission mode for the encoded buffer
-     */
-    public UUEncoderStream(OutputStream out, String name, int mode) {
-        super(out);
-        this.name = name;
-        this.mode = mode;
-        buffer = new byte[45];
-    }
-
-    /**
-     * Set up the buffer name and permission mode.
-     * This method has any effect only if it is invoked before
-     * you start writing into the output stream
-     */
-    public void setNameMode(String name, int mode) {
-        this.name = name;
-        this.mode = mode;
-    }
-
-    public void write(byte[] b, int off, int len) throws IOException {
-        for (int i = 0; i < len; i++)
-            write(b[off + i]);
-    }
-
-    public void write(byte[] data) throws IOException {
-        write(data, 0, data.length);
-    }
-
-    public void write(int c) throws IOException {
-        /* buffer up characters till we get a line's worth, then encode
-         * and write them out. Max number of characters allowed per
-         * line is 45.
-         */
-        buffer[bufsize++] = (byte)c;
-        if (bufsize == 45) {
-            writePrefix();
-            encode();
-            bufsize = 0;
-        }
-    }
-
-    public void flush() throws IOException {
-        if (bufsize > 0) { // If there's unencoded characters in the buffer
-            writePrefix();
-            encode();      // .. encode them
-        }
-        writeSuffix();
-        out.flush();
-    }
-
-    public void close() throws IOException {
-        flush();
-        out.close();
-    }
-
-    /**
-     * Write out the prefix: "begin <mode> <name>"
-     */
-    private void writePrefix() throws IOException {
-        if (!wrotePrefix) {
-            PrintStream ps = new PrintStream(out);
-            ps.println("begin " + mode + " " + name);
-            ps.flush();
-            wrotePrefix = true;
-        }
-    }
-
-    /**
-     * Write a single line containing space and the suffix line
-     * containing the single word "end" (terminated by a newline)
-     */
-    private void writeSuffix() throws IOException {
-        PrintStream ps = new PrintStream(out);
-        ps.println(" \nend");
-        ps.flush();
-    }
-
-    /**
-     * Encode a line.
-     * Start off with the character count, followed by the encoded atoms
-     * and terminate with LF. (or is it CRLF or the local line-terminator ?)
-     * Take three bytes and encodes them into 4 characters
-     * If bufsize if not a multiple of 3, the remaining bytes are filled
-     * with '1'. This insures that the last line won't end in spaces
-     * and potentiallly be truncated.
-     */
-    private void encode() throws IOException {
-        byte a, b, c;
-        int c1, c2, c3, c4;
-        int i = 0;
-
-        // Start off with the count of characters in the line
-        out.write((bufsize & 0x3f) + ' ');
-
-        while (i < bufsize) {
-            a = buffer[i++];
-            if (i < bufsize) {
-                b = buffer[i++];
-                if (i < bufsize)
-                    c = buffer[i++];
-                else // default c to 1
-                    c = 1;
-            }
-            else { // default b & c to 1
-                b = 1;
-                c = 1;
-            }
-
-            c1 = (a >>> 2) & 0x3f;
-            c2 = ((a << 4) & 0x30) | ((b >>> 4) & 0xf);
-            c3 = ((b << 2) & 0x3c) | ((c >>> 6) & 0x3);
-            c4 = c & 0x3f;
-            out.write(c1 + ' ');
-            out.write(c2 + ' ');
-            out.write(c3 + ' ');
-            out.write(c4 + ' ');
-        }
-        // Terminate with LF. (should it be CRLF or local line-terminator ?)
-        out.write('\n');
-    }
-
-    /**** begin TEST program *****
-    public static void main(String argv[]) throws Exception {
-        FileInputStream infile = new FileInputStream(argv[0]);
-        UUEncoderStream encoder = new UUEncoderStream(System.out);
-        int c;
-
-        while ((c = infile.read()) != -1)
-            encoder.write(c);
-        encoder.close();
-    }
-    **** end TEST program *****/
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/AttachmentPartImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,612 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-
-import com.sun.xml.internal.messaging.saaj.packaging.mime.util.ASCIIUtility;
-
-import com.sun.xml.internal.messaging.saaj.packaging.mime.Header;
-import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimePartDataSource;
-import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.InternetHeaders;
-import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeBodyPart;
-import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeUtility;
-import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;
-import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ByteArrayInputStream;
-import java.io.OutputStream;
-import java.util.Iterator;
-import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.activation.*;
-import javax.xml.soap.*;
-import com.sun.xml.internal.org.jvnet.mimepull.MIMEPart;
-
-/**
- * Implementation of attachments.
- *
- * @author Anil Vijendran (akv@eng.sun.com)
- */
-public class AttachmentPartImpl extends AttachmentPart {
-
-    protected static final Logger log =
-        Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
-                         "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
-
-    private final MimeHeaders headers;
-    private MimeBodyPart rawContent = null;
-    private DataHandler dataHandler = null;
-
-    //alternate impl that uses a MIMEPart
-    private MIMEPart mimePart = null;
-
-    public AttachmentPartImpl() {
-        headers = new MimeHeaders();
-
-        // initialization from here should cover most of cases;
-        // if not, it would be necessary to call
-        //   AttachmentPartImpl.initializeJavaActivationHandlers()
-        // explicitly by programmer
-        initializeJavaActivationHandlers();
-    }
-
-    public AttachmentPartImpl(MIMEPart part) {
-        headers = new MimeHeaders();
-        mimePart = part;
-        List<? extends com.sun.xml.internal.org.jvnet.mimepull.Header> hdrs = part.getAllHeaders();
-        for (com.sun.xml.internal.org.jvnet.mimepull.Header hd : hdrs) {
-            headers.addHeader(hd.getName(), hd.getValue());
-        }
-    }
-
-    public int getSize() throws SOAPException {
-        if (mimePart != null) {
-            try {
-                return mimePart.read().available();
-            } catch (IOException e) {
-                return -1;
-            }
-        }
-        if ((rawContent == null) && (dataHandler == null))
-            return 0;
-
-        if (rawContent != null) {
-            try {
-                return rawContent.getSize();
-            } catch (Exception ex) {
-                log.log(
-                    Level.SEVERE,
-                    "SAAJ0573.soap.attachment.getrawbytes.ioexception",
-                    new String[] { ex.getLocalizedMessage()});
-                throw new SOAPExceptionImpl("Raw InputStream Error: " + ex);
-            }
-        } else {
-            ByteOutputStream bout = new ByteOutputStream();
-            try {
-                dataHandler.writeTo(bout);
-            } catch (IOException ex) {
-                log.log(
-                    Level.SEVERE,
-                    "SAAJ0501.soap.data.handler.err",
-                    new String[] { ex.getLocalizedMessage()});
-                throw new SOAPExceptionImpl("Data handler error: " + ex);
-            }
-            return bout.size();
-        }
-    }
-
-    public void clearContent() {
-        if (mimePart != null) {
-            mimePart.close();
-            mimePart = null;
-        }
-        dataHandler = null;
-        rawContent = null;
-    }
-
-    public Object getContent() throws SOAPException {
-        try {
-            if (mimePart != null) {
-                //return an inputstream
-                return mimePart.read();
-            }
-            if (dataHandler != null) {
-                return getDataHandler().getContent();
-            } else if (rawContent != null) {
-                return rawContent.getContent();
-            } else {
-                log.severe("SAAJ0572.soap.no.content.for.attachment");
-                throw new SOAPExceptionImpl("No data handler/content associated with this attachment");
-            }
-        } catch (Exception ex) {
-            log.log(Level.SEVERE, "SAAJ0575.soap.attachment.getcontent.exception", ex);
-            throw new SOAPExceptionImpl(ex.getLocalizedMessage());
-        }
-    }
-
-    public void setContent(Object object, String contentType)
-        throws IllegalArgumentException {
-        if (mimePart != null) {
-            mimePart.close();
-            mimePart = null;
-        }
-        DataHandler dh = new DataHandler(object, contentType);
-
-        setDataHandler(dh);
-    }
-
-
-    public DataHandler getDataHandler() throws SOAPException {
-        if (mimePart != null) {
-            //return an inputstream
-            return new DataHandler(new DataSource() {
-
-                public InputStream getInputStream() throws IOException {
-                    return mimePart.read();
-                }
-
-                public OutputStream getOutputStream() throws IOException {
-                    throw new UnsupportedOperationException("getOutputStream cannot be supported : You have enabled LazyAttachments Option");
-                }
-
-                public String getContentType() {
-                    return mimePart.getContentType();
-                }
-
-                public String getName() {
-                    return "MIMEPart Wrapper DataSource";
-                }
-            });
-        }
-        if (dataHandler == null) {
-            if (rawContent != null) {
-                return new DataHandler(new MimePartDataSource(rawContent));
-            }
-            log.severe("SAAJ0502.soap.no.handler.for.attachment");
-            throw new SOAPExceptionImpl("No data handler associated with this attachment");
-        }
-        return dataHandler;
-    }
-
-    public void setDataHandler(DataHandler dataHandler)
-        throws IllegalArgumentException {
-        if (mimePart != null) {
-            mimePart.close();
-            mimePart = null;
-        }
-        if (dataHandler == null) {
-            log.severe("SAAJ0503.soap.no.null.to.dataHandler");
-            throw new IllegalArgumentException("Null dataHandler argument to setDataHandler");
-        }
-        this.dataHandler = dataHandler;
-        rawContent = null;
-
-        if (log.isLoggable(Level.FINE))
-            log.log(Level.FINE, "SAAJ0580.soap.set.Content-Type",
-                    new String[] { dataHandler.getContentType() });
-        setMimeHeader("Content-Type", dataHandler.getContentType());
-    }
-
-    public void removeAllMimeHeaders() {
-        headers.removeAllHeaders();
-    }
-
-    public void removeMimeHeader(String header) {
-        headers.removeHeader(header);
-    }
-
-    public String[] getMimeHeader(String name) {
-        return headers.getHeader(name);
-    }
-
-    public void setMimeHeader(String name, String value) {
-        headers.setHeader(name, value);
-    }
-
-    public void addMimeHeader(String name, String value) {
-        headers.addHeader(name, value);
-    }
-
-    public Iterator getAllMimeHeaders() {
-        return headers.getAllHeaders();
-    }
-
-    public Iterator getMatchingMimeHeaders(String[] names) {
-        return headers.getMatchingHeaders(names);
-    }
-
-    public Iterator getNonMatchingMimeHeaders(String[] names) {
-        return headers.getNonMatchingHeaders(names);
-    }
-
-    boolean hasAllHeaders(MimeHeaders hdrs) {
-        if (hdrs != null) {
-            Iterator i = hdrs.getAllHeaders();
-            while (i.hasNext()) {
-                MimeHeader hdr = (MimeHeader) i.next();
-                String[] values = headers.getHeader(hdr.getName());
-                boolean found = false;
-
-                if (values != null) {
-                    for (int j = 0; j < values.length; j++)
-                        if (hdr.getValue().equalsIgnoreCase(values[j])) {
-                            found = true;
-                            break;
-                        }
-                }
-
-                if (!found) {
-                    return false;
-                }
-            }
-        }
-        return true;
-    }
-
-    MimeBodyPart getMimePart() throws SOAPException {
-        try {
-            if (this.mimePart != null) {
-                return new MimeBodyPart(mimePart);
-            }
-            if (rawContent != null) {
-                copyMimeHeaders(headers, rawContent);
-                return rawContent;
-            }
-
-            MimeBodyPart envelope = new MimeBodyPart();
-
-            envelope.setDataHandler(dataHandler);
-            copyMimeHeaders(headers, envelope);
-
-            return envelope;
-        } catch (Exception ex) {
-            log.severe("SAAJ0504.soap.cannot.externalize.attachment");
-            throw new SOAPExceptionImpl("Unable to externalize attachment", ex);
-        }
-    }
-
-    public static void copyMimeHeaders(MimeHeaders headers, MimeBodyPart mbp)
-        throws SOAPException {
-
-        Iterator i = headers.getAllHeaders();
-
-        while (i.hasNext())
-            try {
-                MimeHeader mh = (MimeHeader) i.next();
-
-                mbp.setHeader(mh.getName(), mh.getValue());
-            } catch (Exception ex) {
-                log.severe("SAAJ0505.soap.cannot.copy.mime.hdr");
-                throw new SOAPExceptionImpl("Unable to copy MIME header", ex);
-            }
-    }
-
-    public static void copyMimeHeaders(MimeBodyPart mbp, AttachmentPartImpl ap)
-        throws SOAPException {
-        try {
-            List hdr = mbp.getAllHeaders();
-            int sz = hdr.size();
-            for( int i=0; i<sz; i++ ) {
-                Header h = (Header)hdr.get(i);
-                if(h.getName().equalsIgnoreCase("Content-Type"))
-                    continue;   // skip
-                ap.addMimeHeader(h.getName(), h.getValue());
-            }
-        } catch (Exception ex) {
-            log.severe("SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment");
-            throw new SOAPExceptionImpl(
-                "Unable to copy MIME headers into attachment",
-                ex);
-        }
-    }
-
-    public  void setBase64Content(InputStream content, String contentType)
-        throws SOAPException {
-
-        if (mimePart != null) {
-            mimePart.close();
-            mimePart = null;
-        }
-        dataHandler = null;
-        InputStream decoded = null;
-        ByteOutputStream bos = null;
-        try {
-            decoded = MimeUtility.decode(content, "base64");
-            InternetHeaders hdrs = new InternetHeaders();
-            hdrs.setHeader("Content-Type", contentType);
-            //TODO: reading the entire attachment here is ineffcient. Somehow the MimeBodyPart
-            // Ctor with inputStream causes problems based on the InputStream
-            // has markSupported()==true
-            bos = new ByteOutputStream();
-            bos.write(decoded);
-            rawContent = new MimeBodyPart(hdrs, bos.getBytes(), bos.getCount());
-            setMimeHeader("Content-Type", contentType);
-        } catch (Exception e) {
-            log.log(Level.SEVERE, "SAAJ0578.soap.attachment.setbase64content.exception", e);
-            throw new SOAPExceptionImpl(e.getLocalizedMessage());
-        } finally {
-            if (bos != null)
-                bos.close();
-            try {
-                if (decoded != null)
-                decoded.close();
-            } catch (IOException ex) {
-                throw new SOAPException(ex);
-            }
-        }
-    }
-
-    public  InputStream getBase64Content() throws SOAPException {
-        InputStream stream;
-        if (mimePart != null) {
-            stream = mimePart.read();
-        } else if (rawContent != null) {
-            try {
-                 stream = rawContent.getInputStream();
-            } catch (Exception e) {
-                log.log(Level.SEVERE,"SAAJ0579.soap.attachment.getbase64content.exception", e);
-                throw new SOAPExceptionImpl(e.getLocalizedMessage());
-            }
-        } else if (dataHandler != null) {
-            try {
-                stream = dataHandler.getInputStream();
-            } catch (IOException e) {
-                log.severe("SAAJ0574.soap.attachment.datahandler.ioexception");
-                throw new SOAPExceptionImpl("DataHandler error" + e);
-            }
-        } else {
-            log.severe("SAAJ0572.soap.no.content.for.attachment");
-            throw new SOAPExceptionImpl("No data handler/content associated with this attachment");
-        }
-
-        //TODO: Write a BASE64EncoderInputStream instead,
-        // this code below is inefficient
-        // where we are trying to read the whole attachment first
-        int len;
-        int size = 1024;
-        byte [] buf;
-        if (stream != null) {
-            try {
-                ByteArrayOutputStream bos = new ByteArrayOutputStream(size);
-                //TODO: try and optimize this on the same lines as
-                // ByteOutputStream : to eliminate the temp buffer here
-                OutputStream ret = MimeUtility.encode(bos, "base64");
-                buf = new byte[size];
-                while ((len = stream.read(buf, 0, size)) != -1) {
-                    ret.write(buf, 0, len);
-                }
-                ret.flush();
-                buf = bos.toByteArray();
-                return new ByteArrayInputStream(buf);
-            } catch (Exception e) {
-                // throw new SOAPException
-                log.log(Level.SEVERE,"SAAJ0579.soap.attachment.getbase64content.exception", e);
-                throw new SOAPExceptionImpl(e.getLocalizedMessage());
-            } finally {
-                try {
-                    stream.close();
-                } catch (IOException ex) {
-                  //close the stream
-                }
-            }
-        } else {
-          //throw  new SOAPException
-          log.log(Level.SEVERE,"SAAJ0572.soap.no.content.for.attachment");
-          throw new SOAPExceptionImpl("No data handler/content associated with this attachment");
-        }
-    }
-
-    public void setRawContent(InputStream content, String contentType)
-        throws SOAPException {
-        if (mimePart != null) {
-            mimePart.close();
-            mimePart = null;
-        }
-        dataHandler = null;
-        ByteOutputStream bos = null;
-        try {
-            InternetHeaders hdrs = new InternetHeaders();
-            hdrs.setHeader("Content-Type", contentType);
-            //TODO: reading the entire attachment here is ineffcient. Somehow the MimeBodyPart
-            // Ctor with inputStream causes problems based on whether the InputStream has
-            // markSupported()==true or false
-            bos = new ByteOutputStream();
-            bos.write(content);
-            rawContent = new MimeBodyPart(hdrs, bos.getBytes(), bos.getCount());
-            setMimeHeader("Content-Type", contentType);
-        } catch (Exception e) {
-            log.log(Level.SEVERE, "SAAJ0576.soap.attachment.setrawcontent.exception", e);
-            throw new SOAPExceptionImpl(e.getLocalizedMessage());
-        } finally {
-            if (bos != null)
-                bos.close();
-            try {
-                content.close();
-            } catch (IOException ex) {
-                throw new SOAPException(ex);
-            }
-        }
-    }
-
-   /*
-    public void setRawContentBytes(byte[] content, String contentType)
-        throws SOAPException {
-        if (content == null) {
-            throw new SOAPExceptionImpl("Null content passed to setRawContentBytes");
-        }
-        dataHandler = null;
-        try {
-            InternetHeaders hdrs = new InternetHeaders();
-            hdrs.setHeader("Content-Type", contentType);
-            rawContent = new MimeBodyPart(hdrs, content, content.length);
-            setMimeHeader("Content-Type", contentType);
-        } catch (Exception e) {
-            log.log(Level.SEVERE, "SAAJ0576.soap.attachment.setrawcontent.exception", e);
-            throw new SOAPExceptionImpl(e.getLocalizedMessage());
-        }
-    } */
-
-    public void setRawContentBytes(
-        byte[] content, int off, int len, String contentType)
-        throws SOAPException {
-        if (mimePart != null) {
-            mimePart.close();
-            mimePart = null;
-        }
-        if (content == null) {
-            throw new SOAPExceptionImpl("Null content passed to setRawContentBytes");
-        }
-        dataHandler = null;
-        try {
-            InternetHeaders hdrs = new InternetHeaders();
-            hdrs.setHeader("Content-Type", contentType);
-            rawContent = new MimeBodyPart(hdrs, content, off, len);
-            setMimeHeader("Content-Type", contentType);
-        } catch (Exception e) {
-            log.log(Level.SEVERE,
-                "SAAJ0576.soap.attachment.setrawcontent.exception", e);
-            throw new SOAPExceptionImpl(e.getLocalizedMessage());
-        }
-    }
-
-    public  InputStream getRawContent() throws SOAPException {
-        if (mimePart != null) {
-            return mimePart.read();
-        }
-        if (rawContent != null) {
-            try {
-                return rawContent.getInputStream();
-            } catch (Exception e) {
-                log.log(Level.SEVERE,"SAAJ0577.soap.attachment.getrawcontent.exception", e);
-                throw new SOAPExceptionImpl(e.getLocalizedMessage());
-            }
-        } else if (dataHandler != null) {
-            try {
-                return dataHandler.getInputStream();
-            } catch (IOException e) {
-                log.severe("SAAJ0574.soap.attachment.datahandler.ioexception");
-                throw new SOAPExceptionImpl("DataHandler error" + e);
-            }
-        } else {
-            log.severe("SAAJ0572.soap.no.content.for.attachment");
-            throw new SOAPExceptionImpl("No data handler/content associated with this attachment");
-        }
-    }
-
-    public  byte[] getRawContentBytes() throws SOAPException {
-        InputStream ret;
-        if (mimePart != null) {
-            try {
-                ret = mimePart.read();
-                return ASCIIUtility.getBytes(ret);
-            } catch (IOException ex) {
-                log.log(Level.SEVERE,"SAAJ0577.soap.attachment.getrawcontent.exception", ex);
-                throw new SOAPExceptionImpl(ex);
-            }
-        }
-        if (rawContent != null) {
-            try {
-                ret = rawContent.getInputStream();
-                return ASCIIUtility.getBytes(ret);
-            } catch (Exception e) {
-                log.log(Level.SEVERE,"SAAJ0577.soap.attachment.getrawcontent.exception", e);
-                throw new SOAPExceptionImpl(e);
-            }
-        } else if (dataHandler != null) {
-            try {
-                ret = dataHandler.getInputStream();
-                return ASCIIUtility.getBytes(ret);
-            } catch (IOException e) {
-                log.severe("SAAJ0574.soap.attachment.datahandler.ioexception");
-                throw new SOAPExceptionImpl("DataHandler error" + e);
-            }
-        } else {
-            log.severe("SAAJ0572.soap.no.content.for.attachment");
-            throw new SOAPExceptionImpl("No data handler/content associated with this attachment");
-        }
-    }
-
-    // attachments are equal if they are the same reference
-    public boolean equals(Object o) {
-        return (this == o);
-    }
-
-    // In JDK 8 we get a warning if we implement equals() but not hashCode().
-    // There is no intuitive value for this, the default one in Object is fine.
-    public int hashCode() {
-        return super.hashCode();
-    }
-
-    public MimeHeaders getMimeHeaders() {
-        return headers;
-    }
-
-    public static void initializeJavaActivationHandlers() {
-        // DataHandler.writeTo() may search for DCH. So adding some default ones.
-        try {
-            CommandMap map = CommandMap.getDefaultCommandMap();
-            if (map instanceof MailcapCommandMap) {
-                MailcapCommandMap mailMap = (MailcapCommandMap) map;
-
-                // registering our DCH since javamail's DCH doesn't handle
-                if (!cmdMapInitialized(mailMap)) {
-                    mailMap.addMailcap("text/xml;;x-java-content-handler=com.sun.xml.internal.messaging.saaj.soap.XmlDataContentHandler");
-                    mailMap.addMailcap("application/xml;;x-java-content-handler=com.sun.xml.internal.messaging.saaj.soap.XmlDataContentHandler");
-                    mailMap.addMailcap("application/fastinfoset;;x-java-content-handler=com.sun.xml.internal.messaging.saaj.soap.FastInfosetDataContentHandler");
-                    //mailMap.addMailcap("multipart/*;;x-java-content-handler=com.sun.xml.internal.messaging.saaj.soap.MultipartDataContentHandler");
-                    mailMap.addMailcap("image/*;;x-java-content-handler=com.sun.xml.internal.messaging.saaj.soap.ImageDataContentHandler");
-                    mailMap.addMailcap("text/plain;;x-java-content-handler=com.sun.xml.internal.messaging.saaj.soap.StringDataContentHandler");
-                }
-            }
-        } catch (Throwable t) {
-            // ignore the exception.
-        }
-    }
-
-    private static boolean cmdMapInitialized(MailcapCommandMap mailMap) {
-
-        // checking fastinfoset handler, since this one is specific to SAAJ
-        CommandInfo[] commands = mailMap.getAllCommands("application/fastinfoset");
-        if (commands == null || commands.length == 0) {
-            return false;
-        }
-
-        String saajClassName = "com.sun.xml.internal.ws.binding.FastInfosetDataContentHandler";
-        for (CommandInfo command : commands) {
-            String commandClass = command.getCommandClass();
-            if (saajClassName.equals(commandClass)) {
-                return true;
-            }
-        }
-        return false;
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ContextClassloaderLocal.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.text.MessageFormat;
-import java.util.ResourceBundle;
-import java.util.WeakHashMap;
-
-/**
- * Simple utility ensuring that the value is cached only in case it is non-internal implementation
- */
-abstract class ContextClassloaderLocal<V> {
-
-    private static final String FAILED_TO_CREATE_NEW_INSTANCE = "FAILED_TO_CREATE_NEW_INSTANCE";
-
-    private WeakHashMap<ClassLoader, V> CACHE = new WeakHashMap<ClassLoader, V>();
-
-    public V get() throws Error {
-        ClassLoader tccl = getContextClassLoader();
-        V instance = CACHE.get(tccl);
-        if (instance == null) {
-            instance = createNewInstance();
-            CACHE.put(tccl, instance);
-        }
-        return instance;
-    }
-
-    public void set(V instance) {
-        CACHE.put(getContextClassLoader(), instance);
-    }
-
-    protected abstract V initialValue() throws Exception;
-
-    private V createNewInstance() {
-        try {
-            return initialValue();
-        } catch (Exception e) {
-            throw new Error(format(FAILED_TO_CREATE_NEW_INSTANCE, getClass().getName()), e);
-        }
-    }
-
-    private static String format(String property, Object... args) {
-        String text = ResourceBundle.getBundle(ContextClassloaderLocal.class.getName()).getString(property);
-        return MessageFormat.format(text, args);
-    }
-
-    private static ClassLoader getContextClassLoader() {
-        return (ClassLoader)
-                AccessController.doPrivileged(new PrivilegedAction() {
-                    public Object run() {
-                        ClassLoader cl = null;
-                        try {
-                            cl = Thread.currentThread().getContextClassLoader();
-                        } catch (SecurityException ex) {
-                        }
-                        return cl;
-                    }
-                });
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ContextClassloaderLocal.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-#
-# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-FAILED_TO_CREATE_NEW_INSTANCE=Failed to create new instance of {0}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/Envelope.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-import javax.xml.soap.SOAPEnvelope;
-import javax.xml.soap.SOAPException;
-import javax.xml.transform.Source;
-
-/**
- * Different implementations for SOAP Envelope must all implement this
- * interface.
- *
- * @author Anil Vijendran (akv@eng.sun.com)
- */
-public interface Envelope extends SOAPEnvelope {
-    /**
-     * Get the content as a JAXP Source.
-     */
-    Source getContent();
-
-    /**
-     * Output the content.
-     */
-    void output(OutputStream out) throws IOException;
-
-    /**
-     * Output the content.
-     */
-    void output(OutputStream out, boolean isFastInfoset) throws IOException;
-
-    void setStaxBridge(StaxBridge bridge) throws SOAPException;
-
-    StaxBridge getStaxBridge() throws SOAPException;
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/EnvelopeFactory.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,185 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import com.sun.xml.internal.messaging.saaj.LazyEnvelopeSource;
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-import com.sun.xml.internal.messaging.saaj.util.JAXMStreamSource;
-import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
-import com.sun.xml.internal.messaging.saaj.util.ParserPool;
-import com.sun.xml.internal.messaging.saaj.util.RejectDoctypeSaxFilter;
-import com.sun.xml.internal.messaging.saaj.util.transform.EfficientStreamingTransformer;
-import org.xml.sax.InputSource;
-import org.xml.sax.XMLReader;
-
-import javax.xml.parsers.SAXParser;
-import javax.xml.soap.SOAPException;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.transform.Source;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.dom.DOMResult;
-import javax.xml.transform.sax.SAXSource;
-import javax.xml.transform.stax.StAXSource;
-import javax.xml.transform.stream.StreamSource;
-import java.util.logging.Logger;
-
-/**
- * EnvelopeFactory creates SOAP Envelope objects using different
- * underlying implementations.
- */
-public class EnvelopeFactory {
-
-    protected static final Logger
-        log = Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
-        "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
-
-    private static ContextClassloaderLocal<ParserPool> parserPool =
-            new ContextClassloaderLocal<ParserPool>() {
-                @Override
-                protected ParserPool initialValue() throws Exception {
-                    return new ParserPool(5);
-                }
-            };
-
-    public static Envelope createEnvelope(Source src, SOAPPartImpl soapPart)
-        throws SOAPException
-    {
-            if (src instanceof JAXMStreamSource) {
-                try {
-                    if (!SOAPPartImpl.lazyContentLength) {
-                        ((JAXMStreamSource) src).reset();
-                    }
-                } catch (java.io.IOException ioe) {
-                    log.severe("SAAJ0515.source.reset.exception");
-                    throw new SOAPExceptionImpl(ioe);
-                }
-            }
-        if (src instanceof LazyEnvelopeSource) {
-          return lazy((LazyEnvelopeSource)src, soapPart);
-      }
-        if (soapPart.message.isLazySoapBodyParsing()) {
-            return parseEnvelopeStax(src, soapPart);
-        } else {
-            return parseEnvelopeSax(src, soapPart);
-        }
-    }
-
-    private static Envelope lazy(LazyEnvelopeSource src, SOAPPartImpl soapPart) throws SOAPException {
-            try {
-                StaxBridge staxBridge = new StaxLazySourceBridge(src, soapPart);
-                staxBridge.bridgeEnvelopeAndHeaders();
-            Envelope env = (Envelope) soapPart.getEnvelope();
-            env.setStaxBridge(staxBridge);
-            return env;
-        } catch (XMLStreamException e) {
-            throw new SOAPException(e);
-        }
-    }
-
-    static private XMLInputFactory xmlInputFactory = null;
-
-    private static Envelope parseEnvelopeStax(Source src, SOAPPartImpl soapPart)
-            throws SOAPException {
-        XMLStreamReader streamReader = null;
-        if (src instanceof StAXSource) {
-           streamReader = ((StAXSource) src).getXMLStreamReader();
-        }
-        try {
-            if (streamReader == null) {
-                if (xmlInputFactory == null) xmlInputFactory = XMLInputFactory.newInstance();
-                streamReader = xmlInputFactory.createXMLStreamReader(src);
-            }
-//            SaajStaxWriter saajWriter = new SaajStaxWriter(soapPart.message, soapPart.document);
-//            XMLStreamReaderToXMLStreamWriter readerWriterBridge = new XMLStreamReaderToXMLStreamWriter(
-//                    streamReader, saajWriter, soapPart.getSOAPNamespace());
-
-            StaxBridge readerWriterBridge = new StaxReaderBridge(streamReader, soapPart);
-            //bridge will stop reading at body element, and parse upon request, so save it
-            //on the envelope
-            readerWriterBridge.bridgeEnvelopeAndHeaders();
-
-            Envelope env = (Envelope) soapPart.getEnvelope();
-            env.setStaxBridge(readerWriterBridge);
-            return env;
-        } catch (Exception e) {
-            throw new SOAPException(e);
-        }
-    }
-    private static Envelope parseEnvelopeSax(Source src, SOAPPartImpl soapPart)
-            throws SOAPException {
-        // Insert SAX filter to disallow Document Type Declarations since
-        // they are not legal in SOAP
-        SAXParser saxParser = null;
-        if (src instanceof StreamSource) {
-            try {
-                saxParser = parserPool.get().get();
-            } catch (Exception e) {
-                log.severe("SAAJ0601.util.newSAXParser.exception");
-                throw new SOAPExceptionImpl(
-                    "Couldn't get a SAX parser while constructing a envelope",
-                    e);
-            }
-            InputSource is = SAXSource.sourceToInputSource(src);
-            if (is.getEncoding()== null && soapPart.getSourceCharsetEncoding() != null) {
-                is.setEncoding(soapPart.getSourceCharsetEncoding());
-            }
-            XMLReader rejectFilter;
-            try {
-                rejectFilter = new RejectDoctypeSaxFilter(saxParser);
-            } catch (Exception ex) {
-                log.severe("SAAJ0510.soap.cannot.create.envelope");
-                throw new SOAPExceptionImpl(
-                    "Unable to create envelope from given source: ",
-                    ex);
-            }
-            src = new SAXSource(rejectFilter, is);
-        }
-
-        try {
-            Transformer transformer =
-                EfficientStreamingTransformer.newTransformer();
-            DOMResult result = new DOMResult(soapPart);
-            transformer.transform(src, result);
-
-            Envelope env = (Envelope) soapPart.getEnvelope();
-            return env;
-        } catch (Exception ex) {
-            if (ex instanceof SOAPVersionMismatchException) {
-                throw (SOAPVersionMismatchException) ex;
-            }
-            log.severe("SAAJ0511.soap.cannot.create.envelope");
-            throw new SOAPExceptionImpl(
-                "Unable to create envelope from given source: ",
-                ex);
-        } finally {
-            if (saxParser != null) {
-                parserPool.get().returnParser(saxParser);
-            }
-        }
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/FastInfosetDataContentHandler.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import java.awt.datatransfer.DataFlavor;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.InputStream;
-
-import javax.activation.*;
-import javax.xml.transform.Source;
-
-import com.sun.xml.internal.messaging.saaj.util.FastInfosetReflection;
-
-/**
- * JAF data handler for Fast Infoset content
- *
- * @author Santiago Pericas-Geertsen
- */
-public class FastInfosetDataContentHandler implements DataContentHandler {
-    public static final String STR_SRC = "com.sun.xml.internal.org.jvnet.fastinfoset.FastInfosetSource";
-
-    public FastInfosetDataContentHandler() {
-    }
-
-    /**
-     * return the DataFlavors for this <code>DataContentHandler</code>
-     * @return The DataFlavors.
-     */
-    public DataFlavor[] getTransferDataFlavors() { // throws Exception;
-        DataFlavor flavors[] = new DataFlavor[1];
-        flavors[0] = new ActivationDataFlavor(
-                FastInfosetReflection.getFastInfosetSource_class(),
-                "application/fastinfoset", "Fast Infoset");
-        return flavors;
-    }
-
-    /**
-     * return the Transfer Data of type DataFlavor from InputStream
-     * @param df The DataFlavor.
-     * @param ins The InputStream corresponding to the data.
-     * @return The constructed Object.
-     */
-    public Object getTransferData(DataFlavor flavor, DataSource dataSource)
-        throws IOException
-    {
-        if (flavor.getMimeType().startsWith("application/fastinfoset")) {
-            try {
-                if (flavor.getRepresentationClass().getName().equals(STR_SRC)) {
-                    return FastInfosetReflection.FastInfosetSource_new(
-                        dataSource.getInputStream());
-                }
-            }
-            catch (Exception e) {
-                throw new IOException(e.getMessage());
-            }
-        }
-        return null;
-    }
-
-    public Object getContent(DataSource dataSource) throws IOException {
-        try {
-            return FastInfosetReflection.FastInfosetSource_new(
-                dataSource.getInputStream());
-        }
-        catch (Exception e) {
-            throw new IOException(e.getMessage());
-        }
-    }
-
-    /**
-     * construct an object from a byte stream
-     * (similar semantically to previous method, we are deciding
-     *  which one to support)
-     */
-    public void writeTo(Object obj, String mimeType, OutputStream os)
-        throws IOException
-    {
-        if (!mimeType.equals("application/fastinfoset")) {
-            throw new IOException("Invalid content type \"" + mimeType
-                + "\" for FastInfosetDCH");
-        }
-
-        try {
-            InputStream is = FastInfosetReflection.FastInfosetSource_getInputStream(
-                (Source) obj);
-
-            int n; byte[] buffer = new byte[4096];
-            while ((n = is.read(buffer)) != -1) {
-                os.write(buffer, 0, n);
-            }
-        }
-        catch (Exception ex) {
-            throw new IOException(
-                "Error copying FI source to output stream " + ex.getMessage());
-        }
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/GifDataContentHandler.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import java.awt.datatransfer.DataFlavor;
-import java.io.*;
-import java.awt.*;
-
-import javax.activation.*;
-
-/**
- * DataContentHandler for image/gif.
- *
- * @author Ana Lindstrom-Tamer
- */
-public class GifDataContentHandler extends Component implements DataContentHandler {
-    private static ActivationDataFlavor myDF =
-        new ActivationDataFlavor(
-            java.awt.Image.class,
-            "image/gif",
-            "GIF Image");
-
-    protected ActivationDataFlavor getDF() {
-        return myDF;
-    }
-
-    /**
-     * Return the DataFlavors for this <code>DataContentHandler</code>.
-     *
-     * @return The DataFlavors
-     */
-    public DataFlavor[] getTransferDataFlavors() { // throws Exception;
-        return new DataFlavor[] { getDF()};
-    }
-
-    /**
-     * Return the Transfer Data of type DataFlavor from InputStream.
-     *
-     * @param df The DataFlavor
-     * @param ins The InputStream corresponding to the data
-     * @return String object
-     */
-    public Object getTransferData(DataFlavor df, DataSource ds)
-        throws IOException {
-        // use myDF.equals to be sure to get ActivationDataFlavor.equals,
-        // which properly ignores Content-Type parameters in comparison
-        if (getDF().equals(df))
-            return getContent(ds);
-        else
-            return null;
-    }
-
-    public Object getContent(DataSource ds) throws IOException {
-        InputStream is = ds.getInputStream();
-        int pos = 0;
-        int count;
-        byte buf[] = new byte[1024];
-
-        while ((count = is.read(buf, pos, buf.length - pos)) != -1) {
-            pos += count;
-            if (pos >= buf.length) {
-                int size = buf.length;
-                if (size < 256*1024)
-                    size += size;
-                else
-                    size += 256*1024;
-                byte tbuf[] = new byte[size];
-                System.arraycopy(buf, 0, tbuf, 0, pos);
-                buf = tbuf;
-            }
-        }
-        Toolkit tk = Toolkit.getDefaultToolkit();
-        return tk.createImage(buf, 0, pos);
-    }
-
-    /**
-     * Write the object to the output stream, using the specified MIME type.
-     */
-    public void writeTo(Object obj, String type, OutputStream os)
-                        throws IOException {
-        if (obj != null && !(obj instanceof Image))
-            throw new IOException("\"" + getDF().getMimeType() +
-                "\" DataContentHandler requires Image object, " +
-                "was given object of type " + obj.getClass().toString());
-
-        throw new IOException(getDF().getMimeType() + " encoding not supported");
-    }
-
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ImageDataContentHandler.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,171 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import java.awt.*;
-import java.awt.datatransfer.DataFlavor;
-import java.awt.image.BufferedImage;
-import java.io.*;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.activation.*;
-import javax.imageio.ImageIO;
-import javax.imageio.ImageWriter;
-import javax.imageio.stream.ImageOutputStream;
-
-import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
-
-public class ImageDataContentHandler extends Component
-    implements DataContentHandler {
-
-    protected static final Logger log =
-        Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
-                         "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
-
-    private DataFlavor[] flavor;
-
-    public ImageDataContentHandler() {
-        String[] mimeTypes = ImageIO.getReaderMIMETypes();
-        flavor = new DataFlavor[mimeTypes.length];
-        for(int i=0; i < mimeTypes.length; i++) {
-            flavor[i] = new ActivationDataFlavor(
-                java.awt.Image.class, mimeTypes[i], "Image");
-        }
-    }
-
-    /**
-     * Returns an array of DataFlavor objects indicating the flavors the
-     * data can be provided in. The array should be ordered according to
-     * preference for providing the data (from most richly descriptive to
-     * least descriptive).
-     *
-     * @return The DataFlavors.
-     */
-    public DataFlavor[] getTransferDataFlavors() {
-        return (DataFlavor[]) Arrays.copyOf(flavor, flavor.length);
-    }
-
-    /**
-     * Returns an object which represents the data to be transferred.
-     * The class of the object returned is defined by the representation class
-     * of the flavor.
-     *
-     * @param df The DataFlavor representing the requested type.
-     * @param ds The DataSource representing the data to be converted.
-     * @return The constructed Object.
-     */
-    public Object getTransferData(DataFlavor df, DataSource ds)
-        throws IOException {
-        for (int i=0; i < flavor.length; i++) {
-            if (flavor[i].equals(df)) {
-                return getContent(ds);
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Return an object representing the data in its most preferred form.
-     * Generally this will be the form described by the first DataFlavor
-     * returned by the <code>getTransferDataFlavors</code> method.
-     *
-     * @param ds The DataSource representing the data to be converted.
-     * @return The constructed Object.
-     */
-    public Object getContent(DataSource ds) throws IOException {
-        return ImageIO.read(new BufferedInputStream(ds.getInputStream()));
-    }
-
-    /**
-     * Convert the object to a byte stream of the specified MIME type
-     * and write it to the output stream.
-     *
-     * @param obj   The object to be converted.
-     * @param mimeType  The requested MIME type of the resulting byte stream.
-     * @param os    The output stream into which to write the converted
-     *          byte stream.
-     */
-
-    public void writeTo(Object obj, String type, OutputStream os)
-        throws IOException {
-
-        try {
-            BufferedImage bufImage = null;
-            if (obj instanceof BufferedImage) {
-                bufImage = (BufferedImage)obj;
-            } else if (obj instanceof Image) {
-                bufImage = render((Image)obj);
-            } else {
-                log.log(Level.SEVERE,
-                    "SAAJ0520.soap.invalid.obj.type",
-                    new String[] { obj.getClass().toString() });
-                throw new IOException(
-                    "ImageDataContentHandler requires Image object, "
-                    + "was given object of type "
-                    + obj.getClass().toString());
-            }
-            ImageWriter writer = null;
-            Iterator i = ImageIO.getImageWritersByMIMEType(type);
-            if (i.hasNext()) {
-                writer = (ImageWriter)i.next();
-            }
-            if (writer != null) {
-                ImageOutputStream stream = null;
-                stream = ImageIO.createImageOutputStream(os);
-                writer.setOutput(stream);
-                writer.write(bufImage);
-                writer.dispose();
-                stream.close();
-            } else {
-                log.log(Level.SEVERE, "SAAJ0526.soap.unsupported.mime.type",
-                    new String[] { type });
-                throw new IOException("Unsupported mime type:"+ type);
-            }
-        } catch (Exception e) {
-            log.severe("SAAJ0525.soap.cannot.encode.img");
-            throw new IOException("Unable to encode the image to a stream "
-                + e.getMessage());
-        }
-    }
-
-
-    private BufferedImage render(Image img) throws InterruptedException {
-
-        MediaTracker tracker = new MediaTracker(this);
-        tracker.addImage(img, 0);
-        tracker.waitForAll();
-        BufferedImage bufImage = new BufferedImage(img.getWidth(null),
-            img.getHeight(null), BufferedImage.TYPE_INT_RGB);
-        Graphics g = bufImage.createGraphics();
-        g.drawImage(img, 0, 0, null);
-        g.dispose();
-        return bufImage;
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/JpegDataContentHandler.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,162 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import java.awt.*;
-import java.awt.datatransfer.DataFlavor;
-import java.awt.image.BufferedImage;
-import java.io.*;
-
-import javax.activation.*;
-
-//import com.sun.image.codec.jpeg.*;
-import javax.imageio.ImageIO;
-
-/**
- * JAF data handler for Jpeg content
- *
- * @author Ana Lindstrom-Tamer
- */
-
-public class JpegDataContentHandler
-    extends Component
-    implements DataContentHandler {
-    public static final String STR_SRC = "java.awt.Image";
-
-    /**
-     * return the DataFlavors for this <code>DataContentHandler</code>
-     * @return The DataFlavors.
-     */
-    public DataFlavor[] getTransferDataFlavors() { // throws Exception;
-        DataFlavor flavors[] = new DataFlavor[1];
-
-        try {
-            flavors[0] =
-                new ActivationDataFlavor(
-                    Class.forName(STR_SRC),
-                    "image/jpeg",
-                    "JPEG");
-        } catch (Exception e) {
-            System.out.println(e);
-        }
-
-        return flavors;
-    }
-
-    /**
-     * return the Transfer Data of type DataFlavor from InputStream
-     * @param df The DataFlavor.
-     * @param ins The InputStream corresponding to the data.
-     * @return The constructed Object.
-     */
-    public Object getTransferData(DataFlavor df, DataSource ds) {
-
-        // this is sort of hacky, but will work for the
-        // sake of testing...
-        if (df.getMimeType().startsWith("image/jpeg")) {
-            if (df.getRepresentationClass().getName().equals(STR_SRC)) {
-                InputStream inputStream = null;
-                BufferedImage jpegLoadImage = null;
-
-                try {
-                    inputStream = ds.getInputStream();
-                    jpegLoadImage = ImageIO.read(inputStream);
-
-                } catch (Exception e) {
-                    System.out.println(e);
-                }
-
-                return jpegLoadImage;
-            }
-        }
-        return null;
-    }
-
-    /**
-     *
-     */
-    public Object getContent(DataSource ds) { // throws Exception;
-        InputStream inputStream = null;
-        BufferedImage jpegLoadImage = null;
-
-        try {
-            inputStream = ds.getInputStream();
-            jpegLoadImage = ImageIO.read(inputStream);
-
-        } catch (Exception e) {
-        }
-
-        return (Image) jpegLoadImage;
-    }
-
-    /**
-     * construct an object from a byte stream
-     * (similar semantically to previous method, we are deciding
-     *  which one to support)
-     */
-    public void writeTo(Object obj, String mimeType, OutputStream os)
-        throws IOException {
-        if (!mimeType.equals("image/jpeg"))
-            throw new IOException(
-                "Invalid content type \""
-                    + mimeType
-                    + "\" for ImageContentHandler");
-
-        if (obj == null) {
-            throw new IOException("Null object for ImageContentHandler");
-        }
-
-        try {
-            BufferedImage bufImage = null;
-            if (obj instanceof BufferedImage) {
-                bufImage = (BufferedImage) obj;
-
-            } else {
-                Image img = (Image) obj;
-                MediaTracker tracker = new MediaTracker(this);
-                tracker.addImage(img, 0);
-                tracker.waitForAll();
-                if (tracker.isErrorAny()) {
-                        throw new IOException("Error while loading image");
-                }
-                bufImage =
-                    new BufferedImage(
-                        img.getWidth(null),
-                        img.getHeight(null),
-                        BufferedImage.TYPE_INT_RGB);
-
-                Graphics g = bufImage.createGraphics();
-                g.drawImage(img, 0, 0, null);
-            }
-            ImageIO.write(bufImage, "jpeg", os);
-
-        } catch (Exception ex) {
-            throw new IOException(
-                "Unable to run the JPEG Encoder on a stream "
-                    + ex.getMessage());
-        }
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LazyEnvelope.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.SOAPException;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.stream.XMLStreamWriter;
-
-public interface LazyEnvelope extends Envelope {
-    public XMLStreamReader getPayloadReader() throws SOAPException;
-    public boolean isLazy();
-    public void writeTo(XMLStreamWriter writer) throws XMLStreamException, SOAPException;
-
-    /**
-     * Retrieve payload qname without materializing its contents
-     * @return
-     * @throws SOAPException
-     */
-    public QName getPayloadQName() throws SOAPException;
-
-    /**
-     * Retrieve payload attribute value without materializing its contents
-     * @param localName
-     * @return
-     * @throws SOAPException
-     */
-    public String getPayloadAttributeValue(String localName) throws SOAPException;
-
-    /**
-     * Retrieve payload attribute value without materializing its contents
-     * @param qName
-     * @return
-     * @throws SOAPException
-     */
-    public String getPayloadAttributeValue(QName qName) throws SOAPException;
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for soap pkg
-# Error messages
-SAAJ0501.soap.data.handler.err=SAAJ0501: Data handler error: {0}
-SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: No data handler associated with this attachment
-SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: Null dataHandler argument to setDataHandler
-SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: Unable to externalize attachment
-SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: Unable to copy MIME header
-SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: Unable to copy MIME headers into attachment
-# Usage not found. TODO Remove
-#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0}
-SAAJ0508.soap.cannot.register.handlers=SAAJ050: Unable to register handlers in JAF command map
-
-SAAJ0510.soap.cannot.create.envelope=SAAJ0510: Unable to create envelope from given source
-SAAJ0511.soap.cannot.create.envelope=SAAJ0511: Unable to create envelope from given source
-SAAJ0512.soap.incorrect.factory.used=SAAJ0512: Unable to create envelope: incorrect factory used during tree construction
-SAAJ0513.soap.unknown.ns=SAAJ0513: Unable to create envelope from given source because the namespace was not recognized
-SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: Unable to create envelope from given source because the root element is not named Envelope
-SAAJ0515.source.reset.exception=SAAJ0515: Unable to reset the soap-part content source
-
-SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler requires Image object, but was given object of type {0}
-SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type set to {0}
-SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: Invalid content-type {0} for ImageContentHandler
-SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: Null object for ImageContentHandler
-SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: Unable to run the JPEG Encoder on a stream
-SAAJ0525.soap.cannot.encode.img=SAAJ0525: Unable to encode image to a stream
-SAAJ0526.soap.unsupported.mime.type=SAAJ0526: Unsupported mime type {0}
-
-SAAJ0530.soap.unknown.Content-Type=SAAJ0530: Unrecognized Content-Type
-SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: Unable to parse content type
-SAAJ0532.soap.no.Content-Type=SAAJ0532: Absent Content-Type
-SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: Cannot create message: incorrect content-type for SOAP version. Got {0}, but expected {1}
-SAAJ0534.soap.unknown.Content-Type=SAAJ0534: Unrecognized Content-Type
-SAAJ0535.soap.cannot.internalize.message=SAAJ0535: Unable to internalize message
-SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type needs to be Multipart/Related and with type=text/xml or application/soap+xml
-SAAJ0537.soap.invalid.content-type=SAAJ0537: Invalid Content-Type. Could be an error message instead of a SOAP message
-SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: Unable to convert SOAP message into a Multipart object
-SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: Unable to get header stream in saveChanges
-SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: Error during saving a multipart message
-SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: Could not complete operation. Fragment not bound to SOAP part
-SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: Processing Instructions are not allowed in SOAP documents
-SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: Entity References are not allowed in SOAP documents
-SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: Source does not have a valid Reader or InputStream
-SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: Error setting the source for SOAPPart
-SAAJ0546.soap.stream.incorrect.type=SAAJ0546: Internal error: stream not of the right type
-SAAJ0547.soap.cannot.externalize=SAAJ0547: Error while trying to externalize
-SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: Unable to externalize header
-SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: Bad Content-Type for SOAP Part {0}
-SAAJ0550.soap.null.headers=SAAJ0550: Cannot create message: Headers can't be null
-SAAJ0551.soap.unsupported.encoding=SAAJ0551: Unsupported encoding {0}
-SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: XML declaration parsing failed
-SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: renameNode on SOAPPart not supported
-SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: normalizeDocument on SOAPPart not supported
-SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: getDomConfig on SOAPPart not supported
-SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: adoptNode on SOAPPart not supported
-SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: setDocumentURI on SOAPPart not supported
-SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: getDocumentURI on SOAPPart not supported
-SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: setStrictErrorChecking on SOAPPart not supported
-SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: getInputEncoding on SOAPPart not supported
-SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: getXmlEncoding on SOAPPart not supported
-SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: getXmlStandalone on SOAPPart not supported
-SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: setXmlStandalone on SOAPPart not supported
-SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: getXmlVersion on SOAPPart not supported
-SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: setXmlVersion on SOAPPart not supported
-SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: getStrictErrorChecking on SOAPPart not supported
-# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement"
-SAAJ0567.soap.null.input=SAAJ0567: Null {0} argument to {1}
-SAAJ0568.soap.unsupported.protocol=SAAJ0568: Protocol {0} does not support {1}
-# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory"
-SAAJ0569.soap.unknown.protocol=SAAJ0569: Unknown Protocol {0} specified for creating {1}
-SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: The parent element of a soap part is not defined
-SAAJ0571.soappart.setValue.not.defined=SAAJ0571: Setting value of a soap part is not defined
-SAAJ0572.soap.no.content.for.attachment=SAAJ0572: No data handler/content associated with this attachment
-SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: IOException while reading the raw attachment content
-SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: IOException while trying to obtain the inputstream from datahandler for this attachment
-SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: Exception while trying to retrieve content for this attachment
-SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: Exception while trying to set the Raw content for this attachment
-SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: Exception while trying to get the Raw content for this attachment
-SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: Exception while trying to set the Decoded content for this attachment
-SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: Exception while trying to get the Encoded content for this attachment
-SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: Unable to locate attachment with cid {0}
-SAAJ0591.soap.exception.in.set.property=SAAJ0591: Exception {0}  when trying to set Property {1} on SOAP Message
-
-# Info messages
-SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type set to {0}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_de.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for soap pkg
-# Error messages
-SAAJ0501.soap.data.handler.err=SAAJ0501: Daten-Handler-Fehler: {0}
-SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: Es ist kein Daten-Handler mit diesem Anhang verkn\u00FCpft
-SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: Null-dataHandler-Argument f\u00FCr setDataHandler
-SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: Anhang kann nicht externalisiert werden
-SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: MIME-Header kann nicht kopiert werden
-SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: MIME-Header k\u00F6nnen nicht in Anhang kopiert werden
-# Usage not found. TODO Remove
-#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0}
-SAAJ0508.soap.cannot.register.handlers=SAAJ050: Handler k\u00F6nnen in JAF-Befehlszuordnung nicht registriert werden
-
-SAAJ0510.soap.cannot.create.envelope=SAAJ0510: Envelope kann nicht aus angegebener Quelle erstellt werden
-SAAJ0511.soap.cannot.create.envelope=SAAJ0511: Envelope kann nicht aus angegebener Quelle erstellt werden
-SAAJ0512.soap.incorrect.factory.used=SAAJ0512: Envelope kann nicht erstellt werden: falsche Factory bei der Erstellung der Baumstruktur verwendet
-SAAJ0513.soap.unknown.ns=SAAJ0513: Envelope kann nicht aus der angegebenen Quelle erstellt werden, weil der Namespace nicht erkannt wurde
-SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: Envelope kann nicht aus der angegebenen Quelle erstellt werden, weil das Root-Element nicht den Namen "Envelope" hat
-SAAJ0515.source.reset.exception=SAAJ0515: soap-part-Contentquelle kann nicht zur\u00FCckgesetzt werden
-
-SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler erfordert Imageobjekt, Objekt vom Typ {0} wurde jedoch angegeben
-SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type auf {0} festgelegt
-SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: Ung\u00FCltiger Content-Type {0} f\u00FCr ImageContentHandler
-SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: Null-Objekt f\u00FCr ImageContentHandler
-SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: JPEG-Encoder kann nicht in einem Stream ausgef\u00FChrt werden
-SAAJ0525.soap.cannot.encode.img=SAAJ0525: Image kann nicht in einem Stream codiert werden
-SAAJ0526.soap.unsupported.mime.type=SAAJ0526: Nicht unterst\u00FCtzter MIME-Typ {0}
-
-SAAJ0530.soap.unknown.Content-Type=SAAJ0530: Nicht erkannter Content-Type
-SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: Content-Type kann nicht geparst werden
-SAAJ0532.soap.no.Content-Type=SAAJ0532: Content-Type fehlt
-SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: Nachricht kann nicht erstellt werden: Falscher Content-Type f\u00FCr SOAP-Version. {0} erhalten, jedoch {1} erwartet
-SAAJ0534.soap.unknown.Content-Type=SAAJ0534: Nicht erkannter Content-Type
-SAAJ0535.soap.cannot.internalize.message=SAAJ0535: Nachricht kann nicht \"internalisiert\" werden.
-SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type muss Multipart/Related mit type=text/xml oder application/soap+xml sein
-SAAJ0537.soap.invalid.content-type=SAAJ0537: Ung\u00FCltiger Content-Type. K\u00F6nnte eine Fehlermeldung anstelle einer SOAP-Nachricht sein
-SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: SOAP-Nachricht kann nicht in ein Multipart-Objekt konvertiert werden
-SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: Header Stream in saveChanges kann nicht abgerufen werden
-SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: Fehler beim Speichern einer Multipart-Nachricht
-SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: Vorgang konnte nicht abgeschlossen werden. Fragment nicht an SOAP Part gebunden
-SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: Verarbeitungsanweisungen sind in SOAP-Dokumenten nicht zul\u00E4ssig
-SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: Entity-Referenzen sind in SOAP-Dokumenten nicht zul\u00E4ssig
-SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: Quelle hat keinen g\u00FCltigen Reader oder InputStream
-SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: Fehler beim Festlegen der Quelle f\u00FCr SOAPPart
-SAAJ0546.soap.stream.incorrect.type=SAAJ0546: Interner Fehler: Stream hat nicht den richtigen Typ
-SAAJ0547.soap.cannot.externalize=SAAJ0547: Fehler bei Externalisierungsversuch
-SAAJ0548.soap.cannot.externalize.hdr=SAAJ0504: Header kann nicht externalisiert werden
-SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: Ung\u00FCltiger Content-Type f\u00FCr SOAPPart {0}
-SAAJ0550.soap.null.headers=SAAJ0550: Nachricht kann nicht erstellt werden: Header d\u00FCrfen nicht null sein
-SAAJ0551.soap.unsupported.encoding=SAAJ0551: Nicht unterst\u00FCtzte Codierung {0}
-SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: Parsing von XML-Deklaration nicht erfolgreich
-SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: renameNode in SOAPPart nicht unterst\u00FCtzt
-SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: normalizeDocument in SOAPPart nicht unterst\u00FCtzt
-SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: getDomConfig in SOAPPart nicht unterst\u00FCtzt
-SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: adoptNode in SOAPPart nicht unterst\u00FCtzt
-SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: setDocumentURI in SOAPPart nicht unterst\u00FCtzt
-SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: getDocumentURI in SOAPPart nicht unterst\u00FCtzt
-SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: setStrictErrorChecking in SOAPPart nicht unterst\u00FCtzt
-SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: getInputEncoding in SOAPPart nicht unterst\u00FCtzt
-SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: getXmlEncoding in SOAPPart nicht unterst\u00FCtzt
-SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: getXmlStandalone in SOAPPart nicht unterst\u00FCtzt
-SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: setXmlStandalone in SOAPPart nicht unterst\u00FCtzt
-SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: getXmlVersion in SOAPPart nicht unterst\u00FCtzt
-SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: setXmlVersion in SOAPPart nicht unterst\u00FCtzt
-SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: getStrictErrorChecking in SOAPPart nicht unterst\u00FCtzt
-# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement"
-SAAJ0567.soap.null.input=SAAJ0567: Null-{0}-Argument f\u00FCr {1}
-SAAJ0568.soap.unsupported.protocol=SAAJ0568: Protokoll {0} unterst\u00FCtzt {1} nicht
-# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory"
-SAAJ0569.soap.unknown.protocol=SAAJ0569: Unbekanntes Protokoll {0} f\u00FCr Erstellung von {1} angegeben
-SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: Das \u00FCbergeordnete Element eines SOAPPart-Teils ist nicht definiert
-SAAJ0571.soappart.setValue.not.defined=SAAJ0571: Die Festlegung des Wertes eines SOAPPart-Teils ist nicht definiert
-SAAJ0572.soap.no.content.for.attachment=SAAJ0502: Es ist kein Daten-Handler/Content mit diesem Anhang verkn\u00FCpft
-SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: IOException beim Lesen des Raw-Anhangscontents
-SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: IOException beim Versuch, den Input Stream aus Daten-Handler f\u00FCr diesen Anhang abzurufen
-SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: Ausnahme beim Versuch, den Content f\u00FCr diesen Anhang abzurufen
-SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: Ausnahme beim Versuch, den Raw-Content f\u00FCr diesen Anhang festzulegen
-SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: Ausnahme beim Versuch, den Raw-Content f\u00FCr diesen Anhang abzurufen
-SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: Ausnahme beim Versuch, den decodierten Content f\u00FCr diesen Anhang festzulegen
-SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: Ausnahme beim Versuch, den decodierten Content f\u00FCr diesen Anhang abzurufen
-SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: Anhang mit CID {0} kann nicht gefunden werden
-SAAJ0591.soap.exception.in.set.property=SAAJ0591: Ausnahme {0} beim Versuch, Eigenschaft {1} in SOAP-Nachricht festzulegen
-
-# Info messages
-SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type auf {0} festgelegt
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_es.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for soap pkg
-# Error messages
-SAAJ0501.soap.data.handler.err=SAAJ0501: Error de manejador de datos: {0}
-SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: no hay ning\u00FAn manejador de datos asociado a este anexo
-SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: argumento dataHandler nulo para setDataHandler
-SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: no se ha podido externalizar el anexo
-SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: no se ha podido copiar la cabecera MIME
-SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: no se han podido copiar las cabeceras MIME en el anexo
-# Usage not found. TODO Remove
-#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0}
-SAAJ0508.soap.cannot.register.handlers=SAAJ050: no se han podido registrar los manejadores en la asignaci\u00F3n de comandos JAF
-
-SAAJ0510.soap.cannot.create.envelope=SAAJ0510: no se ha podido crear el elemento Envelope desde el origen especificado
-SAAJ0511.soap.cannot.create.envelope=SAAJ0511: no se ha podido crear el elemento Envelope desde el origen especificado
-SAAJ0512.soap.incorrect.factory.used=SAAJ0512: No se ha podido crear el elemento Envelope: se ha utilizado una f\u00E1brica incorrecta durante la construcci\u00F3n del \u00E1rbol
-SAAJ0513.soap.unknown.ns=SAAJ0513: no se ha podido crear el elemento Envelope desde el origen especificado, porque no se ha reconocido el espacio de nombres
-SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: no se ha podido crear el elemento Envelope desde el origen especificado, porque el elemento ra\u00EDz no se denomina Envelope
-SAAJ0515.source.reset.exception=SAAJ0515: no se ha podido restablecer el origen del contenido de la parte soap
-
-SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler necesita un objeto de imagen, pero se ha proporcionado un objeto de tipo {0}
-SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type est\u00E1 definido en {0}
-SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: Content-Type {0} no v\u00E1lido para ImageContentHandler
-SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: objeto nulo para ImageContentHandler
-SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: no se ha podido ejecutar el codificador JPEG en un flujo
-SAAJ0525.soap.cannot.encode.img=SAAJ0525: no se ha podido codificar la imagen en un flujo
-SAAJ0526.soap.unsupported.mime.type=SAAJ0526: tipo MIME no soportado {0}
-
-SAAJ0530.soap.unknown.Content-Type=SAAJ0530: Content-Type no reconocido
-SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: no se ha podido analizar el tipo de contenido
-SAAJ0532.soap.no.Content-Type=SAAJ0532: Content-Type ausente
-SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: No se puede crear el mensaje: content-type incorrecto para la versi\u00F3n de SOAP. Se ha obtenido {0}, pero se esperaba {1}
-SAAJ0534.soap.unknown.Content-Type=SAAJ0534: Content-Type no reconocido
-SAAJ0535.soap.cannot.internalize.message=SAAJ0535: no se ha podido internalizar el mensaje
-SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type tiene que ser Multipart/Related y con type=text/xml o application/soap+xml
-SAAJ0537.soap.invalid.content-type=SAAJ0537: Content-Type no v\u00E1lido. Podr\u00EDa ser un mensaje de error en lugar de un mensaje SOAP
-SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: no se ha podido convertir un mensaje SOAP en un objeto de varias partes
-SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: no se ha podido obtener el flujo de cabeceras en saveChanges
-SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: error al guardar un mensaje de varias partes
-SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: no se ha podido completar la operaci\u00F3n. El fragmento no est\u00E1 enlazado a la parte SOAP
-SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: no se permiten instrucciones de procesamiento en los documentos SOAP
-SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: no se permiten referencias a entidades en los documentos SOAP
-SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: el origen no tiene un Reader o InputStream v\u00E1lido
-SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: error al definir el origen para SOAPPart
-SAAJ0546.soap.stream.incorrect.type=SAAJ0546: Error interno: el flujo no es del tipo correcto
-SAAJ0547.soap.cannot.externalize=SAAJ0547: Error al intentar externalizar
-SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: no se ha podido externalizar la cabecera
-SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: Content-Type err\u00F3neo para la parte SOAP {0}
-SAAJ0550.soap.null.headers=SAAJ0550: no se puede crear el mensaje. Las cabeceras no pueden ser nulas
-SAAJ0551.soap.unsupported.encoding=SAAJ0551: codificaci\u00F3n no soportada {0}
-SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: fallo en el an\u00E1lisis de la declaraci\u00F3n XML
-SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: renameNode en SOAPPart no est\u00E1 soportado
-SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: normalizeDocument en SOAPPart no est\u00E1 soportado
-SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: getDomConfig en SOAPPart no est\u00E1 soportado
-SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: adoptNode en SOAPPart no est\u00E1 soportado
-SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: setDocumentURI en SOAPPart no est\u00E1 soportado
-SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: getDocumentURI en SOAPPart no est\u00E1 soportado
-SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: setStrictErrorChecking en SOAPPart no est\u00E1 soportado
-SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: getInputEncoding en SOAPPart no est\u00E1 soportado
-SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: getXmlEncoding en SOAPPart no est\u00E1 soportado
-SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: getXmlStandalone en SOAPPart no est\u00E1 soportado
-SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: setXmlStandalone en SOAPPart no est\u00E1 soportado
-SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: getXmlVersion en SOAPPart no est\u00E1 soportado
-SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: setXmlVersion en SOAPPart no est\u00E1 soportado
-SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: getStrictErrorChecking en SOAPPart no est\u00E1 soportado
-# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement"
-SAAJ0567.soap.null.input=SAAJ0567: argumento {0} nulo para {1}
-SAAJ0568.soap.unsupported.protocol=SAAJ0568: el protocolo {0} no soporta {1}
-# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory"
-SAAJ0569.soap.unknown.protocol=SAAJ0569: se ha especificado un protocolo {0} desconocido para crear {1}
-SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: no se ha definido el elemento principal de una parte soap
-SAAJ0571.soappart.setValue.not.defined=SAAJ0571: no se ha definido el valor de definici\u00F3n de una parte soap
-SAAJ0572.soap.no.content.for.attachment=SAAJ0572: no hay ning\u00FAn manejador/contenido asociado a este anexo
-SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: excepci\u00F3n de E/S al leer el contenido del anexo raw
-SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: excepci\u00F3n de E/S al intentar obtener el flujo de entrada desde el manejador de datos de este anexo
-SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: excepci\u00F3n al intentar recuperar el contenido de este anexo
-SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: excepci\u00F3n al intentar definir el contenido raw de este anexo
-SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: excepci\u00F3n al intentar obtener el contenido raw de este anexo
-SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: excepci\u00F3n al intentar definir el contenido descodificado de este anexo
-SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: excepci\u00F3n al intentar obtener el contenido codificado de este anexo
-SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: no se ha encontrado el anexo con el CID {0}
-SAAJ0591.soap.exception.in.set.property=SAAJ0591: excepci\u00F3n {0} al intentar definir la propiedad {1} en el mensaje SOAP
-
-# Info messages
-SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type definido en {0}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_fr.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for soap pkg
-# Error messages
-SAAJ0501.soap.data.handler.err=SAAJ0501 : erreur de gestionnaire de donn\u00E9es : {0}
-SAAJ0502.soap.no.handler.for.attachment=SAAJ0502 : aucun gestionnaire de donn\u00E9es associ\u00E9 \u00E0 cette pi\u00E8ce jointe
-SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503 : argument dataHandler NULL pour setDataHandler
-SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504 : impossible d'externaliser la pi\u00E8ce jointe
-SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505 : impossible de copier l'en-t\u00EAte MIME
-SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506 : impossible de copier les en-t\u00EAtes MIME dans la pi\u00E8ce jointe
-# Usage not found. TODO Remove
-#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0}
-SAAJ0508.soap.cannot.register.handlers=SAAJ050 : impossible d'inscrire les gestionnaires dans la mappe de commande JAF
-
-SAAJ0510.soap.cannot.create.envelope=SAAJ0510 : impossible de cr\u00E9er une enveloppe \u00E0 partir de la source donn\u00E9e
-SAAJ0511.soap.cannot.create.envelope=SAAJ0511 : impossible de cr\u00E9er une enveloppe \u00E0 partir de la source donn\u00E9e
-SAAJ0512.soap.incorrect.factory.used=SAAJ0512 : impossible de cr\u00E9er une enveloppe : fabrique incorrecte utilis\u00E9e lors de la construction de l'arborescence
-SAAJ0513.soap.unknown.ns=SAAJ0513 : impossible de cr\u00E9er une enveloppe \u00E0 partir de la source donn\u00E9e car l'espace de noms n'a pas \u00E9t\u00E9 reconnu
-SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514 : impossible de cr\u00E9er une enveloppe \u00E0 partir de la source donn\u00E9e car l'\u00E9l\u00E9ment racine n'est pas nomm\u00E9 Envelope
-SAAJ0515.source.reset.exception=SAAJ0515 : impossible de red\u00E9finir la source de contenu soap-part
-
-SAAJ0520.soap.invalid.obj.type=SAAJ0520 : DataContentHandler exige un objet de type Image, mais a re\u00E7u un objet de type {0}
-SAAJ0521.soap.set.Content-Type=SAAJ0521 : Content-Type d\u00E9fini sur {0}
-SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522 : content-type {0} non valide pour ImageContentHandler
-SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523 : objet NULL pour ImageContentHandler
-SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524 : impossible d'ex\u00E9cuter l'encodeur JPEG sur un flux
-SAAJ0525.soap.cannot.encode.img=SAAJ0525 : impossible d'encoder l'image en un flux
-SAAJ0526.soap.unsupported.mime.type=SAAJ0526 : type MIME {0} non pris en charge
-
-SAAJ0530.soap.unknown.Content-Type=SAAJ0530 : Content-Type non reconnu
-SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531 : impossible d'analyser le type de contenu
-SAAJ0532.soap.no.Content-Type=SAAJ0532 : Content-Type absent
-SAAJ0533.soap.incorrect.Content-Type=SAAJ0533 : impossible de cr\u00E9er un message : content-type incorrect pour la version SOAP. {0} obtenu, mais {1} attendu
-SAAJ0534.soap.unknown.Content-Type=SAAJ0534 : Content-Type non reconnu
-SAAJ0535.soap.cannot.internalize.message=SAAJ0535 : impossible d'internaliser le message
-SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536 : Content-Type doit \u00EAtre Multipart/Related et avec le type = text/xml ou application/soap+xml
-SAAJ0537.soap.invalid.content-type=SAAJ0537 : Content-Type non valide. Cela peut \u00EAtre un message d'erreur au lieu d'un message SOAP
-SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538 : impossible de convertir un message SOAP en objet Multipart
-SAAJ0539.soap.cannot.get.header.stream=SAAJ0539 : impossible d'obtenir un flux de donn\u00E9es d'en-t\u00EAte dans saveChanges
-SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540 : erreur lors de l'enregistrement d'un message Multipart
-SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541 : impossible de terminer l'op\u00E9ration. Fragment non li\u00E9 \u00E0 la partie SOAP
-SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542 : les instructions de traitement ne sont pas autoris\u00E9es dans les documents SOAP
-SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543 : les r\u00E9f\u00E9rences d'entit\u00E9 ne sont pas autoris\u00E9es dans les documents SOAP
-SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544 : la source n'a pas de processus de lecture ou d'InputStream valide
-SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545 : erreur lors de la d\u00E9finition de la source pour SOAPPart
-SAAJ0546.soap.stream.incorrect.type=SAAJ0546 : erreur interne : le type du flux n'est pas correct
-SAAJ0547.soap.cannot.externalize=SAAJ0547 : erreur lors de la tentative d'externalisation
-SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548 : impossible d'externaliser l'en-t\u00EAte
-SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549 : Content-Type incorrect pour la partie SOAP {0}
-SAAJ0550.soap.null.headers=SAAJ0550 : impossible de cr\u00E9er le message : les en-t\u00EAtes ne peuvent pas \u00EAtre NULL
-SAAJ0551.soap.unsupported.encoding=SAAJ0551 : encodage {0} non pris en charge
-SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552 : \u00E9chec de l'analyse de la d\u00E9claration XML
-SAAJ0553.soappart.renamenode.not.supported=SAAJ0553 : renameNode sur SOAPPart non pris en charge
-SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554 : normalizeDocument sur SOAPPart non pris en charge
-SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555 : getDomConfig sur SOAPPart non pris en charge
-SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556 : adoptNode sur SOAPPart non pris en charge
-SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557 : setDocumentURI sur SOAPPart non pris en charge
-SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558 : getDocumentURI sur SOAPPart non pris en charge
-SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559 : setStrictErrorChecking sur SOAPPart non pris en charge
-SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560 : getInputEncoding sur SOAPPart non pris en charge
-SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561 : getXmlEncoding sur SOAPPart non pris en charge
-SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562 : getXmlStandalone sur SOAPPart non pris en charge
-SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563 : setXmlStandalone sur SOAPPart non pris en charge
-SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564 : getXmlVersion sur SOAPPart non pris en charge
-SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565 : setXmlVersion sur SOAPPart non pris en charge
-SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566 : getStrictErrorChecking sur SOAPPart non pris en charge
-# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement"
-SAAJ0567.soap.null.input=SAAJ0567 : argument {0} NULL pour {1}
-SAAJ0568.soap.unsupported.protocol=SAAJ0568 : le protocole {0} ne prend pas en charge {1}
-# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory"
-SAAJ0569.soap.unknown.protocol=SAAJ0569 : protocole {0} inconnu indiqu\u00E9 pour la cr\u00E9ation de {1}
-SAAJ0570.soappart.parent.element.not.defined=SAAJ0570 : l'\u00E9l\u00E9ment parent d'une partie SOAP n'est pas d\u00E9fini
-SAAJ0571.soappart.setValue.not.defined=SAAJ0571 : la valeur de param\u00E8tre d'une partie SOAP n'est pas d\u00E9finie
-SAAJ0572.soap.no.content.for.attachment=SAAJ0572 : aucun contenu/gestionnaire de donn\u00E9es associ\u00E9 \u00E0 cette pi\u00E8ce jointe
-SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573 : exception d'E/S lors de la lecture du contenu de la pi\u00E8ce jointe raw
-SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574 : exception d'E/S lors de la tentative d'obtention du flux d'entr\u00E9e \u00E0 partir du gestionnaire de donn\u00E9es pour cette pi\u00E8ce jointe
-SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575 : exception lors de la tentative d'extraction du contenu pour cette pi\u00E8ce jointe
-SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576 : exception lors de la tentative de d\u00E9finition du contenu Raw pour cette pi\u00E8ce jointe
-SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577 : exception lors de la tentative d'obtention du contenu Raw pour cette pi\u00E8ce jointe
-SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578 : exception lors de la tentative de d\u00E9finition du contenu Decoded pour cette pi\u00E8ce jointe
-SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579 : exception lors de la tentative d'obtention du contenu Encoded pour cette pi\u00E8ce jointe
-SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590 : impossible de localiser la pi\u00E8ce jointe avec le CID {0}
-SAAJ0591.soap.exception.in.set.property=SAAJ0591 : exception {0} lors de la tentative de d\u00E9finition de la propri\u00E9t\u00E9 {1} sur le message SOAP
-
-# Info messages
-SAAJ0580.soap.set.Content-Type=SAAJ0580 : Content-Type d\u00E9fini sur {0}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_it.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for soap pkg
-# Error messages
-SAAJ0501.soap.data.handler.err=SAAJ0501: Errore dell''handler dei dati: {0}
-SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: Nessun handler dei dati associato a questo allegato
-SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: Argomento dataHandler nullo per setDataHandler
-SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: Impossibile esternalizzare l'allegato
-SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: Impossibile copiare l'intestazione MIME
-SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: Impossibile copiare le intestazioni MIME nell'allegato
-# Usage not found. TODO Remove
-#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0}
-SAAJ0508.soap.cannot.register.handlers=SAAJ050: Impossibile registrare gli handler nella mappa dei comandi JAF
-
-SAAJ0510.soap.cannot.create.envelope=SAAJ0510: Impossibile creare l'envelope dall'origine specificata
-SAAJ0511.soap.cannot.create.envelope=SAAJ0511: Impossibile creare l'envelope dall'origine specificata
-SAAJ0512.soap.incorrect.factory.used=SAAJ0512: Impossibile creare l'envelope: factory errato usato durante la costruzione della struttura
-SAAJ0513.soap.unknown.ns=SAAJ0513: Impossibile creare l'envelope dall'origine specificata poich\u00E9 lo spazio di nomi non \u00E8 stato riconosciuto
-SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: Impossibile creare l'envelope dall'origine specificata poich\u00E9 l'elemento radice non \u00E8 denominato Envelope
-SAAJ0515.source.reset.exception=SAAJ0515: Impossibile reimpostare l'origine del contenuto soap-part
-
-SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler richiede un oggetto di immagine, ma l''oggetto specificato \u00E8 di tipo {0}
-SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type impostato per {0}
-SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: Content-Type non valido {0} per ImageContentHandler
-SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: Oggetto nullo per ImageContentHandler
-SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: Impossibile eseguire il codificatore JPEG su un flusso
-SAAJ0525.soap.cannot.encode.img=SAAJ0525: Impossibile codificare l'immagine in un flusso
-SAAJ0526.soap.unsupported.mime.type=SAAJ0526: Tipo MIME {0} non supportato
-
-SAAJ0530.soap.unknown.Content-Type=SAAJ0530: Content-Type non riconosciuto
-SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: Impossibile analizzare il tipo di contenuto
-SAAJ0532.soap.no.Content-Type=SAAJ0532: Content-Type assente
-SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: Impossibile creare il messaggio: Content-Type errato per la versione SOAP. Ricevuto {0}, ma previsto {1}
-SAAJ0534.soap.unknown.Content-Type=SAAJ0534: Content-Type non riconosciuto
-SAAJ0535.soap.cannot.internalize.message=SAAJ0535: Impossibile rendere interno il messaggio
-SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type deve essere Multipart/Related e con type=text/xml
-SAAJ0537.soap.invalid.content-type=SAAJ0537: Content-Type non valido. Potrebbe essere un messaggio di errore anzich\u00E9 un messaggio SOAP
-SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: Impossibile convertire il messaggio SOAP in un oggetto Multipart
-SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: Impossibile recuperare il flusso di intestazioni in saveChanges
-SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: Errore durante il salvataggio di un messaggio multiparte
-SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: Impossibile completare l'operazione. Frammento non associato alla SOAP Part
-SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: Le istruzioni di elaborazione non sono consentite nei documenti SOAP
-SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: I riferimenti alle entit\u00E0 non sono consentiti nei documenti SOAP
-SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: L'origine non ha un lettore o un flusso di input valido
-SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: Errore di impostazione dell''origine per SOAPPart
-SAAJ0546.soap.stream.incorrect.type=SAAJ0546: Errore interno: flusso di tipo errato
-SAAJ0547.soap.cannot.externalize=SAAJ0547: Errore durante il tentativo di esternalizzazione
-SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: Impossibile esternalizzare l'intestazione
-SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: Content-Type non valido per SOAP Part {0}
-SAAJ0550.soap.null.headers=SAAJ0550: Impossibile creare il messaggio: le intestazioni non possono essere nulle
-SAAJ0551.soap.unsupported.encoding=SAAJ0551: Codifica {0} non supportata
-SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: Analisi della dichiarazione XML non riuscita
-SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: renameNode su SOAPPart non supportato
-SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: normalizeDocument su SOAPPart non supportato
-SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: getDomConfig su SOAPPart non supportato
-SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: adoptNode su SOAPPart non supportato
-SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: setDocumentURI su SOAPPart non supportato
-SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: getDocumentURI su SOAPPart non supportato
-SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: setStrictErrorChecking su SOAPPart non supportato
-SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: getInputEncoding su SOAPPart non supportato
-SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: getXmlEncoding su SOAPPart non supportato
-SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: getXmlStandalone su SOAPPart non supportato
-SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: setXmlStandalone su SOAPPart non supportato
-SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: getXmlVersion su SOAPPart non supportato
-SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: setXmlVersion su SOAPPart non supportato
-SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: getStrictErrorChecking su SOAPPart non supportato
-# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement"
-SAAJ0567.soap.null.input=SAAJ0567: Argomento {0} nullo a {1}
-SAAJ0568.soap.unsupported.protocol=SAAJ0568: Il protocollo {0} non supporta {1}
-# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory"
-SAAJ0569.soap.unknown.protocol=SAAJ0569: Protocollo sconosciuto {0} specificato per la creazione di {1}
-SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: L'elemento padre di una SOAP Part non \u00E8 definito
-SAAJ0571.soappart.setValue.not.defined=SAAJ0571: Il valore di impostazione di una SOAP Part non \u00E8 definito
-SAAJ0572.soap.no.content.for.attachment=SAAJ0572: Nessun handler dei dati/contenuto associato a questo allegato
-SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: IOException durante la lettura del contenuto dell'allegato di tipo RAW
-SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: IOException durante il tentativo di ottenere il flusso di input dall'handler dei dati per questo allegato
-SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: Eccezione durante il tentativo di recuperare il contenuto per questo allegato
-SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: Eccezione durante il tentativo di impostare il contenuto di tipo RAW per questo allegato
-SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: Eccezione durante il tentativo di recuperare il contenuto di tipo RAW per questo allegato
-SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: Eccezione durante il tentativo di impostare il contenuto decodificato per questo allegato
-SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: Eccezione durante il tentativo di recuperare il contenuto codificato per questo allegato
-SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: Impossibile trovare l''allegato con cid {0}
-SAAJ0591.soap.exception.in.set.property=SAAJ0591: Eccezione {0} durante il tentativo di impostare Property {1} su SOAP Message
-
-# Info messages
-SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type impostato per {0}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_ja.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for soap pkg
-# Error messages
-SAAJ0501.soap.data.handler.err=SAAJ0501: \u30C7\u30FC\u30BF\u30FB\u30CF\u30F3\u30C9\u30E9\u30FB\u30A8\u30E9\u30FC: {0}
-SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: \u3053\u306E\u6DFB\u4ED8\u306B\u30C7\u30FC\u30BF\u30FB\u30CF\u30F3\u30C9\u30E9\u304C\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u307E\u305B\u3093
-SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: setDataHandler\u306B\u5BFE\u3059\u308BdataHandler\u5F15\u6570\u304Cnull\u3067\u3059
-SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: \u6DFB\u4ED8\u3092\u5916\u90E8\u5316\u3067\u304D\u307E\u305B\u3093
-SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: MIME\u30D8\u30C3\u30C0\u30FC\u3092\u30B3\u30D4\u30FC\u3067\u304D\u307E\u305B\u3093
-SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: MIME\u30D8\u30C3\u30C0\u30FC\u3092\u6DFB\u4ED8\u306B\u30B3\u30D4\u30FC\u3067\u304D\u307E\u305B\u3093
-# Usage not found. TODO Remove
-#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0}
-SAAJ0508.soap.cannot.register.handlers=SAAJ050: JAF\u30B3\u30DE\u30F3\u30C9\u30FB\u30DE\u30C3\u30D7\u306B\u30CF\u30F3\u30C9\u30E9\u3092\u767B\u9332\u3067\u304D\u307E\u305B\u3093
-
-SAAJ0510.soap.cannot.create.envelope=SAAJ0510: \u7279\u5B9A\u306E\u30BD\u30FC\u30B9\u304B\u3089\u30A8\u30F3\u30D9\u30ED\u30FC\u30D7\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093
-SAAJ0511.soap.cannot.create.envelope=SAAJ0511: \u7279\u5B9A\u306E\u30BD\u30FC\u30B9\u304B\u3089\u30A8\u30F3\u30D9\u30ED\u30FC\u30D7\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093
-SAAJ0512.soap.incorrect.factory.used=SAAJ0512: \u30A8\u30F3\u30D9\u30ED\u30FC\u30D7\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093: \u30C4\u30EA\u30FC\u306E\u69CB\u7BC9\u4E2D\u306B\u7121\u52B9\u306A\u30D5\u30A1\u30AF\u30C8\u30EA\u304C\u4F7F\u7528\u3055\u308C\u307E\u3057\u305F
-SAAJ0513.soap.unknown.ns=SAAJ0513: \u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u304C\u8A8D\u8B58\u3055\u308C\u306A\u304B\u3063\u305F\u305F\u3081\u3001\u7279\u5B9A\u306E\u30BD\u30FC\u30B9\u304B\u3089\u30A8\u30F3\u30D9\u30ED\u30FC\u30D7\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093
-SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: \u30EB\u30FC\u30C8\u8981\u7D20\u306E\u540D\u524D\u304CEnvelope\u3067\u306F\u306A\u3044\u305F\u3081\u3001\u7279\u5B9A\u306E\u30BD\u30FC\u30B9\u304B\u3089\u30A8\u30F3\u30D9\u30ED\u30FC\u30D7\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093
-SAAJ0515.source.reset.exception=SAAJ0515: soap-part\u30B3\u30F3\u30C6\u30F3\u30C4\u30FB\u30BD\u30FC\u30B9\u3092\u30EA\u30BB\u30C3\u30C8\u3067\u304D\u307E\u305B\u3093
-
-SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler\u306B\u306FImage\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u5FC5\u8981\u3067\u3059\u304C\u3001\u30BF\u30A4\u30D7{0}\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F
-SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type\u304C{0}\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
-SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: ImageContentHandler\u306Econtent-type {0}\u304C\u7121\u52B9\u3067\u3059
-SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: ImageContentHandler\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304Cnull\u3067\u3059
-SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: \u30B9\u30C8\u30EA\u30FC\u30E0\u3067JPEG\u30A8\u30F3\u30B3\u30FC\u30C0\u3092\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093
-SAAJ0525.soap.cannot.encode.img=SAAJ0525: \u30A4\u30E1\u30FC\u30B8\u3092\u30B9\u30C8\u30EA\u30FC\u30E0\u306B\u30A8\u30F3\u30B3\u30FC\u30C9\u3067\u304D\u307E\u305B\u3093
-SAAJ0526.soap.unsupported.mime.type=SAAJ0526: MIME\u30BF\u30A4\u30D7{0}\u304C\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-
-SAAJ0530.soap.unknown.Content-Type=SAAJ0530: Content-Type\u304C\u8A8D\u8B58\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F
-SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: \u30B3\u30F3\u30C6\u30F3\u30C4\u30FB\u30BF\u30A4\u30D7\u3092\u89E3\u6790\u3067\u304D\u307E\u305B\u3093
-SAAJ0532.soap.no.Content-Type=SAAJ0532: Content-Type\u304C\u3042\u308A\u307E\u305B\u3093
-SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: \u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093: SOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u306Econtent-type\u304C\u7121\u52B9\u3067\u3059\u3002{0}\u304C\u53D6\u5F97\u3055\u308C\u307E\u3057\u305F\u304C\u3001{1}\u304C\u4E88\u671F\u3055\u308C\u307E\u3059
-SAAJ0534.soap.unknown.Content-Type=SAAJ0534: Content-Type\u304C\u8A8D\u8B58\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F
-SAAJ0535.soap.cannot.internalize.message=SAAJ0535: \u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u5185\u90E8\u5316\u3067\u304D\u307E\u305B\u3093
-SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type\u306FMultipart/Related\u3067\u3042\u308A\u3001type=text/xml\u307E\u305F\u306Fapplication/soap+xml\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
-SAAJ0537.soap.invalid.content-type=SAAJ0537: Content-Type\u304C\u7121\u52B9\u3067\u3059\u3002SOAP\u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u304B\u308F\u308A\u306B\u30A8\u30E9\u30FC\u30FB\u30E1\u30C3\u30BB\u30FC\u30B8\u306B\u306A\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059
-SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: SOAP\u30E1\u30C3\u30BB\u30FC\u30B8\u3092Multipart\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093
-SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: saveChanges\u3067\u30D8\u30C3\u30C0\u30FC\u30FB\u30B9\u30C8\u30EA\u30FC\u30E0\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093
-SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: multipart\u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u4FDD\u5B58\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
-SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: \u64CD\u4F5C\u3092\u5B8C\u4E86\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30D5\u30E9\u30B0\u30E1\u30F3\u30C8\u304CSOAP\u30D1\u30FC\u30C8\u306B\u30D0\u30A4\u30F3\u30C9\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: SOAP\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3067\u306F\u51E6\u7406\u547D\u4EE4\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
-SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: SOAP\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3067\u306F\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
-SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: \u30BD\u30FC\u30B9\u306B\u6709\u52B9\u306AReader\u307E\u305F\u306FInputStream\u304C\u3042\u308A\u307E\u305B\u3093
-SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: SOAPPart\u306E\u30BD\u30FC\u30B9\u3092\u8A2D\u5B9A\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
-SAAJ0546.soap.stream.incorrect.type=SAAJ0546: \u5185\u90E8\u30A8\u30E9\u30FC: \u30B9\u30C8\u30EA\u30FC\u30E0\u306E\u30BF\u30A4\u30D7\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093
-SAAJ0547.soap.cannot.externalize=SAAJ0547: \u5916\u90E8\u5316\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
-SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: \u30D8\u30C3\u30C0\u30FC\u3092\u5916\u90E8\u5316\u3067\u304D\u307E\u305B\u3093
-SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: SOAP\u30D1\u30FC\u30C8{0}\u306EContent-Type\u304C\u7121\u52B9\u3067\u3059
-SAAJ0550.soap.null.headers=SAAJ0550: \u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093: \u30D8\u30C3\u30C0\u30FC\u3092null\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-SAAJ0551.soap.unsupported.encoding=SAAJ0551: \u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0{0}\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: XML\u5BA3\u8A00\u306E\u89E3\u6790\u306B\u5931\u6557\u3057\u307E\u3057\u305F
-SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: SOAPPart\u306ErenameNode\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: SOAPPart\u306EnormalizeDocument\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: SOAPPart\u306EgetDomConfig\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: SOAPPart\u306EadoptNode\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: SOAPPart\u306EsetDocumentURI\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: SOAPPart\u306EgetDocumentURI\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: SOAPPart\u306EsetStrictErrorChecking\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: SOAPPart\u306EgetInputEncoding\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: SOAPPart\u306EgetXmlEncoding\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: SOAPPart\u306EgetXmlStandalone\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: SOAPPart\u306EsetXmlStandalone\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: SOAPPart\u306EgetXmlVersion\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: SOAPPart\u306EsetXmlVersion\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: SOAPPart\u306EgetStrictErrorChecking\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement"
-SAAJ0567.soap.null.input=SAAJ0567: {1}\u306B\u5BFE\u3059\u308B{0}\u5F15\u6570\u304Cnull\u3067\u3059
-SAAJ0568.soap.unsupported.protocol=SAAJ0568: \u30D7\u30ED\u30C8\u30B3\u30EB{0}\u306F{1}\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u305B\u3093
-# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory"
-SAAJ0569.soap.unknown.protocol=SAAJ0569: {1}\u306E\u4F5C\u6210\u306B\u5BFE\u3057\u3066\u4E0D\u660E\u306A\u30D7\u30ED\u30C8\u30B3\u30EB{0}\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F
-SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: SOAP\u30D1\u30FC\u30C8\u306E\u89AA\u8981\u7D20\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-SAAJ0571.soappart.setValue.not.defined=SAAJ0571: SOAP\u30D1\u30FC\u30C8\u306E\u8A2D\u5B9A\u5024\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-SAAJ0572.soap.no.content.for.attachment=SAAJ0572: \u3053\u306E\u6DFB\u4ED8\u306B\u30C7\u30FC\u30BF\u30FB\u30CF\u30F3\u30C9\u30E9/\u30B3\u30F3\u30C6\u30F3\u30C4\u304C\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u307E\u305B\u3093
-SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: raw\u6DFB\u4ED8\u30B3\u30F3\u30C6\u30F3\u30C4\u306E\u8AAD\u53D6\u308A\u4E2D\u306BIOException\u304C\u767A\u751F\u3057\u307E\u3057\u305F
-SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: \u3053\u306E\u6DFB\u4ED8\u306Edatahandler\u304B\u3089inputstream\u3092\u53D6\u5F97\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306BIOException\u304C\u767A\u751F\u3057\u307E\u3057\u305F
-SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: \u3053\u306E\u6DFB\u4ED8\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u53D6\u5F97\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F
-SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: \u3053\u306E\u6DFB\u4ED8\u306ERaw\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u8A2D\u5B9A\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F
-SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: \u3053\u306E\u6DFB\u4ED8\u306ERaw\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u53D6\u5F97\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F
-SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: \u3053\u306E\u6DFB\u4ED8\u306E\u30C7\u30B3\u30FC\u30C9\u3055\u308C\u305F\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u8A2D\u5B9A\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F
-SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: \u3053\u306E\u6DFB\u4ED8\u306E\u30A8\u30F3\u30B3\u30FC\u30C9\u3055\u308C\u305F\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u53D6\u5F97\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F
-SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: cid {0}\u306E\u6DFB\u4ED8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
-SAAJ0591.soap.exception.in.set.property=SAAJ0591: SOAP\u30E1\u30C3\u30BB\u30FC\u30B8\u3067\u30D7\u30ED\u30D1\u30C6\u30A3{1}\u3092\u8A2D\u5B9A\u3057\u3088\u3046\u3068\u3057\u305F\u3068\u304D\u306B\u4F8B\u5916{0}\u304C\u767A\u751F\u3057\u307E\u3057\u305F
-
-# Info messages
-SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type\u304C{0}\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_ko.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for soap pkg
-# Error messages
-SAAJ0501.soap.data.handler.err=SAAJ0501: \uB370\uC774\uD130 \uCC98\uB9AC\uAE30 \uC624\uB958: {0}
-SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uACFC \uC5F0\uAD00\uB41C \uB370\uC774\uD130 \uCC98\uB9AC\uAE30\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: setDataHandler\uC5D0 \uB300\uD55C dataHandler \uC778\uC218\uAC00 \uB110\uC785\uB2C8\uB2E4.
-SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: \uCCA8\uBD80 \uD30C\uC77C\uC744 \uC678\uBD80\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: MIME \uD5E4\uB354\uB97C \uBCF5\uC0AC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: MIME \uD5E4\uB354\uB97C \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uBCF5\uC0AC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-# Usage not found. TODO Remove
-#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0}
-SAAJ0508.soap.cannot.register.handlers=SAAJ050: JAF \uBA85\uB839 \uB9F5\uC5D0\uC11C \uCC98\uB9AC\uAE30\uB97C \uB4F1\uB85D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-
-SAAJ0510.soap.cannot.create.envelope=SAAJ0510: \uC81C\uACF5\uB41C \uC18C\uC2A4\uC5D0\uC11C Envelope\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0511.soap.cannot.create.envelope=SAAJ0511: \uC81C\uACF5\uB41C \uC18C\uC2A4\uC5D0\uC11C Envelope\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0512.soap.incorrect.factory.used=SAAJ0512: Envelope\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC74C: \uD2B8\uB9AC \uC0DD\uC131 \uC911 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC740 \uD329\uD1A0\uB9AC\uAC00 \uC0AC\uC6A9\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
-SAAJ0513.soap.unknown.ns=SAAJ0513: \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uB97C \uC778\uC2DD\uD560 \uC218 \uC5C6\uC5B4 \uC81C\uACF5\uB41C \uC18C\uC2A4\uC5D0\uC11C Envelope\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: \uB8E8\uD2B8 \uC694\uC18C\uAC00 Envelope\uB85C \uBA85\uBA85\uB418\uC9C0 \uC54A\uC544 \uC81C\uACF5\uB41C \uC18C\uC2A4\uC5D0\uC11C Envelope\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0515.source.reset.exception=SAAJ0515: soap-part \uCF58\uD150\uCE20 \uC18C\uC2A4\uB97C \uC7AC\uC124\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-
-SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler\uC5D0\uB294 \uC774\uBBF8\uC9C0 \uAC1D\uCCB4\uAC00 \uD544\uC694\uD558\uC9C0\uB9CC {0} \uC720\uD615\uC758 \uAC1D\uCCB4\uAC00 \uC81C\uACF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
-SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type\uC774 {0}(\uC73C)\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
-SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: ImageContentHandler\uC5D0 \uB300\uD55C content-type {0}\uC774(\uAC00) \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
-SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: ImageContentHandler\uC5D0 \uB300\uD55C \uAC1D\uCCB4\uAC00 \uB110\uC785\uB2C8\uB2E4.
-SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: \uC2A4\uD2B8\uB9BC\uC5D0\uC11C JPEG \uC778\uCF54\uB354\uB97C \uC2E4\uD589\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0525.soap.cannot.encode.img=SAAJ0525: \uC2A4\uD2B8\uB9BC\uC5D0 \uC774\uBBF8\uC9C0\uB97C \uC778\uCF54\uB529\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0526.soap.unsupported.mime.type=SAAJ0526: {0}\uC740(\uB294) \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uB294 mime \uC720\uD615\uC785\uB2C8\uB2E4.
-
-SAAJ0530.soap.unknown.Content-Type=SAAJ0530: \uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 Content-Type
-SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: \uCF58\uD150\uCE20 \uC720\uD615\uC758 \uAD6C\uBB38\uC744 \uBD84\uC11D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0532.soap.no.Content-Type=SAAJ0532: Content-Type\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: \uBA54\uC2DC\uC9C0\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC74C: SOAP \uBC84\uC804\uC5D0 \uB300\uD55C content-type\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. {0}\uC744(\uB97C) \uAC00\uC838\uC654\uC9C0\uB9CC {1}\uC774(\uAC00) \uD544\uC694\uD569\uB2C8\uB2E4.
-SAAJ0534.soap.unknown.Content-Type=SAAJ0534: \uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 Content-Type
-SAAJ0535.soap.cannot.internalize.message=SAAJ0535: \uBA54\uC2DC\uC9C0\uB97C \uB0B4\uBD80\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type\uC740 Multipart/Related\uC5EC\uC57C \uD558\uBA70 \uC720\uD615\uC774 text/xml \uB610\uB294 application/soap+xml\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
-SAAJ0537.soap.invalid.content-type=SAAJ0537: Content-Type\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. SOAP \uBA54\uC2DC\uC9C0\uAC00 \uC544\uB2CC \uC624\uB958 \uBA54\uC2DC\uC9C0\uC77C \uC218 \uC788\uC2B5\uB2C8\uB2E4.
-SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: SOAP \uBA54\uC2DC\uC9C0\uB97C Multipart \uAC1D\uCCB4\uB85C \uBCC0\uD658\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: saveChanges\uC5D0\uC11C \uD5E4\uB354 \uC2A4\uD2B8\uB9BC\uC744 \uAC00\uC838\uC62C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: Multipart \uBA54\uC2DC\uC9C0\uB97C \uC800\uC7A5\uD558\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
-SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: \uC791\uC5C5\uC744 \uC644\uB8CC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uB2E8\uD3B8\uC774 SOAP \uBD80\uBD84\uC5D0 \uBC14\uC778\uB4DC\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: \uC9C0\uCE68 \uCC98\uB9AC\uB294 SOAP \uBB38\uC11C\uC5D0\uC11C \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: \uC5D4\uD2F0\uD2F0 \uCC38\uC870\uB294 SOAP \uBB38\uC11C\uC5D0\uC11C \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: \uC18C\uC2A4\uC5D0 \uC801\uD569\uD55C \uC77D\uAE30 \uC7A5\uCE58 \uB610\uB294 InputStream\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: SOAPPart\uC5D0 \uB300\uD55C \uC18C\uC2A4\uB97C \uC124\uC815\uD558\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
-SAAJ0546.soap.stream.incorrect.type=SAAJ0546: \uB0B4\uBD80 \uC624\uB958: \uC2A4\uD2B8\uB9BC\uC758 \uC720\uD615\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-SAAJ0547.soap.cannot.externalize=SAAJ0547: \uC678\uBD80\uD654\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
-SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: \uD5E4\uB354\uB97C \uC678\uBD80\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: SOAP \uBD80\uBD84 {0}\uC5D0 \uB300\uD55C Content-Type\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
-SAAJ0550.soap.null.headers=SAAJ0550: \uBA54\uC2DC\uC9C0\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC74C: \uD5E4\uB354\uB294 \uB110\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0551.soap.unsupported.encoding=SAAJ0551: {0}\uC740(\uB294) \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uB294 \uC778\uCF54\uB529\uC785\uB2C8\uB2E4.
-SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: XML \uC120\uC5B8\uC758 \uAD6C\uBB38 \uBD84\uC11D\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
-SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: SOAPPart\uC758 renameNode\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: SOAPPart\uC758 normalizeDocument\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: SOAPPart\uC758 getDomConfig\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: SOAPPart\uC758 adoptNode\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: SOAPPart\uC758 setDocumentURI\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: SOAPPart\uC758 getDocumentURI\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: SOAPPart\uC758 setStrictErrorChecking\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: SOAPPart\uC758 getInputEncoding\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: SOAPPart\uC758 getXmlEncoding\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: SOAPPart\uC758 getXmlStandalone\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: SOAPPart\uC758 setXmlStandalone\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: SOAPPart\uC758 getXmlVersion\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: SOAPPart\uC758 setXmlVersion\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: SOAPPart\uC758 getStrictErrorChecking\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement"
-SAAJ0567.soap.null.input=SAAJ0567: {1}\uC5D0 \uB300\uD55C {0} \uC778\uC218\uAC00 \uB110\uC785\uB2C8\uB2E4.
-SAAJ0568.soap.unsupported.protocol=SAAJ0568: {0} \uD504\uB85C\uD1A0\uCF5C\uC740 {1}\uC744(\uB97C) \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory"
-SAAJ0569.soap.unknown.protocol=SAAJ0569: {1} \uC0DD\uC131\uC744 \uC704\uD574 \uC54C \uC218 \uC5C6\uB294 \uD504\uB85C\uD1A0\uCF5C {0}\uC774(\uAC00) \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
-SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: SOAP \uBD80\uBD84\uC758 \uC0C1\uC704 \uC694\uC18C\uAC00 \uC815\uC758\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
-SAAJ0571.soappart.setValue.not.defined=SAAJ0571: SOAP \uBD80\uBD84\uC758 \uC124\uC815 \uAC12\uC774 \uC815\uC758\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
-SAAJ0572.soap.no.content.for.attachment=SAAJ0572: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uACFC \uC5F0\uAD00\uB41C \uB370\uC774\uD130 \uCC98\uB9AC\uAE30/\uCF58\uD150\uCE20\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: \uC6D0\uC2DC \uCCA8\uBD80 \uD30C\uC77C \uCF58\uD150\uCE20\uB97C \uC77D\uB294 \uC911 IOException\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
-SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD574 \uB370\uC774\uD130 \uCC98\uB9AC\uAE30\uC5D0\uC11C \uC785\uB825 \uC2A4\uD2B8\uB9BC\uC744 \uAC00\uC838\uC624\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 IOException\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
-SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD55C \uCF58\uD150\uCE20\uB97C \uAC80\uC0C9\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
-SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD55C \uC6D0\uC2DC \uCF58\uD150\uCE20\uB97C \uC124\uC815\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
-SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD55C \uC6D0\uC2DC \uCF58\uD150\uCE20\uB97C \uAC00\uC838\uC624\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
-SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD55C \uB514\uCF54\uB529\uB41C \uCF58\uD150\uCE20\uB97C \uC124\uC815\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
-SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD55C \uC778\uCF54\uB529\uB41C \uCF58\uD150\uCE20\uB97C \uAC00\uC838\uC624\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
-SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: CID\uAC00 {0}\uC778 \uCCA8\uBD80 \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0591.soap.exception.in.set.property=SAAJ0591: SOAP \uBA54\uC2DC\uC9C0\uC5D0\uC11C {1} \uC18D\uC131\uC744 \uC124\uC815\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 {0} \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
-
-# Info messages
-SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type\uC774 {0}(\uC73C)\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_pt_BR.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for soap pkg
-# Error messages
-SAAJ0501.soap.data.handler.err=SAAJ0501: erro do handler de dados: {0}
-SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: n\u00E3o h\u00E1 handler de dados associado a este anexo
-SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: argumento dataHandler nulo para setDataHandler
-SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: n\u00E3o \u00E9 poss\u00EDvel externalizar o anexo
-SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: n\u00E3o \u00E9 poss\u00EDvel copiar o cabe\u00E7alho MIME
-SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: n\u00E3o \u00E9 poss\u00EDvel copiar cabe\u00E7alhos MIME no anexo
-# Usage not found. TODO Remove
-#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0}
-SAAJ0508.soap.cannot.register.handlers=SAAJ050: n\u00E3o \u00E9 poss\u00EDvel registrar os handlers no mapa de comando JAF
-
-SAAJ0510.soap.cannot.create.envelope=SAAJ0510: n\u00E3o \u00E9 poss\u00EDvel criar o envelope da origem fornecida
-SAAJ0511.soap.cannot.create.envelope=SAAJ0511: n\u00E3o \u00E9 poss\u00EDvel criar o envelope da origem fornecida
-SAAJ0512.soap.incorrect.factory.used=SAAJ0512: n\u00E3o \u00E9 poss\u00EDvel criar o envelope: factory incorreta usada durante a constru\u00E7\u00E3o da \u00E1rvore
-SAAJ0513.soap.unknown.ns=SAAJ0513: n\u00E3o \u00E9 poss\u00EDvel criar o envelope da origem fornecida porque o namespace n\u00E3o era reconhecido
-SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: n\u00E3o \u00E9 poss\u00EDvel criar o envelope da origem fornecida porque o elemento-raiz n\u00E3o \u00E9 um Envelope nomeado
-SAAJ0515.source.reset.exception=SAAJ0515: n\u00E3o \u00E9 poss\u00EDvel redefinir a origem de conte\u00FAdo da parte de soap
-
-SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler requer objeto da Imagem, mas foi fornecido o objeto do tipo {0}
-SAAJ0521.soap.set.Content-Type=SAAJ0521: Tipo de Conte\u00FAdo definido como {0}
-SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: tipo de conte\u00FAdo {0} inv\u00E1lido para ImageContentHandler
-SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: objeto nulo para ImageContentHandler
-SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: n\u00E3o \u00E9 poss\u00EDvel executar o Codificador JPEG em um fluxo
-SAAJ0525.soap.cannot.encode.img=SAAJ0525: n\u00E3o \u00E9 poss\u00EDvel codificar a imagem em um fluxo
-SAAJ0526.soap.unsupported.mime.type=SAAJ0526: tipo de mime {0} n\u00E3o suportado
-
-SAAJ0530.soap.unknown.Content-Type=SAAJ0530: tipo de Conte\u00FAdo N\u00E3o Reconhecido
-SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: n\u00E3o \u00E9 poss\u00EDvel fazer parse do tipo de conte\u00FAdo
-SAAJ0532.soap.no.Content-Type=SAAJ0532: tipo de Conte\u00FAdo Inexistente
-SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: n\u00E3o \u00E9 poss\u00EDvel criar a mensagem: tipo de conte\u00FAdo incorreto para a vers\u00E3o SOAP. Obteve {0}, mas esperava {1}
-SAAJ0534.soap.unknown.Content-Type=SAAJ0534: tipo de Conte\u00FAdo N\u00E3o Reconhecido
-SAAJ0535.soap.cannot.internalize.message=SAAJ0535: n\u00E3o \u00E9 poss\u00EDvel internalizar a mensagem
-SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: o Tipo de Conte\u00FAdo precisa ser de V\u00E1rias Partes/Relacionado com tipo=texto/xml ou aplica\u00E7\u00E3o/soap+xml
-SAAJ0537.soap.invalid.content-type=SAAJ0537: tipo de Conte\u00FAdo Inv\u00E1lido. Pode ser uma mensagem de erro, em vez de uma mensagem SOAP
-SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: n\u00E3o \u00E9 poss\u00EDvel converter a mensagem SOAP em um objeto de V\u00E1rias partes
-SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: n\u00E3o \u00E9 poss\u00EDvel obter fluxo do cabe\u00E7alho em saveChanges
-SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: erro ao salvar uma mensagem de v\u00E1rias partes
-SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: n\u00E3o foi poss\u00EDvel concluir a opera\u00E7\u00E3o. Fragmento n\u00E3o vinculado \u00E0 parte de SOAP
-SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: as instru\u00E7\u00F5es de processamento n\u00E3o s\u00E3o permitidas nos documentos de SOAP
-SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: refer\u00EAncias da entidade n\u00E3o s\u00E3o permitidas nos documentos SOAP
-SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: a origem n\u00E3o tem um Reader ou InputStream v\u00E1lido
-SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: erro ao definir a origem de SOAPPart
-SAAJ0546.soap.stream.incorrect.type=SAAJ0546: Erro interno: o fluxo n\u00E3o \u00E9 do tipo correto
-SAAJ0547.soap.cannot.externalize=SAAJ0547: erro ao tentar externalizar
-SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: n\u00E3o \u00E9 poss\u00EDvel externalizar o cabe\u00E7alho
-SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: tipo de Conte\u00FAdo Inv\u00E1lido para a Parte {0} de SOAP
-SAAJ0550.soap.null.headers=SAAJ0550: n\u00E3o \u00E9 poss\u00EDvel criar a mensagem: os cabe\u00E7alhos n\u00E3o podem ser nulos
-SAAJ0551.soap.unsupported.encoding=SAAJ0551: codifica\u00E7\u00E3o n\u00E3o suportada {0}
-SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: falha ao fazer parse da declara\u00E7\u00E3o XML
-SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: renameNode em SOAPPart n\u00E3o suportado
-SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: normalizeDocument em SOAPPart n\u00E3o suportado
-SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: getDomConfig em SOAPPart n\u00E3o suportado
-SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: adoptNode em SOAPPart n\u00E3o suportado
-SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: setDocumentURI em SOAPPart n\u00E3o suportado
-SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: getDocumentURI em SOAPPart n\u00E3o suportado
-SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: setStrictErrorChecking em SOAPPart n\u00E3o suportado
-SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: getInputEncoding em SOAPPart n\u00E3o suportado
-SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: getXmlEncoding em SOAPPart n\u00E3o suportado
-SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: getXmlStandalone em SOAPPart n\u00E3o suportado
-SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: setXmlStandalone em SOAPPart n\u00E3o suportado
-SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: getXmlVersion em SOAPPart n\u00E3o suportado
-SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: setXmlVersion em SOAPPart n\u00E3o suportado
-SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: getStrictErrorChecking em SOAPPart n\u00E3o suportado
-# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement"
-SAAJ0567.soap.null.input=SAAJ0567: argumento {0} nulo para {1}
-SAAJ0568.soap.unsupported.protocol=SAAJ0568: o protocolo {0} n\u00E3o suporta {1}
-# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory"
-SAAJ0569.soap.unknown.protocol=SAAJ0569: protocolo {0} Desconhecido especificado para criar {1}
-SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: o elemento pai da parte de soap n\u00E3o foi definido
-SAAJ0571.soappart.setValue.not.defined=SAAJ0571: o valor de defini\u00E7\u00E3o de uma parte de soap n\u00E3o foi definido
-SAAJ0572.soap.no.content.for.attachment=SAAJ0572: n\u00E3o h\u00E1 handler/conte\u00FAdo de dados associado a este anexo
-SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: IOException ao ler o conte\u00FAdo do anexo bruto
-SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: IOException ao tentar obter o inputstream de datahandler deste anexo
-SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: exce\u00E7\u00E3o ao tentar recuperar o conte\u00FAdo deste anexo
-SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: exce\u00E7\u00E3o ao tentar definir o conte\u00FAdo Bruto deste anexo
-SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: exce\u00E7\u00E3o ao tentar definir o conte\u00FAdo Bruto deste anexo
-SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: exce\u00E7\u00E3o ao tentar definir o conte\u00FAdo Decodificado deste anexo
-SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: exce\u00E7\u00E3o ao tentar obter o conte\u00FAdo Codificado deste anexo
-SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: n\u00E3o \u00E9 poss\u00EDvel localizar o anexo como o cid {0}
-SAAJ0591.soap.exception.in.set.property=SAAJ0591: exce\u00E7\u00E3o {0} ao tentar definir a Propriedade {1} na Mensagem SOAP
-
-# Info messages
-SAAJ0580.soap.set.Content-Type=SAAJ0580: Tipo de Conte\u00FAdo definido como {0}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_zh_CN.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for soap pkg
-# Error messages
-SAAJ0501.soap.data.handler.err=SAAJ0501: \u6570\u636E\u5904\u7406\u7A0B\u5E8F\u9519\u8BEF: {0}
-SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: \u6CA1\u6709\u4E0E\u6B64\u9644\u4EF6\u5173\u8054\u7684\u6570\u636E\u5904\u7406\u7A0B\u5E8F
-SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: setDataHandler \u7684 dataHandler \u53C2\u6570\u4E3A\u7A7A\u503C
-SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: \u65E0\u6CD5\u4F7F\u9644\u4EF6\u5916\u90E8\u5316
-SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: \u65E0\u6CD5\u590D\u5236 MIME \u6807\u5934
-SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: \u65E0\u6CD5\u5C06 MIME \u6807\u5934\u590D\u5236\u5230\u9644\u4EF6\u4E2D
-# Usage not found. TODO Remove
-#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0}
-SAAJ0508.soap.cannot.register.handlers=SAAJ050: \u65E0\u6CD5\u6CE8\u518C JAF \u547D\u4EE4\u6620\u5C04\u4E2D\u7684\u5904\u7406\u7A0B\u5E8F
-
-SAAJ0510.soap.cannot.create.envelope=SAAJ0510: \u65E0\u6CD5\u4ECE\u7ED9\u5B9A\u6E90\u521B\u5EFA\u4FE1\u5C01
-SAAJ0511.soap.cannot.create.envelope=SAAJ0511: \u65E0\u6CD5\u4ECE\u7ED9\u5B9A\u6E90\u521B\u5EFA\u4FE1\u5C01
-SAAJ0512.soap.incorrect.factory.used=SAAJ0512: \u65E0\u6CD5\u521B\u5EFA\u4FE1\u5C01: \u5728\u6811\u6784\u9020\u671F\u95F4\u4F7F\u7528\u7684\u5DE5\u5382\u4E0D\u6B63\u786E
-SAAJ0513.soap.unknown.ns=SAAJ0513: \u65E0\u6CD5\u4ECE\u7ED9\u5B9A\u6E90\u521B\u5EFA\u4FE1\u5C01, \u56E0\u4E3A\u65E0\u6CD5\u8BC6\u522B\u540D\u79F0\u7A7A\u95F4
-SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: \u65E0\u6CD5\u4ECE\u7ED9\u5B9A\u6E90\u521B\u5EFA\u4FE1\u5C01, \u56E0\u4E3A\u6839\u5143\u7D20\u4E0D\u662F\u547D\u540D\u7684\u4FE1\u5C01
-SAAJ0515.source.reset.exception=SAAJ0515: \u65E0\u6CD5\u91CD\u7F6E soap-part \u5185\u5BB9\u6E90
-
-SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler \u9700\u8981 Image \u5BF9\u8C61, \u4F46\u5374\u5F97\u5230\u7C7B\u578B\u4E3A{0}\u7684\u5BF9\u8C61
-SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type \u8BBE\u7F6E\u4E3A{0}
-SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: ImageContentHandler \u7684 content-type {0}\u65E0\u6548
-SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: ImageContentHandler \u7684\u5BF9\u8C61\u4E3A\u7A7A\u503C
-SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: \u65E0\u6CD5\u5728\u6D41\u4E0A\u8FD0\u884C JPEG \u7F16\u7801\u5668
-SAAJ0525.soap.cannot.encode.img=SAAJ0525: \u65E0\u6CD5\u5C06\u56FE\u50CF\u7F16\u7801\u4E3A\u6D41
-SAAJ0526.soap.unsupported.mime.type=SAAJ0526: \u4E0D\u652F\u6301\u7684 mime \u7C7B\u578B{0}
-
-SAAJ0530.soap.unknown.Content-Type=SAAJ0530: \u65E0\u6CD5\u8BC6\u522B\u7684 Content-Type
-SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: \u65E0\u6CD5\u89E3\u6790\u5185\u5BB9\u7C7B\u578B
-SAAJ0532.soap.no.Content-Type=SAAJ0532: \u7F3A\u5C11 Content-Type
-SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: \u65E0\u6CD5\u521B\u5EFA\u6D88\u606F: SOAP \u7248\u672C\u7684 content-type \u4E0D\u6B63\u786E\u3002\u5F97\u5230\u7684\u662F{0}, \u4F46\u5E94\u4E3A{1}
-SAAJ0534.soap.unknown.Content-Type=SAAJ0534: \u65E0\u6CD5\u8BC6\u522B\u7684 Content-Type
-SAAJ0535.soap.cannot.internalize.message=SAAJ0535: \u65E0\u6CD5\u4F7F\u6D88\u606F\u5185\u90E8\u5316
-SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type \u5FC5\u987B\u662F\u201C\u591A\u90E8\u5206/\u76F8\u5173\u201D\u5E76\u4E14\u5E26\u6709 type=text/xml \u6216 application/soap+xml
-SAAJ0537.soap.invalid.content-type=SAAJ0537: Content-Type \u65E0\u6548\u3002\u53EF\u4EE5\u662F\u9519\u8BEF\u6D88\u606F, \u4F46\u4E0D\u80FD\u662F SOAP \u6D88\u606F
-SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: \u65E0\u6CD5\u5C06 SOAP \u6D88\u606F\u8F6C\u6362\u4E3A\u591A\u90E8\u5206\u5BF9\u8C61
-SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: \u65E0\u6CD5\u5728 saveChanges \u4E2D\u83B7\u53D6\u6807\u5934\u6D41
-SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: \u4FDD\u5B58\u591A\u90E8\u5206\u6D88\u606F\u671F\u95F4\u51FA\u9519
-SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: \u65E0\u6CD5\u5B8C\u6210\u64CD\u4F5C\u3002\u7247\u6BB5\u672A\u7ED1\u5B9A\u5230 SOAP \u90E8\u5206
-SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: SOAP \u6587\u6863\u4E2D\u4E0D\u5141\u8BB8\u5904\u7406\u6307\u4EE4
-SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: SOAP \u6587\u6863\u4E2D\u4E0D\u5141\u8BB8\u5B9E\u4F53\u5F15\u7528
-SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: \u6E90\u6CA1\u6709\u6709\u6548\u7684\u8BFB\u8FDB\u7A0B\u6216 InputStream
-SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: \u4E3A SOAPPart \u8BBE\u7F6E\u6E90\u65F6\u51FA\u9519
-SAAJ0546.soap.stream.incorrect.type=SAAJ0546: \u5185\u90E8\u9519\u8BEF: \u6D41\u7684\u7C7B\u578B\u4E0D\u6B63\u786E
-SAAJ0547.soap.cannot.externalize=SAAJ0547: \u5C1D\u8BD5\u5916\u90E8\u5316\u65F6\u51FA\u9519
-SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: \u65E0\u6CD5\u4F7F\u6807\u5934\u5916\u90E8\u5316
-SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: SOAP \u90E8\u5206{0}\u7684 Content-Type \u9519\u8BEF
-SAAJ0550.soap.null.headers=SAAJ0550: \u65E0\u6CD5\u521B\u5EFA\u6D88\u606F: \u6807\u5934\u4E0D\u80FD\u4E3A\u7A7A\u503C
-SAAJ0551.soap.unsupported.encoding=SAAJ0551: \u4E0D\u652F\u6301\u7684\u7F16\u7801{0}
-SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: \u672A\u80FD\u89E3\u6790 XML \u58F0\u660E
-SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 renameNode
-SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 normalizeDocument
-SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getDomConfig
-SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 adoptNode
-SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 setDocumentURI
-SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getDocumentURI
-SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 setStrictErrorChecking
-SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getInputEncoding
-SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getXmlEncoding
-SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getXmlStandalone
-SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 setXmlStandalone
-SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getXmlVersion
-SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 setXmlVersion
-SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getStrictErrorChecking
-# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement"
-SAAJ0567.soap.null.input=SAAJ0567: {1}\u7684{0}\u53C2\u6570\u4E3A\u7A7A\u503C
-SAAJ0568.soap.unsupported.protocol=SAAJ0568: \u534F\u8BAE{0}\u4E0D\u652F\u6301{1}
-# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory"
-SAAJ0569.soap.unknown.protocol=SAAJ0569: \u6307\u5B9A\u7528\u4E8E\u521B\u5EFA{1}\u7684\u534F\u8BAE{0}\u672A\u77E5
-SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: \u672A\u5B9A\u4E49 soap \u90E8\u5206\u7684\u7236\u5143\u7D20
-SAAJ0571.soappart.setValue.not.defined=SAAJ0571: \u672A\u5B9A\u4E49 soap \u90E8\u5206\u7684\u8BBE\u7F6E\u503C
-SAAJ0572.soap.no.content.for.attachment=SAAJ0572: \u6CA1\u6709\u4E0E\u6B64\u9644\u4EF6\u5173\u8054\u7684\u6570\u636E\u5904\u7406\u7A0B\u5E8F/\u5185\u5BB9
-SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: \u8BFB\u53D6\u539F\u59CB\u9644\u4EF6\u5185\u5BB9\u65F6\u51FA\u73B0 IOException
-SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: \u5C1D\u8BD5\u4ECE\u6B64\u9644\u4EF6\u7684\u6570\u636E\u5904\u7406\u7A0B\u5E8F\u83B7\u53D6\u8F93\u5165\u6D41\u65F6\u51FA\u73B0 IOException
-SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: \u5C1D\u8BD5\u68C0\u7D22\u6B64\u9644\u4EF6\u7684\u5185\u5BB9\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF
-SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: \u5C1D\u8BD5\u8BBE\u7F6E\u6B64\u9644\u4EF6\u7684\u539F\u59CB\u5185\u5BB9\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF
-SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: \u5C1D\u8BD5\u83B7\u53D6\u6B64\u9644\u4EF6\u7684\u539F\u59CB\u5185\u5BB9\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF
-SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: \u5C1D\u8BD5\u8BBE\u7F6E\u6B64\u9644\u4EF6\u7684\u89E3\u7801\u5185\u5BB9\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF
-SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: \u5C1D\u8BD5\u83B7\u53D6\u6B64\u9644\u4EF6\u7684\u7F16\u7801\u5185\u5BB9\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF
-SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: \u65E0\u6CD5\u627E\u5230\u5177\u6709 cid {0} \u7684\u9644\u4EF6
-SAAJ0591.soap.exception.in.set.property=SAAJ0591: \u5C1D\u8BD5\u8BBE\u7F6E SOAP \u6D88\u606F\u7684\u5C5E\u6027{1}\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF{0}
-
-# Info messages
-SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type \u8BBE\u7F6E\u4E3A{0}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_zh_TW.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for soap pkg
-# Error messages
-SAAJ0501.soap.data.handler.err=SAAJ0501: \u8CC7\u6599\u8655\u7406\u7A0B\u5F0F\u932F\u8AA4: {0}
-SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: \u6C92\u6709\u8207\u6B64\u9644\u4EF6\u76F8\u95DC\u806F\u7684\u8CC7\u6599\u8655\u7406\u7A0B\u5F0F
-SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: setDataHandler \u7684 dataHandler \u5F15\u6578\u70BA\u7A7A\u503C
-SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: \u7121\u6CD5\u5C07\u9644\u4EF6\u5916\u90E8\u5316
-SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: \u7121\u6CD5\u8907\u88FD MIME \u6A19\u982D
-SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: \u7121\u6CD5\u5C07 MIME \u6A19\u982D\u8907\u88FD\u5230\u9644\u4EF6\u4E2D
-# Usage not found. TODO Remove
-#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0}
-SAAJ0508.soap.cannot.register.handlers=SAAJ050: \u7121\u6CD5\u5728 JAF \u547D\u4EE4\u5C0D\u61C9\u4E2D\u8A3B\u518A\u8655\u7406\u7A0B\u5F0F
-
-SAAJ0510.soap.cannot.create.envelope=SAAJ0510: \u7121\u6CD5\u5F9E\u6307\u5B9A\u7684\u4F86\u6E90\u5EFA\u7ACB\u9644\u52A0\u8A0A\u606F
-SAAJ0511.soap.cannot.create.envelope=SAAJ0511: \u7121\u6CD5\u5F9E\u6307\u5B9A\u7684\u4F86\u6E90\u5EFA\u7ACB\u9644\u52A0\u8A0A\u606F
-SAAJ0512.soap.incorrect.factory.used=SAAJ0512: \u7121\u6CD5\u5EFA\u7ACB\u9644\u52A0\u8A0A\u606F: \u5EFA\u69CB\u6A39\u72C0\u7D50\u69CB\u6642\u4F7F\u7528\u4E86\u4E0D\u6B63\u78BA\u7684\u8655\u7406\u7AD9
-SAAJ0513.soap.unknown.ns=SAAJ0513: \u7121\u6CD5\u5F9E\u6307\u5B9A\u7684\u4F86\u6E90\u5EFA\u7ACB\u9644\u52A0\u8A0A\u606F, \u56E0\u70BA\u7121\u6CD5\u8FA8\u8B58\u8A72\u547D\u540D\u7A7A\u9593
-SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: \u7121\u6CD5\u5F9E\u6307\u5B9A\u7684\u4F86\u6E90\u5EFA\u7ACB\u9644\u52A0\u8A0A\u606F, \u56E0\u70BA\u6839\u5143\u7D20\u4E0D\u662F\u6307\u5B9A\u7684 Envelope
-SAAJ0515.source.reset.exception=SAAJ0515: \u7121\u6CD5\u91CD\u8A2D soap-part \u5167\u5BB9\u4F86\u6E90
-
-SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler \u9700\u8981 Image \u7269\u4EF6, \u4F46\u662F\u63D0\u4F9B\u7684\u662F {0} \u985E\u578B\u7684\u7269\u4EF6
-SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type \u8A2D\u70BA {0}
-SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: ImageContentHandler \u7684 content-type {0} \u7121\u6548
-SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: ImageContentHandler \u7684\u7269\u4EF6\u70BA\u7A7A\u503C
-SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: \u7121\u6CD5\u5728\u4E32\u6D41\u4E0A\u57F7\u884C JPEG \u7DE8\u78BC\u5668
-SAAJ0525.soap.cannot.encode.img=SAAJ0525: \u7121\u6CD5\u5C07\u5F71\u50CF\u7DE8\u78BC\u70BA\u4E32\u6D41
-SAAJ0526.soap.unsupported.mime.type=SAAJ0526: \u4E0D\u652F\u63F4\u7684 MIME \u985E\u578B {0}
-
-SAAJ0530.soap.unknown.Content-Type=SAAJ0530: \u7121\u6CD5\u8FA8\u8B58\u7684 Content-Type
-SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: \u7121\u6CD5\u5256\u6790\u5167\u5BB9\u985E\u578B
-SAAJ0532.soap.no.Content-Type=SAAJ0532: \u7F3A\u5C11 Content-Type
-SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: \u7121\u6CD5\u5EFA\u7ACB\u8A0A\u606F: SOAP \u7248\u672C\u7684 content-type \u4E0D\u6B63\u78BA. \u5F97\u5230 {0}, \u4F46\u61C9\u8A72\u662F {1}
-SAAJ0534.soap.unknown.Content-Type=SAAJ0534: \u7121\u6CD5\u8FA8\u8B58\u7684 Content-Type
-SAAJ0535.soap.cannot.internalize.message=SAAJ0535: \u7121\u6CD5\u5C07\u8A0A\u606F\u5167\u90E8\u5316
-SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type \u5FC5\u9808\u662F Multipart/Related, \u4E14\u542B type=text/xml \u6216 application/soap+xml
-SAAJ0537.soap.invalid.content-type=SAAJ0537: \u7121\u6548\u7684 Content-Type. \u53EF\u80FD\u662F\u53D6\u4EE3 SOAP \u8A0A\u606F\u7684\u932F\u8AA4\u8A0A\u606F
-SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: \u7121\u6CD5\u5C07 SOAP \u8A0A\u606F\u8F49\u63DB\u70BA Multipart \u7269\u4EF6
-SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: \u7121\u6CD5\u81EA saveChanges \u53D6\u5F97\u6A19\u982D\u4E32\u6D41
-SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: \u5132\u5B58\u591A\u91CD\u90E8\u5206\u8A0A\u606F\u6642\u767C\u751F\u932F\u8AA4
-SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: \u7121\u6CD5\u5B8C\u6210\u4F5C\u696D. \u7247\u6BB5\u672A\u9023\u7D50\u81F3 SOAP \u90E8\u5206
-SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: SOAP \u6587\u4EF6\u4E2D\u4E0D\u5141\u8A31\u300C\u8655\u7406\u6307\u793A\u300D
-SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: SOPA \u6587\u4EF6\u4E2D\u4E0D\u5141\u8A31\u300C\u500B\u9AD4\u53C3\u7167\u300D
-SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: \u4F86\u6E90\u6C92\u6709\u6709\u6548\u7684 Reader \u6216 InputStream
-SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: \u8A2D\u5B9A SOAPPart \u7684\u4F86\u6E90\u6642\u767C\u751F\u932F\u8AA4
-SAAJ0546.soap.stream.incorrect.type=SAAJ0546: \u5167\u90E8\u932F\u8AA4: \u4E32\u6D41\u4E0D\u662F\u6B63\u78BA\u7684\u985E\u578B
-SAAJ0547.soap.cannot.externalize=SAAJ0547: \u5617\u8A66\u5916\u90E8\u5316\u6642\u767C\u751F\u932F\u8AA4
-SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: \u7121\u6CD5\u5C07\u6A19\u982D\u5916\u90E8\u5316
-SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: SOAP \u90E8\u5206 {0} \u7684 Content-Type \u932F\u8AA4
-SAAJ0550.soap.null.headers=SAAJ0550: \u7121\u6CD5\u5EFA\u7ACB\u8A0A\u606F: \u6A19\u982D\u4E0D\u5F97\u662F\u7A7A\u503C
-SAAJ0551.soap.unsupported.encoding=SAAJ0551: \u4E0D\u652F\u63F4\u7684\u7DE8\u78BC {0}
-SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: XML \u5BA3\u544A\u5256\u6790\u5931\u6557
-SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 renameNode
-SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 normalizeDocument
-SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getDomConfig
-SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 adoptNode
-SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 setDocumentURI
-SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getDocumentURI
-SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 setStrictErrorChecking
-SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getInputEncoding
-SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getXmlEncoding
-SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getXmlStandalone
-SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 setXmlStandalone
-SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getXmlVersion
-SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 setXmlVersion
-SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getStrictErrorChecking
-# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement"
-SAAJ0567.soap.null.input=SAAJ0567: {1} \u7684 {0} \u5F15\u6578\u662F\u7A7A\u503C
-SAAJ0568.soap.unsupported.protocol=SAAJ0568: \u5354\u5B9A {0} \u4E0D\u652F\u63F4 {1}
-# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory"
-SAAJ0569.soap.unknown.protocol=SAAJ0569: \u5EFA\u7ACB {1} \u6642\u6307\u5B9A\u4E86\u4E0D\u660E\u7684\u5354\u5B9A {0}
-SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: \u672A\u5B9A\u7FA9 SOAP \u90E8\u5206\u7684\u7236\u9805\u5143\u7D20
-SAAJ0571.soappart.setValue.not.defined=SAAJ0571: \u672A\u5B9A\u7FA9 SOAP \u90E8\u5206\u7684\u8A2D\u5B9A\u503C
-SAAJ0572.soap.no.content.for.attachment=SAAJ0572: \u6C92\u6709\u8207\u6B64\u9644\u4EF6\u76F8\u95DC\u806F\u7684\u8CC7\u6599\u8655\u7406\u7A0B\u5F0F/\u5167\u5BB9
-SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: \u8B80\u53D6\u539F\u59CB\u9644\u4EF6\u5167\u5BB9\u6642\u767C\u751F IOException
-SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: \u5617\u8A66\u5F9E\u6B64\u9644\u4EF6\u7684 datahandler \u53D6\u5F97 inputstream \u6642\u767C\u751F IOException
-SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: \u5617\u8A66\u64F7\u53D6\u6B64\u9644\u4EF6\u7684\u5167\u5BB9\u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1
-SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: \u5617\u8A66\u8A2D\u5B9A\u6B64\u9644\u4EF6\u7684\u539F\u59CB\u5167\u5BB9\u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1
-SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: \u5617\u8A66\u53D6\u5F97\u6B64\u9644\u4EF6\u7684\u539F\u59CB\u5167\u5BB9\u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1
-SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: \u5617\u8A66\u8A2D\u5B9A\u6B64\u9644\u4EF6\u7684\u89E3\u78BC\u5167\u5BB9\u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1
-SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: \u5617\u8A66\u53D6\u5F97\u6B64\u9644\u4EF6\u7684\u89E3\u78BC\u5167\u5BB9\u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1
-SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: \u627E\u4E0D\u5230 cid \u70BA {0} \u7684\u9644\u4EF6
-SAAJ0591.soap.exception.in.set.property=SAAJ0591: \u5617\u8A66\u5728 SOAP \u8A0A\u606F\u4E0A\u8A2D\u5B9A\u7279\u6027 {1} \u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1 {0}
-
-# Info messages
-SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type \u8A2D\u70BA {0}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/MessageFactoryImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import java.io.*;
-import java.util.logging.Logger;
-
-import javax.xml.soap.*;
-import javax.xml.stream.XMLStreamReader;
-
-import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.ContentType;
-import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.ParseException;
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-import com.sun.xml.internal.messaging.saaj.soap.ver1_1.Message1_1Impl;
-import com.sun.xml.internal.messaging.saaj.soap.ver1_2.Message1_2Impl;
-import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
-import com.sun.xml.internal.messaging.saaj.util.TeeInputStream;
-
-/**
- * A factory for creating SOAP messages.
- *
- * Converted to a placeholder for common functionality between SOAP
- * implementations.
- *
- * @author Phil Goodwin (phil.goodwin@sun.com)
- */
-public class MessageFactoryImpl extends MessageFactory {
-
-    protected static final Logger log =
-        Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
-                         "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
-
-    protected  OutputStream listener;
-
-    protected boolean lazyAttachments = false;
-
-    public  OutputStream listen(OutputStream newListener) {
-        OutputStream oldListener = listener;
-        listener = newListener;
-        return oldListener;
-    }
-
-    public SOAPMessage createMessage() throws SOAPException {
-        throw new UnsupportedOperationException();
-    }
-
-    public SOAPMessage createMessage(String protocol) throws SOAPException {
-        if (SOAPConstants.SOAP_1_1_PROTOCOL.equals(protocol))
-                return new com.sun.xml.internal.messaging.saaj.soap.ver1_1.Message1_1Impl();
-        else
-                return new com.sun.xml.internal.messaging.saaj.soap.ver1_2.Message1_2Impl();
-    }
-
-    public SOAPMessage createMessage(boolean isFastInfoset,
-        boolean acceptFastInfoset) throws SOAPException
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    public SOAPMessage createMessage(MimeHeaders headers, XMLStreamReader reader) throws SOAPException, IOException {
-        String contentTypeString = MessageImpl.getContentType(headers);
-
-        if (listener != null) {
-            throw new SOAPException("Listener OutputStream is not supported with XMLStreamReader");
-        }
-
-        try {
-            ContentType contentType = new ContentType(contentTypeString);
-            int stat = MessageImpl.identifyContentType(contentType);
-
-            if (MessageImpl.isSoap1_1Content(stat)) {
-                return new Message1_1Impl(headers,contentType,stat,reader);
-            } else if (MessageImpl.isSoap1_2Content(stat)) {
-                return new Message1_2Impl(headers,contentType,stat,reader);
-            } else {
-                log.severe("SAAJ0530.soap.unknown.Content-Type");
-                throw new SOAPExceptionImpl("Unrecognized Content-Type");
-            }
-        } catch (ParseException e) {
-            log.severe("SAAJ0531.soap.cannot.parse.Content-Type");
-            throw new SOAPExceptionImpl(
-                "Unable to parse content type: " + e.getMessage());
-        }
-    }
-    public SOAPMessage createMessage(MimeHeaders headers, InputStream in)
-        throws SOAPException, IOException {
-        String contentTypeString = MessageImpl.getContentType(headers);
-
-        if (listener != null) {
-            in = new TeeInputStream(in, listener);
-        }
-
-        try {
-            ContentType contentType = new ContentType(contentTypeString);
-            int stat = MessageImpl.identifyContentType(contentType);
-
-            if (MessageImpl.isSoap1_1Content(stat)) {
-                return new Message1_1Impl(headers,contentType,stat,in);
-            } else if (MessageImpl.isSoap1_2Content(stat)) {
-                return new Message1_2Impl(headers,contentType,stat,in);
-            } else {
-                log.severe("SAAJ0530.soap.unknown.Content-Type");
-                throw new SOAPExceptionImpl("Unrecognized Content-Type");
-            }
-        } catch (ParseException e) {
-            log.severe("SAAJ0531.soap.cannot.parse.Content-Type");
-            throw new SOAPExceptionImpl(
-                "Unable to parse content type: " + e.getMessage());
-        }
-    }
-
-    protected static final String getContentType(MimeHeaders headers) {
-        String[] values = headers.getHeader("Content-Type");
-        if (values == null)
-            return null;
-        else
-            return values[0];
-    }
-
-    public void setLazyAttachmentOptimization(boolean flag) {
-        lazyAttachments = flag;
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/MessageImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1486 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import java.io.*;
-import java.util.*;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.activation.DataHandler;
-import javax.activation.DataSource;
-import javax.xml.soap.*;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.transform.Source;
-import javax.xml.transform.stax.StAXSource;
-import javax.xml.transform.stream.StreamSource;
-
-import com.sun.xml.internal.messaging.saaj.packaging.mime.Header;
-import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.*;
-import com.sun.xml.internal.messaging.saaj.packaging.mime.util.*;
-import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl;
-import com.sun.xml.internal.messaging.saaj.util.*;
-import com.sun.xml.internal.org.jvnet.mimepull.MIMEPart;
-
-/**
- * The message implementation for SOAP messages with
- * attachments. Messages for specific profiles will likely extend this
- * MessageImpl class and add more value for that particular profile.
- *
- * @author Anil Vijendran (akv@eng.sun.com)
- * @author Rajiv Mordani (rajiv.mordani@sun.com)
- * @author Manveen Kaur (manveen.kaur@sun.com)
- */
-
-public abstract class MessageImpl
-    extends SOAPMessage
-    implements SOAPConstants {
-
-
-    public static final String CONTENT_ID             = "Content-ID";
-    public static final String CONTENT_LOCATION       = "Content-Location";
-
-    protected static final Logger log =
-        Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
-                         "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
-
-    protected static final int PLAIN_XML_FLAG      = 1;      // 00001
-    protected static final int MIME_MULTIPART_FLAG = 2;      // 00010
-    protected static final int SOAP1_1_FLAG = 4;             // 00100
-    protected static final int SOAP1_2_FLAG = 8;             // 01000
-    //protected static final int MIME_MULTIPART_XOP_FLAG = 14; // 01110
-    protected static final int MIME_MULTIPART_XOP_SOAP1_1_FLAG = 6;  // 00110
-    protected static final int MIME_MULTIPART_XOP_SOAP1_2_FLAG = 10; // 01010
-    protected static final int XOP_FLAG = 13;                // 01101
-    protected static final int FI_ENCODED_FLAG     = 16;     // 10000
-
-    protected MimeHeaders headers;
-    protected ContentType contentType;
-    protected SOAPPartImpl soapPartImpl;
-    protected FinalArrayList attachments;
-    protected boolean saved = false;
-    protected byte[] messageBytes;
-    protected int messageByteCount;
-    protected HashMap properties = new HashMap();
-
-    // used for lazy attachment initialization
-    protected MimeMultipart multiPart = null;
-    protected boolean attachmentsInitialized = false;
-
-    /**
-     * True if this part is encoded using Fast Infoset.
-     * MIME -> application/fastinfoset
-     */
-    protected boolean isFastInfoset = false;
-
-    /**
-     * True if the Accept header of this message includes
-     * application/fastinfoset
-     */
-    protected boolean acceptFastInfoset = false;
-
-    protected MimeMultipart mmp = null;
-
-    // if attachments are present, don't read the entire message in byte stream in saveTo()
-    private boolean optimizeAttachmentProcessing = true;
-
-    private InputStream inputStreamAfterSaveChanges = null;
-
-    public static final String LAZY_SOAP_BODY_PARSING = "saaj.lazy.soap.body";
-
-    // switch back to old MimeMultipart incase of problem
-    private static boolean switchOffBM = false;
-    private static boolean switchOffLazyAttachment = false;
-    private static boolean useMimePull = false;
-
-    static {
-            String s = SAAJUtil.getSystemProperty("saaj.mime.optimization");
-            if ((s != null) && s.equals("false")) {
-                switchOffBM = true;
-            }
-            s = SAAJUtil.getSystemProperty("saaj.lazy.mime.optimization");
-            if ((s != null) && s.equals("false")) {
-                switchOffLazyAttachment = true;
-            }
-            useMimePull = SAAJUtil.getSystemBoolean("saaj.use.mimepull");
-
-    }
-
-    //property to indicate optimized serialization for lazy attachments
-    private boolean lazyAttachments = false;
-
-    // most of the times, Content-Types are already all lower cased.
-    // String.toLowerCase() works faster in this case, so even if you
-    // are only doing one comparison, it pays off to use String.toLowerCase()
-    // than String.equalsIgnoreCase(). When you do more than one comparison,
-    // the benefits of String.toLowerCase() dominates.
-    //
-    //
-    // for FI,
-    //   use application/fastinfoset for SOAP 1.1
-    //   use application/soap+fastinfoset for SOAP 1.2
-    // to speed up comparisons, test methods always use lower cases.
-
-    /**
-     * @param primary
-     *      must be all lower case
-     * @param sub
-     *      must be all lower case
-     */
-    private static boolean isSoap1_1Type(String primary, String sub) {
-        return primary.equalsIgnoreCase("text") && sub.equalsIgnoreCase("xml")
-            || primary.equalsIgnoreCase("text") && sub.equalsIgnoreCase("xml-soap")
-            || primary.equals("application")
-               && sub.equals("fastinfoset");
-    }
-
-    /**
-     * @param type
-     *      must be all lower case
-     */
-    private static boolean isEqualToSoap1_1Type(String type) {
-        return type.startsWith("text/xml") ||
-               type.startsWith("application/fastinfoset");
-    }
-
-    /**
-     * @param primary
-     *      must be all lower case
-     * @param sub
-     *      must be all lower case
-     */
-    private static boolean isSoap1_2Type(String primary, String sub) {
-        return primary.equals("application")
-               && (sub.equals("soap+xml")
-                   || sub.equals("soap+fastinfoset"));
-    }
-
-    /**
-     * @param type
-     *      must be all lower case
-     */
-    private static boolean isEqualToSoap1_2Type(String type) {
-        return type.startsWith("application/soap+xml") ||
-               type.startsWith("application/soap+fastinfoset");
-    }
-
-    /**
-      * Construct a new message. This will be invoked before message
-      * sends.
-      */
-    protected MessageImpl() {
-        this(false, false);
-        attachmentsInitialized = true;
-    }
-
-    /**
-      * Construct a new message. This will be invoked before message
-      * sends.
-      */
-    protected MessageImpl(boolean isFastInfoset, boolean acceptFastInfoset) {
-        this.isFastInfoset = isFastInfoset;
-        this.acceptFastInfoset = acceptFastInfoset;
-
-        headers = new MimeHeaders();
-        headers.setHeader("Accept", getExpectedAcceptHeader());
-        contentType = new ContentType();
-    }
-
-    /**
-     * Shallow copy.
-     */
-    protected MessageImpl(SOAPMessage msg) {
-        if (!(msg instanceof MessageImpl)) {
-            // don't know how to handle this.
-        }
-        MessageImpl src = (MessageImpl) msg;
-        this.headers = src.headers;
-        this.soapPartImpl = src.soapPartImpl;
-        this.attachments = src.attachments;
-        this.saved = src.saved;
-        this.messageBytes = src.messageBytes;
-        this.messageByteCount = src.messageByteCount;
-        this.properties = src.properties;
-        this.contentType = src.contentType;
-    }
-
-    /**
-     * @param stat
-     *      the mask value obtained from {@link #identifyContentType(ContentType)}
-     */
-    protected static boolean isSoap1_1Content(int stat) {
-        return (stat & SOAP1_1_FLAG) != 0;
-    }
-
-    /**
-     * @param stat
-     *      the mask value obtained from {@link #identifyContentType(ContentType)}
-     */
-    protected static boolean isSoap1_2Content(int stat) {
-        return (stat & SOAP1_2_FLAG) != 0;
-    }
-
-     private static boolean isMimeMultipartXOPSoap1_2Package(ContentType contentType) {
-        String type = contentType.getParameter("type");
-        if (type == null) {
-            return false;
-        }
-        type = type.toLowerCase();
-        if (!type.startsWith("application/xop+xml")) {
-            return false;
-        }
-        String startinfo = contentType.getParameter("start-info");
-        if (startinfo == null) {
-            return false;
-        }
-        startinfo = startinfo.toLowerCase();
-        return isEqualToSoap1_2Type(startinfo);
-    }
-
-
-     //private static boolean isMimeMultipartXOPPackage(ContentType contentType) {
-     private static boolean isMimeMultipartXOPSoap1_1Package(ContentType contentType) {
-        String type = contentType.getParameter("type");
-        if(type==null)
-            return false;
-
-        type = type.toLowerCase();
-        if(!type.startsWith("application/xop+xml"))
-            return false;
-
-        String startinfo = contentType.getParameter("start-info");
-        if(startinfo == null)
-            return false;
-        startinfo = startinfo.toLowerCase();
-        return isEqualToSoap1_1Type(startinfo);
-    }
-
-    private static boolean isSOAPBodyXOPPackage(ContentType contentType){
-        String primary = contentType.getPrimaryType();
-        String sub = contentType.getSubType();
-
-        if (primary.equalsIgnoreCase("application")) {
-            if (sub.equalsIgnoreCase("xop+xml")) {
-                String type = getTypeParameter(contentType);
-                return isEqualToSoap1_2Type(type) || isEqualToSoap1_1Type(type);
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Construct a message from an input stream. When messages are
-     * received, there's two parts -- the transport headers and the
-     * message content in a transport specific stream.
-     */
-    protected MessageImpl(MimeHeaders headers, final InputStream in)
-        throws SOAPExceptionImpl {
-        contentType = parseContentType(headers);
-        init(headers,identifyContentType(contentType),contentType,in);
-    }
-
-    private static ContentType parseContentType(MimeHeaders headers) throws SOAPExceptionImpl {
-        final String ct;
-        if (headers != null)
-            ct = getContentType(headers);
-        else {
-            log.severe("SAAJ0550.soap.null.headers");
-            throw new SOAPExceptionImpl("Cannot create message: " +
-                                        "Headers can't be null");
-        }
-
-        if (ct == null) {
-            log.severe("SAAJ0532.soap.no.Content-Type");
-            throw new SOAPExceptionImpl("Absent Content-Type");
-        }
-        try {
-            return new ContentType(ct);
-        } catch (Throwable ex) {
-            log.severe("SAAJ0535.soap.cannot.internalize.message");
-            throw new SOAPExceptionImpl("Unable to internalize message", ex);
-        }
-    }
-
-    /**
-     * Construct a message from an input stream. When messages are
-     * received, there's two parts -- the transport headers and the
-     * message content in a transport specific stream.
-     *
-     * @param contentType
-     *      The parsed content type header from the headers variable.
-     *      This is redundant parameter, but it avoids reparsing this header again.
-     * @param stat
-     *      The result of {@link #identifyContentType(ContentType)} over
-     *      the contentType parameter. This redundant parameter, but it avoids
-     *      recomputing this information again.
-     */
-    protected MessageImpl(MimeHeaders headers, final ContentType contentType, int stat, final InputStream in) throws SOAPExceptionImpl {
-        init(headers, stat, contentType, in);
-
-    }
-
-    public MessageImpl(MimeHeaders headers, ContentType ct, int stat,
-            XMLStreamReader reader) throws SOAPExceptionImpl {
-        init(headers, stat, ct, reader);
-    }
-
-    private void init(MimeHeaders headers, int stat, final ContentType contentType, final Object input) throws SOAPExceptionImpl {
-        this.headers = headers;
-
-        try {
-
-            // Set isFastInfoset/acceptFastInfoset flag based on MIME type
-            if ((stat & FI_ENCODED_FLAG) > 0) {
-                isFastInfoset = acceptFastInfoset = true;
-            }
-
-            // If necessary, inspect Accept header to set acceptFastInfoset
-            if (!isFastInfoset) {
-                String[] values = headers.getHeader("Accept");
-                if (values != null) {
-                    for (int i = 0; i < values.length; i++) {
-                        StringTokenizer st = new StringTokenizer(values[i], ",");
-                        while (st.hasMoreTokens()) {
-                            final String token = st.nextToken().trim();
-                            if (token.equalsIgnoreCase("application/fastinfoset") ||
-                                token.equalsIgnoreCase("application/soap+fastinfoset")) {
-                                acceptFastInfoset = true;
-                                break;
-                            }
-                        }
-                    }
-                }
-            }
-
-            if (!isCorrectSoapVersion(stat)) {
-                log.log(
-                    Level.SEVERE,
-                    "SAAJ0533.soap.incorrect.Content-Type",
-                    new String[] {
-                        contentType.toString(),
-                        getExpectedContentType()});
-                throw new SOAPVersionMismatchException(
-                    "Cannot create message: incorrect content-type for SOAP version. Got: "
-                        + contentType
-                        + " Expected: "
-                        + getExpectedContentType());
-            }
-            InputStream in = null;
-            XMLStreamReader rdr = null;
-            if (input instanceof InputStream) {
-               in = (InputStream) input;
-            } else {
-              //is a StAX reader
-                rdr = (XMLStreamReader) input;
-            }
-            if ((stat & PLAIN_XML_FLAG) != 0) {
-                if (in != null) {
-                    if (isFastInfoset) {
-                        getSOAPPart().setContent(
-                                FastInfosetReflection.FastInfosetSource_new(in));
-                    } else {
-                        initCharsetProperty(contentType);
-                        getSOAPPart().setContent(new StreamSource(in));
-                    }
-                } else {
-                    //is a StAX reader
-                    if (isFastInfoset) {
-                        //need to get FI stax reader
-                    } else {
-                        initCharsetProperty(contentType);
-                        getSOAPPart().setContent(new StAXSource(rdr));
-                    }
-                }
-            }
-            else if ((stat & MIME_MULTIPART_FLAG) != 0 && in == null) {
-                //only parse multipart in the inputstream case
-                //in stax reader case, we would be given the attachments separately
-                getSOAPPart().setContent(new StAXSource(rdr));
-            } else if ((stat & MIME_MULTIPART_FLAG) != 0) {
-                final InputStream finalIn = in;
-                DataSource ds = new DataSource() {
-                    public InputStream getInputStream() {
-                        return finalIn;
-                    }
-
-                    public OutputStream getOutputStream() {
-                        return null;
-                    }
-
-                    public String getContentType() {
-                        return contentType.toString();
-                    }
-
-                    public String getName() {
-                        return "";
-                    }
-                };
-
-                multiPart = null;
-                if (useMimePull) {
-                    multiPart = new MimePullMultipart(ds,contentType);
-                } else if (switchOffBM) {
-                    multiPart = new MimeMultipart(ds,contentType);
-                } else {
-                    multiPart = new BMMimeMultipart(ds,contentType);
-                }
-
-                String startParam = contentType.getParameter("start");
-                MimeBodyPart soapMessagePart = null;
-                InputStream soapPartInputStream = null;
-                String contentID = null;
-                String contentIDNoAngle = null;
-                if (switchOffBM || switchOffLazyAttachment) {
-                    if(startParam == null) {
-                        soapMessagePart = multiPart.getBodyPart(0);
-                        for (int i = 1; i < multiPart.getCount(); i++) {
-                            initializeAttachment(multiPart, i);
-                        }
-                    } else {
-                        soapMessagePart = multiPart.getBodyPart(startParam);
-                        for (int i = 0; i < multiPart.getCount(); i++) {
-                            contentID = multiPart.getBodyPart(i).getContentID();
-                            // Old versions of AXIS2 put angle brackets around the content
-                            // id but not the start param
-                            contentIDNoAngle = (contentID != null) ?
-                                contentID.replaceFirst("^<", "").replaceFirst(">$", "") : null;
-                            if(!startParam.equals(contentID) && !startParam.equals(contentIDNoAngle))
-                                initializeAttachment(multiPart, i);
-                        }
-                    }
-                } else {
-                    if (useMimePull) {
-                        MimePullMultipart mpMultipart = (MimePullMultipart)multiPart;
-                        MIMEPart sp = mpMultipart.readAndReturnSOAPPart();
-                        soapMessagePart = new MimeBodyPart(sp);
-                        soapPartInputStream = sp.readOnce();
-                    } else {
-                        BMMimeMultipart bmMultipart =
-                                (BMMimeMultipart) multiPart;
-                        InputStream stream = bmMultipart.initStream();
-
-                        SharedInputStream sin = null;
-                        if (stream instanceof SharedInputStream) {
-                            sin = (SharedInputStream) stream;
-                        }
-
-                        String boundary = "--" +
-                                contentType.getParameter("boundary");
-                        byte[] bndbytes = ASCIIUtility.getBytes(boundary);
-                        if (startParam == null) {
-                            soapMessagePart =
-                                    bmMultipart.getNextPart(stream, bndbytes, sin);
-                            bmMultipart.removeBodyPart(soapMessagePart);
-                        } else {
-                            MimeBodyPart bp = null;
-                            try {
-                               while (!startParam.equals(contentID) && !startParam.equals(contentIDNoAngle)) {
-                                    bp = bmMultipart.getNextPart(
-                                            stream, bndbytes, sin);
-                                    contentID = bp.getContentID();
-                                    // Old versions of AXIS2 put angle brackets around the content
-                                    // id but not the start param
-                                    contentIDNoAngle = (contentID != null) ?
-                                        contentID.replaceFirst("^<", "").replaceFirst(">$", "") : null;
-                                }
-                                soapMessagePart = bp;
-                                bmMultipart.removeBodyPart(bp);
-                            } catch (Exception e) {
-                                throw new SOAPExceptionImpl(e);
-                            }
-                        }
-                    }
-                }
-
-                // findbugs correctly points out that we'd NPE instantiating
-                // the ContentType (just below here) if soapMessagePart were
-                // null.  Hence are better off throwing a controlled exception
-                // at this point if it is null.
-                if (soapMessagePart == null) {
-                    log.severe("SAAJ0510.soap.cannot.create.envelope");
-                    throw new SOAPExceptionImpl(
-                        "Unable to create envelope from given source: SOAP part not found");
-                }
-
-                if (soapPartInputStream == null) {
-                    soapPartInputStream = soapMessagePart.getInputStream();
-                }
-
-                ContentType soapPartCType = new ContentType(
-                                            soapMessagePart.getContentType());
-                initCharsetProperty(soapPartCType);
-                String baseType = soapPartCType.getBaseType().toLowerCase();
-                if(!(isEqualToSoap1_1Type(baseType)
-                  || isEqualToSoap1_2Type(baseType)
-                  || isSOAPBodyXOPPackage(soapPartCType))) {
-                    log.log(Level.SEVERE,
-                            "SAAJ0549.soap.part.invalid.Content-Type",
-                            new Object[] {baseType});
-                    throw new SOAPExceptionImpl(
-                            "Bad Content-Type for SOAP Part : " +
-                            baseType);
-                }
-
-                SOAPPart soapPart = getSOAPPart();
-                setMimeHeaders(soapPart, soapMessagePart);
-                soapPart.setContent(isFastInfoset ?
-                     (Source) FastInfosetReflection.FastInfosetSource_new(
-                         soapPartInputStream) :
-                     (Source) new StreamSource(soapPartInputStream));
-            } else {
-                log.severe("SAAJ0534.soap.unknown.Content-Type");
-                throw new SOAPExceptionImpl("Unrecognized Content-Type");
-            }
-        } catch (Throwable ex) {
-            log.severe("SAAJ0535.soap.cannot.internalize.message");
-            throw new SOAPExceptionImpl("Unable to internalize message", ex);
-        }
-        needsSave();
-    }
-
-    public boolean isFastInfoset() {
-        return isFastInfoset;
-    }
-
-    public boolean acceptFastInfoset() {
-        return acceptFastInfoset;
-    }
-
-    public void setIsFastInfoset(boolean value) {
-        if (value != isFastInfoset) {
-            isFastInfoset = value;
-            if (isFastInfoset) {
-                acceptFastInfoset = true;
-            }
-            saved = false;      // ensure transcoding if necessary
-        }
-    }
-
-    public boolean isLazySoapBodyParsing() {
-        Object lazyParsingProp = getProperty(LAZY_SOAP_BODY_PARSING);
-        if (lazyParsingProp == null) return false;
-        if (lazyParsingProp instanceof Boolean) {
-            return ((Boolean) lazyParsingProp).booleanValue();
-        } else {
-            return Boolean.valueOf(lazyParsingProp.toString());
-        }
-    }
-    public Object getProperty(String property) {
-        return (String) properties.get(property);
-    }
-
-    public void setProperty(String property, Object value) {
-        verify(property, value);
-        properties.put(property, value);
-    }
-
-    private void verify(String property, Object value) {
-        if (property.equalsIgnoreCase(SOAPMessage.WRITE_XML_DECLARATION)) {
-            if (!("true".equals(value) || "false".equals(value)))
-                throw new RuntimeException(
-                    property + " must have value false or true");
-
-            try {
-                EnvelopeImpl env = (EnvelopeImpl) getSOAPPart().getEnvelope();
-                if ("true".equalsIgnoreCase((String)value)) {
-                    env.setOmitXmlDecl("no");
-                } else if ("false".equalsIgnoreCase((String)value)) {
-                    env.setOmitXmlDecl("yes");
-                }
-            } catch (Exception e) {
-                log.log(Level.SEVERE, "SAAJ0591.soap.exception.in.set.property",
-                    new Object[] {e.getMessage(), "javax.xml.soap.write-xml-declaration"});
-                throw new RuntimeException(e);
-            }
-            return;
-        }
-
-        if (property.equalsIgnoreCase(SOAPMessage.CHARACTER_SET_ENCODING)) {
-            try {
-                ((EnvelopeImpl) getSOAPPart().getEnvelope()).setCharsetEncoding((String)value);
-            } catch (Exception e) {
-                log.log(Level.SEVERE, "SAAJ0591.soap.exception.in.set.property",
-                    new Object[] {e.getMessage(), "javax.xml.soap.character-set-encoding"});
-                throw new RuntimeException(e);
-            }
-        }
-    }
-
-    protected abstract boolean isCorrectSoapVersion(int contentTypeId);
-
-    protected abstract String getExpectedContentType();
-    protected abstract String getExpectedAcceptHeader();
-
-    /**
-     * Sniffs the Content-Type header so that we can determine how to process.
-     *
-     * <p>
-     * In the absence of type attribute we assume it to be text/xml.
-     * That would mean we're easy on accepting the message and
-     * generate the correct thing (as the SWA spec also specifies
-     * that the type parameter should always be text/xml)
-     *
-     * @return
-     *      combination of flags, such as PLAIN_XML_CODE and MIME_MULTIPART_CODE.
-     */
-    // SOAP1.2 allow SOAP1.2 content type
-    static int identifyContentType(ContentType ct)
-        throws SOAPExceptionImpl {
-        // TBD
-        //    Is there anything else we need to verify here?
-
-        String primary = ct.getPrimaryType().toLowerCase();
-        String sub = ct.getSubType().toLowerCase();
-
-        if (primary.equals("multipart")) {
-            if (sub.equals("related")) {
-                String type = getTypeParameter(ct);
-                if (isEqualToSoap1_1Type(type)) {
-                    return (type.equals("application/fastinfoset") ?
-                           FI_ENCODED_FLAG : 0) | MIME_MULTIPART_FLAG | SOAP1_1_FLAG;
-                }
-                else if (isEqualToSoap1_2Type(type)) {
-                    return (type.equals("application/soap+fastinfoset") ?
-                           FI_ENCODED_FLAG : 0) | MIME_MULTIPART_FLAG | SOAP1_2_FLAG;
-                /*} else if (isMimeMultipartXOPPackage(ct)) {
-                    return MIME_MULTIPART_XOP_FLAG;*/
-                } else if (isMimeMultipartXOPSoap1_1Package(ct)) {
-                    return MIME_MULTIPART_XOP_SOAP1_1_FLAG;
-                } else if (isMimeMultipartXOPSoap1_2Package(ct)) {
-                    return MIME_MULTIPART_XOP_SOAP1_2_FLAG;
-                } else {
-                    log.severe("SAAJ0536.soap.content-type.mustbe.multipart");
-                    throw new SOAPExceptionImpl(
-                        "Content-Type needs to be Multipart/Related "
-                            + "and with \"type=text/xml\" "
-                            + "or \"type=application/soap+xml\"");
-                }
-            } else {
-                log.severe("SAAJ0537.soap.invalid.content-type");
-                throw new SOAPExceptionImpl(
-                    "Invalid Content-Type: " + primary + '/' + sub);
-            }
-        }
-        else if (isSoap1_1Type(primary, sub)) {
-            return (primary.equalsIgnoreCase("application")
-                    && sub.equalsIgnoreCase("fastinfoset") ?
-                        FI_ENCODED_FLAG : 0)
-                   | PLAIN_XML_FLAG | SOAP1_1_FLAG;
-        }
-        else if (isSoap1_2Type(primary, sub)) {
-            return (primary.equalsIgnoreCase("application")
-                    && sub.equalsIgnoreCase("soap+fastinfoset") ?
-                        FI_ENCODED_FLAG : 0)
-                   | PLAIN_XML_FLAG | SOAP1_2_FLAG;
-        } else if(isSOAPBodyXOPPackage(ct)){
-            return XOP_FLAG;
-        } else {
-            log.severe("SAAJ0537.soap.invalid.content-type");
-            throw new SOAPExceptionImpl(
-                "Invalid Content-Type:"
-                    + primary
-                    + '/'
-                    + sub
-                    + ". Is this an error message instead of a SOAP response?");
-        }
-    }
-
-    /**
-     * Obtains the type parameter of the Content-Type header. Defaults to "text/xml".
-     */
-    private static String getTypeParameter(ContentType contentType) {
-        String p = contentType.getParameter("type");
-        if(p!=null)
-            return p.toLowerCase();
-        else
-            return "text/xml";
-    }
-
-    public MimeHeaders getMimeHeaders() {
-        return this.headers;
-    }
-
-    final static String getContentType(MimeHeaders headers) {
-        String[] values = headers.getHeader("Content-Type");
-        if (values == null)
-            return null;
-        else
-            return values[0];
-    }
-
-    /*
-     * Get the complete ContentType value along with optional parameters.
-     */
-    public String getContentType() {
-        return getContentType(this.headers);
-    }
-
-    public void setContentType(String type) {
-        headers.setHeader("Content-Type", type);
-        needsSave();
-    }
-
-    private ContentType contentType() {
-        ContentType ct = null;
-        try {
-            String currentContent = getContentType();
-            if (currentContent == null) {
-                return this.contentType;
-            }
-            ct = new ContentType(currentContent);
-        } catch (Exception e) {
-            // what to do here?
-        }
-        return ct;
-    }
-
-    /*
-     * Return the MIME type string, without the parameters.
-     */
-    public String getBaseType() {
-        return contentType().getBaseType();
-    }
-
-    public void setBaseType(String type) {
-        ContentType ct = contentType();
-        ct.setParameter("type", type);
-        headers.setHeader("Content-Type", ct.toString());
-        needsSave();
-    }
-
-    public String getAction() {
-        return contentType().getParameter("action");
-    }
-
-    public void setAction(String action) {
-        ContentType ct = contentType();
-        ct.setParameter("action", action);
-        headers.setHeader("Content-Type", ct.toString());
-        needsSave();
-    }
-
-    public String getCharset() {
-        return contentType().getParameter("charset");
-    }
-
-    public void setCharset(String charset) {
-        ContentType ct = contentType();
-        ct.setParameter("charset", charset);
-        headers.setHeader("Content-Type", ct.toString());
-        needsSave();
-    }
-
-    /**
-     * All write methods (i.e setters) should call this method in
-     * order to make sure that a save is necessary since the state
-     * has been modified.
-     */
-    private final void needsSave() {
-        saved = false;
-    }
-
-    public  boolean saveRequired() {
-        return saved != true;
-    }
-
-    public String getContentDescription() {
-        String[] values = headers.getHeader("Content-Description");
-        if (values != null && values.length > 0)
-            return values[0];
-        return null;
-    }
-
-    public void setContentDescription(String description) {
-        headers.setHeader("Content-Description", description);
-        needsSave();
-    }
-
-    public abstract SOAPPart getSOAPPart();
-
-    public void removeAllAttachments() {
-        try {
-            initializeAllAttachments();
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-
-        if (attachments != null) {
-            attachments.clear();
-            needsSave();
-        }
-    }
-
-    public int countAttachments() {
-        try {
-            initializeAllAttachments();
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        if (attachments != null)
-            return attachments.size();
-        return 0;
-    }
-
-    public void addAttachmentPart(AttachmentPart attachment) {
-        try {
-            initializeAllAttachments();
-            this.optimizeAttachmentProcessing = true;
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        if (attachments == null)
-            attachments = new FinalArrayList();
-
-        attachments.add(attachment);
-
-        needsSave();
-    }
-
-    static private final Iterator nullIter = Collections.EMPTY_LIST.iterator();
-
-    public Iterator getAttachments() {
-        try {
-            initializeAllAttachments();
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        if (attachments == null)
-            return nullIter;
-        return attachments.iterator();
-    }
-
-    private void setFinalContentType(String charset) {
-        ContentType ct = contentType();
-        if (ct == null) {
-            ct = new ContentType();
-        }
-        String[] split = getExpectedContentType().split("/");
-        ct.setPrimaryType(split[0]);
-        ct.setSubType(split[1]);
-        ct.setParameter("charset", charset);
-        headers.setHeader("Content-Type", ct.toString());
-    }
-
-    private class MimeMatchingIterator implements Iterator {
-        public MimeMatchingIterator(MimeHeaders headers) {
-            this.headers = headers;
-            this.iter = attachments.iterator();
-        }
-
-        private Iterator iter;
-        private MimeHeaders headers;
-        private Object nextAttachment;
-
-        public boolean hasNext() {
-            if (nextAttachment == null)
-                nextAttachment = nextMatch();
-            return nextAttachment != null;
-        }
-
-        public Object next() {
-            if (nextAttachment != null) {
-                Object ret = nextAttachment;
-                nextAttachment = null;
-                return ret;
-            }
-
-            if (hasNext())
-                return nextAttachment;
-
-            return null;
-        }
-
-        Object nextMatch() {
-            while (iter.hasNext()) {
-                AttachmentPartImpl ap = (AttachmentPartImpl) iter.next();
-                if (ap.hasAllHeaders(headers))
-                    return ap;
-            }
-            return null;
-        }
-
-        public void remove() {
-            iter.remove();
-        }
-    }
-
-    public Iterator getAttachments(MimeHeaders headers) {
-        try {
-            initializeAllAttachments();
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        if (attachments == null)
-            return nullIter;
-
-        return new MimeMatchingIterator(headers);
-    }
-
-    public void removeAttachments(MimeHeaders headers) {
-        try {
-            initializeAllAttachments();
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        if (attachments == null)
-            return ;
-
-        Iterator it =  new MimeMatchingIterator(headers);
-        while (it.hasNext()) {
-            int index = attachments.indexOf(it.next());
-            attachments.set(index, null);
-        }
-        FinalArrayList f = new FinalArrayList();
-        for (int i = 0; i < attachments.size(); i++) {
-            if (attachments.get(i) != null) {
-                f.add(attachments.get(i));
-            }
-        }
-        attachments = f;
-       // needsSave();
-    }
-
-    public AttachmentPart createAttachmentPart() {
-        return new AttachmentPartImpl();
-    }
-
-    public  AttachmentPart getAttachment(SOAPElement element)
-        throws SOAPException {
-        try {
-            initializeAllAttachments();
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        String uri;
-        String hrefAttr = element.getAttribute("href");
-        if ("".equals(hrefAttr)) {
-            Node node = getValueNodeStrict(element);
-            String swaRef = null;
-            if (node != null) {
-                swaRef = node.getValue();
-            }
-            if (swaRef == null || "".equals(swaRef)) {
-                return null;
-            } else {
-                uri = swaRef;
-            }
-        } else {
-            uri = hrefAttr;
-        }
-        return getAttachmentPart(uri);
-    }
-
-    private Node getValueNodeStrict(SOAPElement element) {
-        Node node = (Node)element.getFirstChild();
-        if (node != null) {
-            if (node.getNextSibling() == null
-                && node.getNodeType() == org.w3c.dom.Node.TEXT_NODE) {
-                return node;
-            } else {
-                return null;
-            }
-        }
-        return null;
-    }
-
-
-    private AttachmentPart getAttachmentPart(String uri) throws SOAPException {
-        AttachmentPart _part;
-        try {
-            if (uri.startsWith("cid:")) {
-                // rfc2392
-                uri = '<'+uri.substring("cid:".length())+'>';
-
-                MimeHeaders headersToMatch = new MimeHeaders();
-                headersToMatch.addHeader(CONTENT_ID, uri);
-
-                Iterator i = this.getAttachments(headersToMatch);
-                _part = (i == null) ? null : (AttachmentPart)i.next();
-            } else {
-                // try content-location
-                MimeHeaders headersToMatch = new MimeHeaders();
-                headersToMatch.addHeader(CONTENT_LOCATION, uri);
-
-                Iterator i = this.getAttachments(headersToMatch);
-                _part = (i == null) ? null : (AttachmentPart)i.next();
-            }
-
-            // try  auto-generated JAXRPC CID
-            if (_part == null) {
-                Iterator j = this.getAttachments();
-
-                while (j.hasNext()) {
-                    AttachmentPart p = (AttachmentPart)j.next();
-                    String cl = p.getContentId();
-                    if (cl != null) {
-                        // obtain the partname
-                        int eqIndex = cl.indexOf("=");
-                        if (eqIndex > -1) {
-                            cl = cl.substring(1, eqIndex);
-                            if (cl.equalsIgnoreCase(uri)) {
-                                _part = p;
-                                 break;
-                            }
-                        }
-                    }
-                }
-            }
-
-        } catch (Exception se) {
-            log.log(Level.SEVERE, "SAAJ0590.soap.unable.to.locate.attachment", new Object[] {uri});
-            throw new SOAPExceptionImpl(se);
-        }
-        return _part;
-    }
-
-    private final InputStream getHeaderBytes()
-        throws IOException {
-        SOAPPartImpl sp = (SOAPPartImpl) getSOAPPart();
-        return sp.getContentAsStream();
-    }
-
-    private String convertToSingleLine(String contentType) {
-        StringBuffer buffer = new StringBuffer();
-        for (int i = 0; i < contentType.length(); i ++) {
-            char c = contentType.charAt(i);
-            if (c != '\r' && c != '\n' && c != '\t')
-                buffer.append(c);
-        }
-        return buffer.toString();
-    }
-
-    private MimeMultipart getMimeMessage() throws SOAPException {
-        try {
-            SOAPPartImpl soapPart = (SOAPPartImpl) getSOAPPart();
-            MimeBodyPart mimeSoapPart = soapPart.getMimePart();
-
-            /*
-             * Get content type from this message instead of soapPart
-             * to ensure agreement if soapPart is transcoded (XML <-> FI)
-             */
-            ContentType soapPartCtype = new ContentType(getExpectedContentType());
-
-            if (!isFastInfoset) {
-                soapPartCtype.setParameter("charset", initCharset());
-            }
-            mimeSoapPart.setHeader("Content-Type", soapPartCtype.toString());
-
-            MimeMultipart headerAndBody = null;
-
-            if (!switchOffBM && !switchOffLazyAttachment &&
-                   (multiPart != null) && !attachmentsInitialized) {
-                headerAndBody = new BMMimeMultipart();
-                headerAndBody.addBodyPart(mimeSoapPart);
-                if (attachments != null) {
-                    for (Iterator eachAttachment = attachments.iterator();
-                         eachAttachment.hasNext();) {
-                        headerAndBody.addBodyPart(
-                            ((AttachmentPartImpl) eachAttachment.next())
-                                .getMimePart());
-                    }
-                }
-                InputStream in = ((BMMimeMultipart)multiPart).getInputStream();
-                if (!((BMMimeMultipart)multiPart).lastBodyPartFound() &&
-                    !((BMMimeMultipart)multiPart).isEndOfStream()) {
-                    ((BMMimeMultipart)headerAndBody).setInputStream(in);
-                    ((BMMimeMultipart)headerAndBody).setBoundary(
-                        ((BMMimeMultipart)multiPart).getBoundary());
-                    ((BMMimeMultipart)headerAndBody).
-                        setLazyAttachments(lazyAttachments);
-                }
-
-            } else {
-                headerAndBody = new MimeMultipart();
-                headerAndBody.addBodyPart(mimeSoapPart);
-
-                for (Iterator eachAttachement = getAttachments();
-                    eachAttachement.hasNext();
-                    ) {
-                    headerAndBody.addBodyPart(
-                        ((AttachmentPartImpl) eachAttachement.next())
-                            .getMimePart());
-                }
-            }
-
-            ContentType contentType = headerAndBody.getContentType();
-
-            ParameterList l = contentType.getParameterList();
-
-            // set content type depending on SOAP version
-            l.set("type", getExpectedContentType());
-            l.set("boundary", contentType.getParameter("boundary"));
-            ContentType nct = new ContentType("multipart", "related", l);
-
-            headers.setHeader(
-                "Content-Type",
-                convertToSingleLine(nct.toString()));
-          // TBD
-          //    Set content length MIME header here.
-
-            return headerAndBody;
-        } catch (SOAPException ex) {
-            throw ex;
-        } catch (Throwable ex) {
-            log.severe("SAAJ0538.soap.cannot.convert.msg.to.multipart.obj");
-            throw new SOAPExceptionImpl(
-                "Unable to convert SOAP message into "
-                    + "a MimeMultipart object",
-                ex);
-        }
-    }
-
-    private String initCharset() {
-
-        String charset = null;
-
-        String[] cts = getMimeHeaders().getHeader("Content-Type");
-        if ((cts != null) && (cts[0] != null)) {
-            charset = getCharsetString(cts[0]);
-        }
-
-        if (charset == null) {
-            charset = (String) getProperty(CHARACTER_SET_ENCODING);
-        }
-
-        if (charset != null) {
-            return charset;
-        }
-
-        return "utf-8";
-    }
-
-    private String getCharsetString(String s) {
-        try {
-            int index = s.indexOf(";");
-            if(index < 0)
-                return null;
-            ParameterList pl = new ParameterList(s.substring(index));
-            return pl.get("charset");
-        } catch(Exception e) {
-            return null;
-        }
-    }
-
-    public void saveChanges() throws SOAPException {
-
-        // suck in all the data from the attachments and have it
-        // ready for writing/sending etc.
-
-        String charset = initCharset();
-
-        /*if (countAttachments() == 0) {*/
-        int attachmentCount = (attachments == null) ? 0 : attachments.size();
-        if (attachmentCount == 0) {
-            if (!switchOffBM && !switchOffLazyAttachment &&
-                !attachmentsInitialized && (multiPart != null)) {
-                // so there might be attachments
-                attachmentCount = 1;
-            }
-        }
-
-        try {
-            if ((attachmentCount == 0) && !hasXOPContent()) {
-                InputStream in;
-                try{
-                /*
-                 * Not sure why this is called getHeaderBytes(), but it actually
-                 * returns the whole message as a byte stream. This stream could
-                 * be either XML of Fast depending on the mode.
-                 */
-                    in = getHeaderBytes();
-                    // no attachments, hence this property can be false
-                    this.optimizeAttachmentProcessing = false;
-                    if (SOAPPartImpl.lazyContentLength) {
-                        inputStreamAfterSaveChanges = in;
-                    }
-                } catch (IOException ex) {
-                    log.severe("SAAJ0539.soap.cannot.get.header.stream");
-                    throw new SOAPExceptionImpl(
-                            "Unable to get header stream in saveChanges: ",
-                            ex);
-                }
-
-                if (in instanceof ByteInputStream) {
-                    ByteInputStream bIn = (ByteInputStream)in;
-                    messageBytes = bIn.getBytes();
-                    messageByteCount = bIn.getCount();
-                }
-
-                setFinalContentType(charset);
-                /*
-                headers.setHeader(
-                        "Content-Type",
-                        getExpectedContentType() +
-                        (isFastInfoset ? "" : "; charset=" + charset));*/
-                if (messageByteCount > 0) {
-                    headers.setHeader(
-                            "Content-Length",
-                            Integer.toString(messageByteCount));
-                }
-            } else {
-                if(hasXOPContent())
-                    mmp = getXOPMessage();
-                else
-                    mmp = getMimeMessage();
-            }
-        } catch (Throwable ex) {
-            log.severe("SAAJ0540.soap.err.saving.multipart.msg");
-            throw new SOAPExceptionImpl(
-                    "Error during saving a multipart message",
-                    ex);
-        }
-
-        // FIX ME -- SOAP Action replaced by Content-Type optional parameter action
-        /*
-        if(isCorrectSoapVersion(SOAP1_1_FLAG)) {
-
-            String[] soapAction = headers.getHeader("SOAPAction");
-
-            if (soapAction == null || soapAction.length == 0)
-                headers.setHeader("SOAPAction", "\"\"");
-
-        }
-        */
-
-        saved = true;
-    }
-
-    private MimeMultipart getXOPMessage() throws SOAPException {
-        try {
-            MimeMultipart headerAndBody = new MimeMultipart();
-            SOAPPartImpl soapPart =  (SOAPPartImpl)getSOAPPart();
-            MimeBodyPart mimeSoapPart = soapPart.getMimePart();
-            ContentType soapPartCtype =
-                new ContentType("application/xop+xml");
-            soapPartCtype.setParameter("type", getExpectedContentType());
-            String charset = initCharset();
-            soapPartCtype.setParameter("charset", charset);
-            mimeSoapPart.setHeader("Content-Type", soapPartCtype.toString());
-            headerAndBody.addBodyPart(mimeSoapPart);
-
-            for (Iterator eachAttachement = getAttachments();
-                eachAttachement.hasNext();
-                ) {
-                headerAndBody.addBodyPart(
-                    ((AttachmentPartImpl) eachAttachement.next())
-                        .getMimePart());
-            }
-
-            ContentType contentType = headerAndBody.getContentType();
-
-            ParameterList l = contentType.getParameterList();
-
-            //lets not write start-info for now till we get servlet fix done
-            l.set("start-info", getExpectedContentType());//+";charset="+initCharset());
-
-            // set content type depending on SOAP version
-            l.set("type", "application/xop+xml");
-
-            if (isCorrectSoapVersion(SOAP1_2_FLAG)) {
-                 String action = getAction();
-                 if(action != null)
-                     l.set("action", action);
-            }
-
-            l.set("boundary", contentType.getParameter("boundary"));
-            ContentType nct = new ContentType("Multipart", "Related", l);
-            headers.setHeader(
-                "Content-Type",
-                convertToSingleLine(nct.toString()));
-            // TBD
-            //    Set content length MIME header here.
-
-            return headerAndBody;
-        } catch (SOAPException ex) {
-            throw ex;
-        } catch (Throwable ex) {
-            log.severe("SAAJ0538.soap.cannot.convert.msg.to.multipart.obj");
-            throw new SOAPExceptionImpl(
-                "Unable to convert SOAP message into "
-                    + "a MimeMultipart object",
-                ex);
-        }
-
-    }
-
-    private boolean hasXOPContent() throws ParseException {
-        String type = getContentType();
-        if(type == null)
-            return false;
-        ContentType ct = new ContentType(type);
-        //return isMimeMultipartXOPPackage(ct) || isSOAPBodyXOPPackage(ct);
-        return isMimeMultipartXOPSoap1_1Package(ct) ||
-            isMimeMultipartXOPSoap1_2Package(ct) || isSOAPBodyXOPPackage(ct);
-
-    }
-
-    public void writeTo(OutputStream out) throws SOAPException, IOException {
-        if (saveRequired()){
-            this.optimizeAttachmentProcessing = true;
-            saveChanges();
-        }
-
-        if(!optimizeAttachmentProcessing){
-            if (SOAPPartImpl.lazyContentLength && messageByteCount <= 0) {
-                byte[] buf = new byte[1024];
-
-                int length = 0;
-                while( (length = inputStreamAfterSaveChanges.read(buf)) != -1) {
-                    out.write(buf,0, length);
-                    messageByteCount += length;
-                }
-                if (messageByteCount > 0) {
-                    headers.setHeader(
-                            "Content-Length",
-                            Integer.toString(messageByteCount));
-                }
-            } else {
-                out.write(messageBytes, 0, messageByteCount);
-            }
-        }
-        else{
-            try{
-                if(hasXOPContent()){
-                    mmp.writeTo(out);
-                }else{
-                    mmp.writeTo(out);
-                    if (!switchOffBM && !switchOffLazyAttachment &&
-                            (multiPart != null) && !attachmentsInitialized) {
-                        ((BMMimeMultipart)multiPart).setInputStream(
-                                ((BMMimeMultipart)mmp).getInputStream());
-                    }
-                }
-            } catch(Exception ex){
-                log.severe("SAAJ0540.soap.err.saving.multipart.msg");
-                throw new SOAPExceptionImpl(
-                        "Error during saving a multipart message",
-                        ex);
-            }
-        }
-
-        if(isCorrectSoapVersion(SOAP1_1_FLAG)) {
-
-            String[] soapAction = headers.getHeader("SOAPAction");
-
-            if (soapAction == null || soapAction.length == 0)
-                headers.setHeader("SOAPAction", "\"\"");
-
-        }
-
-        messageBytes = null;
-        needsSave();
-    }
-
-    public SOAPBody getSOAPBody() throws SOAPException {
-        SOAPBody body = getSOAPPart().getEnvelope().getBody();
-        /*if (body == null) {
-             throw new SOAPException("No SOAP Body was found in the SOAP Message");
-        }*/
-        return body;
-    }
-
-    public SOAPHeader getSOAPHeader() throws SOAPException {
-        SOAPHeader hdr = getSOAPPart().getEnvelope().getHeader();
-        /*if (hdr == null) {
-            throw new SOAPException("No SOAP Header was found in the SOAP Message");
-        }*/
-        return hdr;
-    }
-
-    private void initializeAllAttachments ()
-        throws MessagingException, SOAPException {
-        if (switchOffBM || switchOffLazyAttachment) {
-            return;
-        }
-
-        if (attachmentsInitialized || (multiPart == null)) {
-            return;
-        }
-
-        if (attachments == null)
-            attachments = new FinalArrayList();
-
-        int count = multiPart.getCount();
-        for (int i=0; i < count; i++ ) {
-            initializeAttachment(multiPart.getBodyPart(i));
-        }
-        attachmentsInitialized = true;
-        //multiPart = null;
-        needsSave();
-     }
-
-    private void initializeAttachment(MimeBodyPart mbp) throws SOAPException {
-        AttachmentPartImpl attachmentPart = new AttachmentPartImpl();
-        DataHandler attachmentHandler = mbp.getDataHandler();
-        attachmentPart.setDataHandler(attachmentHandler);
-
-        AttachmentPartImpl.copyMimeHeaders(mbp, attachmentPart);
-        attachments.add(attachmentPart);
-    }
-
-    private void initializeAttachment(MimeMultipart multiPart, int i)
-        throws Exception {
-        MimeBodyPart currentBodyPart = multiPart.getBodyPart(i);
-        AttachmentPartImpl attachmentPart = new AttachmentPartImpl();
-
-        DataHandler attachmentHandler = currentBodyPart.getDataHandler();
-        attachmentPart.setDataHandler(attachmentHandler);
-
-        AttachmentPartImpl.copyMimeHeaders(currentBodyPart, attachmentPart);
-        addAttachmentPart(attachmentPart);
-    }
-
-    private void setMimeHeaders(SOAPPart soapPart,
-            MimeBodyPart soapMessagePart) throws Exception {
-
-        // first remove the existing content-type
-        soapPart.removeAllMimeHeaders();
-        // add everything present in soapMessagePart
-        List headers = soapMessagePart.getAllHeaders();
-        int sz = headers.size();
-        for( int i=0; i<sz; i++ ) {
-            Header h = (Header) headers.get(i);
-            soapPart.addMimeHeader(h.getName(), h.getValue());
-        }
-    }
-
-    private void initCharsetProperty(ContentType contentType) {
-        String charset = contentType.getParameter("charset");
-        if (charset != null) {
-            ((SOAPPartImpl) getSOAPPart()).setSourceCharsetEncoding(charset);
-            if(!charset.equalsIgnoreCase("utf-8"))
-                setProperty(CHARACTER_SET_ENCODING, charset);
-        }
-    }
-
-    public void setLazyAttachments(boolean flag) {
-        lazyAttachments = flag;
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/MultipartDataContentHandler.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import java.io.*;
-import java.awt.datatransfer.DataFlavor;
-import javax.activation.*;
-import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeMultipart;
-import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.ContentType;
-import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;
-
-public class MultipartDataContentHandler implements DataContentHandler {
-    private ActivationDataFlavor myDF = new ActivationDataFlavor(
-            com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeMultipart.class,
-            "multipart/mixed",
-            "Multipart");
-
-    /**
-     * Return the DataFlavors for this <code>DataContentHandler</code>.
-     *
-     * @return The DataFlavors
-     */
-    public DataFlavor[] getTransferDataFlavors() { // throws Exception;
-        return new DataFlavor[] { myDF };
-    }
-
-    /**
-     * Return the Transfer Data of type DataFlavor from InputStream.
-     *
-     * @param df The DataFlavor
-     * @param ins The InputStream corresponding to the data
-     * @return String object
-     */
-    public Object getTransferData(DataFlavor df, DataSource ds) {
-        // use myDF.equals to be sure to get ActivationDataFlavor.equals,
-        // which properly ignores Content-Type parameters in comparison
-        if (myDF.equals(df))
-            return getContent(ds);
-        else
-            return null;
-    }
-
-    /**
-     * Return the content.
-     */
-    public Object getContent(DataSource ds) {
-        try {
-            return new MimeMultipart(
-                ds, new ContentType(ds.getContentType()));
-        } catch (Exception e) {
-            return null;
-        }
-    }
-
-    /**
-     * Write the object to the output stream, using the specific MIME type.
-     */
-    public void writeTo(Object obj, String mimeType, OutputStream os)
-                        throws IOException {
-        if (obj instanceof MimeMultipart) {
-            try {
-                //TODO: temporarily allow only ByteOutputStream
-                // Need to add writeTo(OutputStream) on MimeMultipart
-                ByteOutputStream baos = null;
-                if (os instanceof ByteOutputStream) {
-                    baos = (ByteOutputStream)os;
-                } else {
-                    throw new IOException("Input Stream expected to be a com.sun.xml.internal.messaging.saaj.util.ByteOutputStream, but found " +
-                        os.getClass().getName());
-                }
-                ((MimeMultipart)obj).writeTo(baos);
-            } catch (Exception e) {
-                throw new IOException(e.toString());
-            }
-        }
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SAAJMetaFactoryImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import javax.xml.soap.SAAJMetaFactory;
-import javax.xml.soap.SOAPConstants;
-import javax.xml.soap.MessageFactory;
-import javax.xml.soap.SOAPFactory;
-import javax.xml.soap.SOAPException;
-
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
-
-public class SAAJMetaFactoryImpl extends SAAJMetaFactory {
-
-    protected static final Logger log =
-        Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
-                         "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
-
-    protected  MessageFactory newMessageFactory(String protocol)
-        throws SOAPException {
-        if (SOAPConstants.SOAP_1_1_PROTOCOL.equals(protocol)) {
-              return new com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl();
-        } else if (SOAPConstants.SOAP_1_2_PROTOCOL.equals(protocol)) {
-              return new com.sun.xml.internal.messaging.saaj.soap.ver1_2.SOAPMessageFactory1_2Impl();
-        } else if (SOAPConstants.DYNAMIC_SOAP_PROTOCOL.equals(protocol)) {
-              return new com.sun.xml.internal.messaging.saaj.soap.dynamic.SOAPMessageFactoryDynamicImpl();
-        } else {
-            log.log(
-                Level.SEVERE,
-                "SAAJ0569.soap.unknown.protocol",
-                new Object[] {protocol, "MessageFactory"});
-            throw new SOAPException("Unknown Protocol: " + protocol +
-                                        "  specified for creating MessageFactory");
-        }
-    }
-
-    protected  SOAPFactory newSOAPFactory(String protocol)
-        throws SOAPException {
-        if (SOAPConstants.SOAP_1_1_PROTOCOL.equals(protocol)) {
-            return new com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl();
-        } else if (SOAPConstants.SOAP_1_2_PROTOCOL.equals(protocol)) {
-            return new com.sun.xml.internal.messaging.saaj.soap.ver1_2.SOAPFactory1_2Impl();
-        } else if (SOAPConstants.DYNAMIC_SOAP_PROTOCOL.equals(protocol)) {
-            return new com.sun.xml.internal.messaging.saaj.soap.dynamic.SOAPFactoryDynamicImpl();
-        } else {
-            log.log(
-                Level.SEVERE,
-                "SAAJ0569.soap.unknown.protocol",
-                new Object[] {protocol, "SOAPFactory"});
-            throw new SOAPException("Unknown Protocol: " + protocol +
-                                        "  specified for creating SOAPFactory");
-        }
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocument.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap;
-
-public interface SOAPDocument {
-    SOAPPartImpl getSOAPPart();
-    SOAPDocumentImpl getDocument();
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocumentFragment.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl;
-import com.sun.org.apache.xerces.internal.dom.DocumentFragmentImpl;
-
-public class SOAPDocumentFragment extends DocumentFragmentImpl {
-
-    public SOAPDocumentFragment(CoreDocumentImpl ownerDoc) {
-        super(ownerDoc);
-    }
-
-    public SOAPDocumentFragment() {
-        super();
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocumentImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,193 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import java.util.logging.Logger;
-
-import com.sun.org.apache.xerces.internal.dom.DocumentImpl;
-import org.w3c.dom.*;
-
-import com.sun.xml.internal.messaging.saaj.soap.impl.*;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
-
-public class SOAPDocumentImpl extends DocumentImpl implements SOAPDocument {
-
-    private static final String XMLNS = "xmlns".intern();
-    protected static final Logger log =
-        Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
-                         "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
-
-    SOAPPartImpl enclosingSOAPPart;
-
-    public SOAPDocumentImpl(SOAPPartImpl enclosingDocument) {
-        this.enclosingSOAPPart = enclosingDocument;
-    }
-
-    //    public SOAPDocumentImpl(boolean grammarAccess) {
-    //        super(grammarAccess);
-    //    }
-    //
-    //    public SOAPDocumentImpl(DocumentType doctype) {
-    //        super(doctype);
-    //    }
-    //
-    //    public SOAPDocumentImpl(DocumentType doctype, boolean grammarAccess) {
-    //        super(doctype, grammarAccess);
-    //    }
-
-    public SOAPPartImpl getSOAPPart() {
-        if (enclosingSOAPPart == null) {
-            log.severe("SAAJ0541.soap.fragment.not.bound.to.part");
-            throw new RuntimeException("Could not complete operation. Fragment not bound to SOAP part.");
-        }
-        return enclosingSOAPPart;
-    }
-
-    public SOAPDocumentImpl getDocument() {
-        return this;
-    }
-
-    public DocumentType getDoctype() {
-        // SOAP means no DTD, No DTD means no doctype (SOAP 1.2 only?)
-        return null;
-    }
-
-    public DOMImplementation getImplementation() {
-        return super.getImplementation();
-    }
-
-    public Element getDocumentElement() {
-        // This had better be an Envelope!
-        getSOAPPart().doGetDocumentElement();
-        return doGetDocumentElement();
-    }
-
-    protected Element doGetDocumentElement() {
-        return super.getDocumentElement();
-    }
-
-    public Element createElement(String tagName) throws DOMException {
-        return ElementFactory.createElement(
-            this,
-            NameImpl.getLocalNameFromTagName(tagName),
-            NameImpl.getPrefixFromTagName(tagName),
-            null);
-    }
-
-    public DocumentFragment createDocumentFragment() {
-        return new SOAPDocumentFragment(this);
-    }
-
-    public org.w3c.dom.Text createTextNode(String data) {
-        return new SOAPTextImpl(this, data);
-    }
-
-    public Comment createComment(String data) {
-        return new SOAPCommentImpl(this, data);
-    }
-
-    public CDATASection createCDATASection(String data) throws DOMException {
-        return new CDATAImpl(this, data);
-    }
-
-    public ProcessingInstruction createProcessingInstruction(
-        String target,
-        String data)
-        throws DOMException {
-        log.severe("SAAJ0542.soap.proc.instructions.not.allowed.in.docs");
-        throw new UnsupportedOperationException("Processing Instructions are not allowed in SOAP documents");
-    }
-
-    public Attr createAttribute(String name) throws DOMException {
-        boolean isQualifiedName = (name.indexOf(":") > 0);
-        if (isQualifiedName) {
-            String nsUri = null;
-            String prefix = name.substring(0, name.indexOf(":"));
-            //cannot do anything to resolve the URI if prefix is not
-            //XMLNS.
-            if (XMLNS.equals(prefix)) {
-                nsUri = ElementImpl.XMLNS_URI;
-                return createAttributeNS(nsUri, name);
-            }
-        }
-
-        return super.createAttribute(name);
-    }
-
-    public EntityReference createEntityReference(String name)
-        throws DOMException {
-            log.severe("SAAJ0543.soap.entity.refs.not.allowed.in.docs");
-            throw new UnsupportedOperationException("Entity References are not allowed in SOAP documents");
-    }
-
-    public NodeList getElementsByTagName(String tagname) {
-        return super.getElementsByTagName(tagname);
-    }
-
-    public org.w3c.dom.Node importNode(Node importedNode, boolean deep)
-        throws DOMException {
-        return super.importNode(importedNode, deep);
-    }
-
-    public Element createElementNS(String namespaceURI, String qualifiedName)
-        throws DOMException {
-        return ElementFactory.createElement(
-            this,
-            NameImpl.getLocalNameFromTagName(qualifiedName),
-            NameImpl.getPrefixFromTagName(qualifiedName),
-            namespaceURI);
-    }
-
-    public Attr createAttributeNS(String namespaceURI, String qualifiedName)
-        throws DOMException {
-        return super.createAttributeNS(namespaceURI, qualifiedName);
-    }
-
-    public NodeList getElementsByTagNameNS(
-        String namespaceURI,
-        String localName) {
-        return super.getElementsByTagNameNS(namespaceURI, localName);
-    }
-
-    public Element getElementById(String elementId) {
-        return super.getElementById(elementId);
-    }
-
-    public Node cloneNode(boolean deep) {
-        SOAPPartImpl newSoapPart = getSOAPPart().doCloneNode();
-        super.cloneNode(newSoapPart.getDocument(), deep);
-        return newSoapPart;
-    }
-
-    public void cloneNode(SOAPDocumentImpl newdoc, boolean deep) {
-        super.cloneNode(newdoc, deep);
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPFactoryImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,179 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import java.util.logging.Logger;
-import java.util.logging.Level;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.*;
-
-import com.sun.xml.internal.messaging.saaj.soap.impl.ElementFactory;
-import com.sun.xml.internal.messaging.saaj.soap.impl.ElementImpl;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-import com.sun.xml.internal.messaging.saaj.util.*;
-
-import org.w3c.dom.Element;
-import org.w3c.dom.Document;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Attr;
-
-public abstract class SOAPFactoryImpl extends SOAPFactory {
-
-    protected static final Logger
-        log = Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
-                               "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
-
-    protected abstract SOAPDocumentImpl createDocument();
-
-    public SOAPElement createElement(String tagName) throws SOAPException {
-         if (tagName == null) {
-             log.log(
-                 Level.SEVERE,"SAAJ0567.soap.null.input",
-                 new Object[] {"tagName","SOAPFactory.createElement"});
-             throw new SOAPException("Null tagName argument passed to createElement");
-         }
-        return ElementFactory.createElement(createDocument(),
-                        NameImpl.createFromTagName(tagName));
-    }
-
-    public SOAPElement createElement(Name name) throws SOAPException {
-        // @since SAAJ 1.3
-        // If the Name was null it would cause a NullPointerException in earlier release
-        if (name == null) {
-            log.log(Level.SEVERE,"SAAJ0567.soap.null.input",
-                        new Object[] {"name","SOAPFactory.createElement"});
-            throw new SOAPException("Null name argument passed to createElement");
-        }
-        return ElementFactory.createElement(createDocument(), name);
-    }
-
-    public SOAPElement createElement(QName qname) throws SOAPException {
-        if (qname == null) {
-            log.log(Level.SEVERE,"SAAJ0567.soap.null.input",
-                        new Object[] {"qname","SOAPFactory.createElement"});
-            throw new SOAPException("Null qname argument passed to createElement");
-        }
-        return ElementFactory.createElement(createDocument(),qname);
-    }
-
-    public SOAPElement createElement(
-        String localName,
-        String prefix,
-        String uri)  throws SOAPException {
-
-        // @since SAAJ 1.3
-        // if prefix !=null but localName== null then in earlier releases it would create
-        // a Qualified Name  <prefix>:null which is not meaningful
-        if (localName == null) {
-            log.log(Level.SEVERE,"SAAJ0567.soap.null.input",
-                        new Object[] {"localName","SOAPFactory.createElement"});
-            throw new SOAPException("Null localName argument passed to createElement");
-        }
-        return ElementFactory.createElement(createDocument(), localName, prefix, uri);
-    }
-
-    public Name createName(String localName, String prefix, String uri)
-        throws SOAPException {
-        // @since SAAJ 1.3
-        // if localName==null, earlier impl would create Name with localName=""
-        // which is absurd.
-        if (localName == null) {
-            log.log(
-                 Level.SEVERE,"SAAJ0567.soap.null.input",
-                 new Object[] {"localName","SOAPFactory.createName"});
-            throw new SOAPException("Null localName argument passed to createName");
-        }
-        return NameImpl.create(localName, prefix, uri);
-    }
-
-    public Name createName(String localName) throws SOAPException {
-        // @since SAAJ 1.3
-        // if localName==null, earlier impl would create Name with localName=null
-        // which is absurd.
-        if (localName == null) {
-            log.log(
-                Level.SEVERE,"SAAJ0567.soap.null.input",
-                new Object[] {"localName","SOAPFactory.createName"});
-            throw new SOAPException("Null localName argument passed to createName");
-        }
-        return NameImpl.createFromUnqualifiedName(localName);
-    }
-
-    // Note: the child elements might still be org.w3c.dom.Element's, but the
-    // getChildElements will do the conversion to SOAPElement when called.
-    public SOAPElement createElement(Element domElement) throws SOAPException {
-        if (domElement == null) {
-            return null;
-        }
-        return convertToSoapElement(domElement);
-    }
-
-    private  SOAPElement convertToSoapElement(Element element) throws SOAPException {
-
-        if (element instanceof SOAPElement) {
-            return (SOAPElement) element;
-        }
-
-        SOAPElement copy = createElement(
-                                element.getLocalName(),
-                                element.getPrefix(),
-                                element.getNamespaceURI());
-
-        Document ownerDoc = copy.getOwnerDocument();
-
-        NamedNodeMap attrMap = element.getAttributes();
-        for (int i=0; i < attrMap.getLength(); i++) {
-            Attr nextAttr = (Attr)attrMap.item(i);
-            Attr importedAttr = (Attr)ownerDoc.importNode(nextAttr, true);
-            copy.setAttributeNodeNS(importedAttr);
-        }
-
-
-        NodeList nl = element.getChildNodes();
-        for (int i=0; i < nl.getLength(); i++) {
-            org.w3c.dom.Node next = nl.item(i);
-            org.w3c.dom.Node imported = ownerDoc.importNode(next, true);
-            copy.appendChild(imported);
-        }
-
-        return copy;
-    }
-
-    public Detail createDetail() throws SOAPException {
-        throw new UnsupportedOperationException();
-    }
-
-    public  SOAPFault createFault(String reasonText, QName faultCode) throws SOAPException {
-        throw new UnsupportedOperationException();
-    }
-
-    public SOAPFault createFault() throws SOAPException {
-        throw new UnsupportedOperationException();
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPIOException.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
- * Created on Nov 19, 2002
- *
- * To change this generated comment edit the template variable "filecomment":
- * Window>Preferences>Java>Templates.
- * To enable and disable the creation of file comments go to
- * Window>Preferences>Java>Code Generation.
- */
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import java.io.*;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-
-public class SOAPIOException extends IOException {
-    SOAPExceptionImpl soapException;
-
-    public SOAPIOException() {
-        super();
-        soapException = new SOAPExceptionImpl();
-        soapException.fillInStackTrace();
-    }
-
-    public SOAPIOException(String s) {
-        super();
-        soapException = new SOAPExceptionImpl(s);
-        soapException.fillInStackTrace();
-    }
-
-    public SOAPIOException(String reason, Throwable cause) {
-        super();
-        soapException = new SOAPExceptionImpl(reason, cause);
-        soapException.fillInStackTrace();
-    }
-
-    public SOAPIOException(Throwable cause) {
-        super(cause.toString());
-        soapException = new SOAPExceptionImpl(cause);
-        soapException.fillInStackTrace();
-    }
-
-    public Throwable fillInStackTrace() {
-        if (soapException != null) {
-            soapException.fillInStackTrace();
-        }
-        return this;
-    }
-
-    public String getLocalizedMessage() {
-        return soapException.getLocalizedMessage();
-    }
-
-    public String getMessage() {
-        return soapException.getMessage();
-    }
-
-    public void printStackTrace() {
-        soapException.printStackTrace();
-    }
-
-    public void printStackTrace(PrintStream s) {
-        soapException.printStackTrace(s);
-    }
-
-    public void printStackTrace(PrintWriter s) {
-        soapException.printStackTrace(s);
-    }
-
-    public String toString() {
-        return soapException.toString();
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPPartImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,822 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import java.io.*;
-import java.util.Iterator;
-import java.util.logging.Logger;
-import java.util.logging.Level;
-
-import javax.activation.DataHandler;
-import javax.activation.DataSource;
-import javax.xml.soap.*;
-import javax.xml.transform.Source;
-import javax.xml.transform.stream.StreamSource;
-
-import org.w3c.dom.*;
-
-import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeBodyPart;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.ElementImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-import com.sun.xml.internal.messaging.saaj.util.*;
-
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.sax.SAXSource;
-
-/**
- * SOAPPartImpl is the first attachment. This contains the XML/SOAP document.
- *
- * @author Anil Vijendran (anil@sun.com)
- */
-public abstract class SOAPPartImpl extends SOAPPart implements SOAPDocument {
-    protected static final Logger log =
-        Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
-                         "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
-
-    protected MimeHeaders headers;
-    protected Envelope envelope;
-    protected Source source;
-    protected SOAPDocumentImpl document;
-
-    //flag to indicate if a setContent happened.
-    private boolean sourceWasSet = false;
-
-    // Records whether the input source had an xml decl or not.
-    protected boolean omitXmlDecl = true;
-
-    // Records the charset encoding of the input stream source if provided.
-    protected String sourceCharsetEncoding = null;
-
-    /**
-     * Reference to containing message (may be null)
-     */
-    protected MessageImpl message;
-
-    static final boolean lazyContentLength;
-    static {
-            lazyContentLength = SAAJUtil.getSystemBoolean("saaj.lazy.contentlength");
-    }
-
-    protected SOAPPartImpl() {
-        this(null);
-    }
-
-    protected SOAPPartImpl(MessageImpl message) {
-        document = new SOAPDocumentImpl(this);
-        headers = new MimeHeaders();
-        this.message = message;
-        headers.setHeader("Content-Type", getContentType());
-    }
-
-    protected abstract String getContentType();
-    protected abstract Envelope createEnvelopeFromSource()
-    throws SOAPException;
-    protected abstract Envelope createEmptyEnvelope(String prefix)
-    throws SOAPException;
-    protected abstract SOAPPartImpl duplicateType();
-
-    protected String getContentTypeString() {
-        return getContentType();
-    }
-
-    public boolean isFastInfoset() {
-        return (message != null) ? message.isFastInfoset() : false;
-    }
-
-    public SOAPEnvelope getEnvelope() throws SOAPException {
-
-        // If there is no SOAP envelope already created, then create
-        // one from a source if one exists. If there is a newer source
-        // then use that source.
-
-        if (sourceWasSet)
-              sourceWasSet = false;
-
-        lookForEnvelope();
-        if (envelope != null) {
-            if (source != null) { // there's a newer source, use it
-                document.removeChild(envelope);
-                envelope = createEnvelopeFromSource();
-            }
-        } else if (source != null) {
-            envelope = createEnvelopeFromSource();
-        } else {
-            envelope = createEmptyEnvelope(null);
-            document.insertBefore(envelope, null);
-        }
-        return envelope;
-    }
-
-    protected void lookForEnvelope() throws SOAPException {
-        Element envelopeChildElement = document.doGetDocumentElement();
-        if (envelopeChildElement == null || envelopeChildElement instanceof Envelope) {
-            envelope = (EnvelopeImpl) envelopeChildElement;
-        } else if (!(envelopeChildElement instanceof ElementImpl)) {
-            log.severe("SAAJ0512.soap.incorrect.factory.used");
-            throw new SOAPExceptionImpl("Unable to create envelope: incorrect factory used during tree construction");
-        } else {
-            ElementImpl soapElement = (ElementImpl) envelopeChildElement;
-            if (soapElement.getLocalName().equalsIgnoreCase("Envelope")) {
-                String prefix = soapElement.getPrefix();
-                String uri = (prefix == null) ? soapElement.getNamespaceURI() : soapElement.getNamespaceURI(prefix);
-                if(!uri.equals(NameImpl.SOAP11_NAMESPACE) && !uri.equals(NameImpl.SOAP12_NAMESPACE)) {
-                    log.severe("SAAJ0513.soap.unknown.ns");
-                    throw new SOAPVersionMismatchException("Unable to create envelope from given source because the namespace was not recognized");
-                }
-            } else {
-                log.severe("SAAJ0514.soap.root.elem.not.named.envelope");
-                throw new SOAPExceptionImpl(
-                    "Unable to create envelope from given source because the root element is not named \"Envelope\"");
-            }
-        }
-    }
-
-    public void removeAllMimeHeaders() {
-        headers.removeAllHeaders();
-    }
-
-    public void removeMimeHeader(String header) {
-        headers.removeHeader(header);
-    }
-
-    public String[] getMimeHeader(String name) {
-        return headers.getHeader(name);
-    }
-
-    public void setMimeHeader(String name, String value) {
-        headers.setHeader(name, value);
-    }
-
-    public void addMimeHeader(String name, String value) {
-        headers.addHeader(name, value);
-    }
-
-    public Iterator getAllMimeHeaders() {
-        return headers.getAllHeaders();
-    }
-
-    public Iterator getMatchingMimeHeaders(String[] names) {
-        return headers.getMatchingHeaders(names);
-    }
-
-    public Iterator getNonMatchingMimeHeaders(String[] names) {
-        return headers.getNonMatchingHeaders(names);
-    }
-
-    public Source getContent() throws SOAPException {
-        if (source != null) {
-            InputStream bis = null;
-            if (source instanceof JAXMStreamSource) {
-                StreamSource streamSource = (StreamSource)source;
-                bis = streamSource.getInputStream();
-            } else if (FastInfosetReflection.isFastInfosetSource(source)) {
-                // FastInfosetSource inherits from SAXSource
-                SAXSource saxSource = (SAXSource)source;
-                bis = saxSource.getInputSource().getByteStream();
-            }
-
-            if (bis != null) {
-                try {
-                    bis.reset();
-                } catch (IOException e) {
-                    /* This exception will never be thrown.
-                     *
-                     * The setContent method will modify the source
-                     * if StreamSource to JAXMStreamSource, that uses
-                     * a ByteInputStream, and for a FastInfosetSource will
-                     * replace the InputStream with a ByteInputStream.
-                     */
-                }
-            }
-            return source;
-        }
-
-        return ((Envelope) getEnvelope()).getContent();
-    }
-
-    public void setContent(Source source) throws SOAPException {
-        try {
-            if (source instanceof StreamSource) {
-                InputStream is = ((StreamSource) source).getInputStream();
-                Reader rdr = ((StreamSource) source).getReader();
-
-                if (is != null) {
-                    this.source = new JAXMStreamSource(is);
-                } else if (rdr != null) {
-                    this.source = new JAXMStreamSource(rdr);
-                } else {
-                    log.severe("SAAJ0544.soap.no.valid.reader.for.src");
-                    throw new SOAPExceptionImpl("Source does not have a valid Reader or InputStream");
-                }
-            }
-            else if (FastInfosetReflection.isFastInfosetSource(source)) {
-                // InputStream is = source.getInputStream()
-                InputStream is = FastInfosetReflection.FastInfosetSource_getInputStream(source);
-
-                /*
-                 * Underlying stream must be ByteInputStream for getContentAsStream(). We pay the
-                 * cost of copying the underlying bytes here to avoid multiple copies every time
-                 * getBytes() is called on a ByteInputStream.
-                 */
-                if (!(is instanceof ByteInputStream)) {
-                    ByteOutputStream bout = null;
-                    try {
-                        bout = new ByteOutputStream();
-                        bout.write(is);
-
-                        // source.setInputStream(new ByteInputStream(...))
-                        FastInfosetReflection.FastInfosetSource_setInputStream(
-                                source, bout.newInputStream());
-                    } finally {
-                        if (bout != null)
-                            bout.close();
-                    }
-                }
-                this.source = source;
-            }
-            else {
-                this.source = source;
-            }
-            sourceWasSet = true;
-        }
-        catch (Exception ex) {
-            ex.printStackTrace();
-
-            log.severe("SAAJ0545.soap.cannot.set.src.for.part");
-            throw new SOAPExceptionImpl(
-            "Error setting the source for SOAPPart: " + ex.getMessage());
-        }
-    }
-
-    public InputStream getContentAsStream() throws IOException {
-        if (source != null) {
-            InputStream is = null;
-
-            // Allow message to be transcode if so requested
-            if (source instanceof StreamSource && !isFastInfoset()) {
-                is = ((StreamSource) source).getInputStream();
-            }
-            else if (FastInfosetReflection.isFastInfosetSource(source) &&
-                isFastInfoset())
-            {
-                try {
-                    // InputStream is = source.getInputStream()
-                    is = FastInfosetReflection.FastInfosetSource_getInputStream(source);
-                }
-                catch (Exception e) {
-                    throw new IOException(e.toString());
-                }
-            }
-
-            if (is != null) {
-                if (lazyContentLength) {
-                    return is;
-                }
-                if (!(is instanceof ByteInputStream)) {
-                    log.severe("SAAJ0546.soap.stream.incorrect.type");
-                    throw new IOException("Internal error: stream not of the right type");
-                }
-                return (ByteInputStream) is;
-            }
-            // need to do something here for reader...
-            // for now we'll see if we can fallback...
-        }
-
-        ByteOutputStream b = new ByteOutputStream();
-
-        Envelope env = null;
-
-        try {
-            env = (Envelope) getEnvelope();
-            env.output(b, isFastInfoset());
-        }
-        catch (SOAPException soapException) {
-            log.severe("SAAJ0547.soap.cannot.externalize");
-            throw new SOAPIOException(
-            "SOAP exception while trying to externalize: ",
-            soapException);
-        }
-
-        return b.newInputStream();
-    }
-
-    MimeBodyPart getMimePart() throws SOAPException {
-        try {
-            MimeBodyPart headerEnvelope = new MimeBodyPart();
-
-            headerEnvelope.setDataHandler(getDataHandler());
-            AttachmentPartImpl.copyMimeHeaders(headers, headerEnvelope);
-
-            return headerEnvelope;
-        } catch (SOAPException ex) {
-            throw ex;
-        } catch (Exception ex) {
-            log.severe("SAAJ0548.soap.cannot.externalize.hdr");
-            throw new SOAPExceptionImpl("Unable to externalize header", ex);
-        }
-    }
-
-    MimeHeaders getMimeHeaders() {
-        return headers;
-    }
-
-    DataHandler getDataHandler() {
-        DataSource ds = new DataSource() {
-            public OutputStream getOutputStream() throws IOException {
-                throw new IOException("Illegal Operation");
-            }
-
-            public String getContentType() {
-                return getContentTypeString();
-            }
-
-            public String getName() {
-                return getContentId();
-            }
-
-            public InputStream getInputStream() throws IOException {
-                return getContentAsStream();
-            }
-        };
-        return new DataHandler(ds);
-    }
-
-    public SOAPDocumentImpl getDocument() {
-        handleNewSource();
-        return document;
-    }
-
-    public SOAPPartImpl getSOAPPart() {
-        return this;
-    }
-
-    public DocumentType getDoctype() {
-        return document.getDoctype();
-    }
-
-    // Forward all of these calls to the document to ensure that they work the
-    // same way whether they are called from here or directly from the document.
-    // If the document needs any help from this SOAPPart then
-    // Make it use a call-back as in doGetDocumentElement() below
-    public DOMImplementation getImplementation() {
-        return document.getImplementation();
-    }
-
-    public Element getDocumentElement() {
-        // If there is no SOAP envelope already created, then create
-        // one from a source if one exists. If there is a newer source
-        // then use that source.
-        try {
-            getEnvelope();
-        } catch (SOAPException e) {
-        }
-        return document.getDocumentElement();
-    }
-
-    protected void doGetDocumentElement() {
-        handleNewSource();
-        try {
-            lookForEnvelope();
-        } catch (SOAPException e) {
-        }
-    }
-
-    public Element createElement(String tagName) throws DOMException {
-        return document.createElement(tagName);
-    }
-
-    public DocumentFragment createDocumentFragment() {
-        return document.createDocumentFragment();
-    }
-
-    public org.w3c.dom.Text createTextNode(String data) {
-        return document.createTextNode(data);
-    }
-
-    public Comment createComment(String data) {
-        return document.createComment(data);
-    }
-
-    public CDATASection createCDATASection(String data) throws DOMException {
-        return document.createCDATASection(data);
-    }
-
-    public ProcessingInstruction createProcessingInstruction(
-    String target,
-    String data)
-    throws DOMException {
-        return document.createProcessingInstruction(target, data);
-    }
-
-    public Attr createAttribute(String name) throws DOMException {
-        return document.createAttribute(name);
-    }
-
-    public EntityReference createEntityReference(String name)
-    throws DOMException {
-        return document.createEntityReference(name);
-    }
-
-    public NodeList getElementsByTagName(String tagname) {
-        handleNewSource();
-        return document.getElementsByTagName(tagname);
-    }
-
-    public org.w3c.dom.Node importNode(
-        org.w3c.dom.Node importedNode,
-        boolean deep)
-        throws DOMException {
-        handleNewSource();
-        return document.importNode(importedNode, deep);
-    }
-
-    public Element createElementNS(String namespaceURI, String qualifiedName)
-    throws DOMException {
-        return document.createElementNS(namespaceURI, qualifiedName);
-    }
-
-    public Attr createAttributeNS(String namespaceURI, String qualifiedName)
-    throws DOMException {
-        return document.createAttributeNS(namespaceURI, qualifiedName);
-    }
-
-    public NodeList getElementsByTagNameNS(
-        String namespaceURI,
-        String localName) {
-        handleNewSource();
-        return document.getElementsByTagNameNS(namespaceURI, localName);
-    }
-
-    public Element getElementById(String elementId) {
-        handleNewSource();
-        return document.getElementById(elementId);
-    }
-    public org.w3c.dom.Node appendChild(org.w3c.dom.Node newChild)
-        throws DOMException {
-        handleNewSource();
-        return document.appendChild(newChild);
-    }
-
-    public org.w3c.dom.Node cloneNode(boolean deep) {
-        handleNewSource();
-        return document.cloneNode(deep);
-    }
-
-    protected SOAPPartImpl doCloneNode() {
-        handleNewSource();
-        SOAPPartImpl newSoapPart = duplicateType();
-
-        newSoapPart.headers = MimeHeadersUtil.copy(this.headers);
-        newSoapPart.source = this.source;
-        return newSoapPart;
-    }
-
-    public NamedNodeMap getAttributes() {
-        return document.getAttributes();
-    }
-
-    public NodeList getChildNodes() {
-        handleNewSource();
-        return document.getChildNodes();
-    }
-
-    public org.w3c.dom.Node getFirstChild() {
-        handleNewSource();
-        return document.getFirstChild();
-    }
-
-    public org.w3c.dom.Node getLastChild() {
-        handleNewSource();
-        return document.getLastChild();
-    }
-
-    public String getLocalName() {
-        return document.getLocalName();
-    }
-
-    public String getNamespaceURI() {
-        return document.getNamespaceURI();
-    }
-
-    public org.w3c.dom.Node getNextSibling() {
-        handleNewSource();
-        return document.getNextSibling();
-    }
-
-    public String getNodeName() {
-        return document.getNodeName();
-    }
-
-    public short getNodeType() {
-        return document.getNodeType();
-    }
-
-    public String getNodeValue() throws DOMException {
-        return document.getNodeValue();
-    }
-
-    public Document getOwnerDocument() {
-        return document.getOwnerDocument();
-    }
-
-    public org.w3c.dom.Node getParentNode() {
-        return document.getParentNode();
-    }
-
-    public String getPrefix() {
-        return document.getPrefix();
-    }
-
-    public org.w3c.dom.Node getPreviousSibling() {
-        return document.getPreviousSibling();
-    }
-
-    public boolean hasAttributes() {
-        return document.hasAttributes();
-    }
-
-    public boolean hasChildNodes() {
-        handleNewSource();
-        return document.hasChildNodes();
-    }
-
-    public org.w3c.dom.Node insertBefore(
-        org.w3c.dom.Node arg0,
-        org.w3c.dom.Node arg1)
-        throws DOMException {
-        handleNewSource();
-        return document.insertBefore(arg0, arg1);
-    }
-
-    public boolean isSupported(String arg0, String arg1) {
-        return document.isSupported(arg0, arg1);
-    }
-
-    public void normalize() {
-        handleNewSource();
-        document.normalize();
-    }
-
-    public org.w3c.dom.Node removeChild(org.w3c.dom.Node arg0)
-        throws DOMException {
-        handleNewSource();
-        return document.removeChild(arg0);
-    }
-
-    public org.w3c.dom.Node replaceChild(
-        org.w3c.dom.Node arg0,
-        org.w3c.dom.Node arg1)
-        throws DOMException {
-        handleNewSource();
-        return document.replaceChild(arg0, arg1);
-    }
-
-    public void setNodeValue(String arg0) throws DOMException {
-        document.setNodeValue(arg0);
-    }
-
-    public void setPrefix(String arg0) throws DOMException {
-        document.setPrefix(arg0);
-    }
-
-    private void handleNewSource() {
-        if (sourceWasSet) {
-         // There is a newer source use that source.
-         try {
-             getEnvelope();
-         } catch (SOAPException e) {
-         }
-      }
-    }
-
-    protected XMLDeclarationParser lookForXmlDecl() throws SOAPException {
-        if ((source != null) && (source instanceof StreamSource)) {
-
-            Reader reader = null;
-
-            InputStream inputStream = ((StreamSource) source).getInputStream();
-            if (inputStream != null) {
-                if (getSourceCharsetEncoding() == null) {
-                    reader = new InputStreamReader(inputStream);
-                } else {
-                    try {
-                        reader =
-                            new InputStreamReader(
-                                inputStream, getSourceCharsetEncoding());
-                    } catch (UnsupportedEncodingException uee) {
-                        log.log(
-                            Level.SEVERE,
-                            "SAAJ0551.soap.unsupported.encoding",
-                            new Object[] {getSourceCharsetEncoding()});
-                        throw new SOAPExceptionImpl(
-                            "Unsupported encoding " + getSourceCharsetEncoding(),
-                            uee);
-                    }
-                }
-            } else {
-                reader = ((StreamSource) source).getReader();
-            }
-            if (reader != null) {
-                PushbackReader pushbackReader =
-                    new PushbackReader(reader, 4096); //some size to unread <?xml ....?>
-                XMLDeclarationParser ev =
-                        new XMLDeclarationParser(pushbackReader);
-                try {
-                    ev.parse();
-                } catch (Exception e) {
-                    log.log(
-                        Level.SEVERE,
-                        "SAAJ0552.soap.xml.decl.parsing.failed");
-                    throw new SOAPExceptionImpl(
-                        "XML declaration parsing failed", e);
-                }
-                String xmlDecl = ev.getXmlDeclaration();
-                if ((xmlDecl != null) && (xmlDecl.length() > 0)) {
-                    this.omitXmlDecl = false;
-                }
-                if (lazyContentLength) {
-                    source = new StreamSource(pushbackReader);
-                }
-                return ev;
-            }
-        } else if ((source != null) && (source instanceof DOMSource)) {
-           //TODO: A Domsource maynot contain XMLDecl ?.
-        }
-        return null;
-    }
-
-    public void setSourceCharsetEncoding(String charset) {
-        this.sourceCharsetEncoding = charset;
-    }
-
-    public org.w3c.dom.Node renameNode(org.w3c.dom.Node n, String namespaceURI, String qualifiedName)
-        throws DOMException {
-        handleNewSource();
-        return document.renameNode(n, namespaceURI, qualifiedName);
-    }
-
-    public void normalizeDocument() {
-        document.normalizeDocument();
-    }
-
-    public DOMConfiguration getDomConfig() {
-        return document.getDomConfig();
-    }
-
-    public org.w3c.dom.Node adoptNode(org.w3c.dom.Node source) throws DOMException {
-        handleNewSource();
-        return document.adoptNode(source);
-    }
-
-    public void setDocumentURI(String documentURI) {
-        document.setDocumentURI(documentURI);
-    }
-
-    public String getDocumentURI() {
-        return document.getDocumentURI();
-    }
-
-    public void  setStrictErrorChecking(boolean strictErrorChecking) {
-        document.setStrictErrorChecking(strictErrorChecking);
-    }
-
-    public String getInputEncoding() {
-        return document.getInputEncoding();
-    }
-
-    public String getXmlEncoding() {
-        return document.getXmlEncoding();
-    }
-
-    public boolean getXmlStandalone() {
-        return document.getXmlStandalone();
-    }
-
-    public void setXmlStandalone(boolean xmlStandalone) throws DOMException {
-        document.setXmlStandalone(xmlStandalone);
-    }
-
-    public String getXmlVersion() {
-        return document.getXmlVersion();
-    }
-
-    public void setXmlVersion(String xmlVersion) throws DOMException {
-        document.setXmlVersion(xmlVersion);
-    }
-
-    public boolean  getStrictErrorChecking() {
-        return document.getStrictErrorChecking();
-    }
-
-    // DOM L3 methods from org.w3c.dom.Node
-    public String getBaseURI() {
-        return document.getBaseURI();
-    }
-
-    public short compareDocumentPosition(org.w3c.dom.Node other)
-                              throws DOMException {
-        return document.compareDocumentPosition(other);
-    }
-
-    public String getTextContent()
-                      throws DOMException {
-        return document.getTextContent();
-    }
-
-    public void setTextContent(String textContent) throws DOMException {
-         document.setTextContent(textContent);
-    }
-
-    public boolean isSameNode(org.w3c.dom.Node other) {
-        return document.isSameNode(other);
-    }
-
-    public String lookupPrefix(String namespaceURI) {
-        return document.lookupPrefix(namespaceURI);
-    }
-
-    public boolean isDefaultNamespace(String namespaceURI) {
-        return document.isDefaultNamespace(namespaceURI);
-    }
-
-    public String lookupNamespaceURI(String prefix) {
-        return document.lookupNamespaceURI(prefix);
-    }
-
-    public boolean isEqualNode(org.w3c.dom.Node arg) {
-        return document.isEqualNode(arg);
-    }
-
-    public Object getFeature(String feature,
-                  String version) {
-        return  document.getFeature(feature,version);
-    }
-
-    public Object setUserData(String key,
-                   Object data,
-                  UserDataHandler handler) {
-        return document.setUserData(key, data, handler);
-    }
-
-    public Object getUserData(String key) {
-        return document.getUserData(key);
-    }
-
-    public void recycleNode() {
-        // Nothing seems to be required to be done here
-    }
-
-    public String getValue() {
-        return null;
-    }
-
-    public void setValue(String value) {
-        log.severe("SAAJ0571.soappart.setValue.not.defined");
-        throw new IllegalStateException("Setting value of a soap part is not defined");
-    }
-
-    public void setParentElement(SOAPElement parent) throws SOAPException {
-        log.severe("SAAJ0570.soappart.parent.element.not.defined");
-        throw new SOAPExceptionImpl("The parent element of a soap part is not defined");
-    }
-
-    public SOAPElement getParentElement() {
-        return null;
-    }
-
-    public void detachNode() {
-        // Nothing seems to be required to be done here
-    }
-
-    public String getSourceCharsetEncoding() {
-        return sourceCharsetEncoding;
-    }
-
-    public abstract String getSOAPNamespace();
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPVersionMismatchException.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-
-public class SOAPVersionMismatchException extends SOAPExceptionImpl {
-    /**
-     * Constructs a <code>SOAPExceptionImpl</code> object with no
-     * reason or embedded <code>Throwable</code> object.
-     */
-    public SOAPVersionMismatchException() {
-        super();
-    }
-
-    /**
-     * Constructs a <code>SOAPExceptionImpl</code> object with the given
-     * <code>String</code> as the reason for the exception being thrown.
-     *
-     * @param reason a description of what caused the exception
-     */
-    public SOAPVersionMismatchException(String reason) {
-        super(reason);
-    }
-
-    /**
-     * Constructs a <code>SOAPExceptionImpl</code> object with the given
-     * <code>String</code> as the reason for the exception being thrown
-     * and the given <code>Throwable</code> object as an embedded
-     * exception.
-     *
-     * @param reason a description of what caused the exception
-     * @param cause a <code>Throwable</code> object that is to
-     *        be embedded in this <code>SOAPExceptionImpl</code> object
-     */
-    public SOAPVersionMismatchException(String reason, Throwable cause) {
-        super(reason, cause);
-    }
-
-    /**
-     * Constructs a <code>SOAPExceptionImpl</code> object initialized
-     * with the given <code>Throwable</code> object.
-     */
-    public SOAPVersionMismatchException(Throwable cause) {
-        super(cause);
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/StaxBridge.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import com.sun.xml.internal.messaging.saaj.util.stax.SaajStaxWriter;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.SOAPException;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-import com.sun.xml.internal.org.jvnet.staxex.util.XMLStreamReaderToXMLStreamWriter;
-
-
-/**
- * StaxBridge builds Envelope using a XMLStreamReaderToXMLStreamWriter
- *
- * @author shih-chang.chen@oracle.com
- */
-public abstract class StaxBridge {
-        protected SaajStaxWriter saajWriter;
-        protected XMLStreamReaderToXMLStreamWriter readerToWriter;
-        protected XMLStreamReaderToXMLStreamWriter.Breakpoint breakpoint;
-
-
-        public StaxBridge(SOAPPartImpl soapPart) throws SOAPException {
-                readerToWriter = new XMLStreamReaderToXMLStreamWriter();
-                saajWriter = new SaajStaxWriter(soapPart.message, soapPart.getSOAPNamespace());
-        }
-
-        public void bridgeEnvelopeAndHeaders() throws XMLStreamException {
-                readerToWriter.bridge(breakpoint);
-        }
-
-        public void bridgePayload() throws XMLStreamException {
-                readerToWriter.bridge(breakpoint);
-        }
-
-    abstract public XMLStreamReader getPayloadReader();
-
-    abstract public QName getPayloadQName();
-
-    abstract public String getPayloadAttributeValue(String attName) ;
-
-    abstract public String getPayloadAttributeValue(QName attName) ;
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/StaxLazySourceBridge.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.SOAPException;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.stream.XMLStreamWriter;
-
-import com.sun.xml.internal.messaging.saaj.LazyEnvelopeSource;
-import com.sun.xml.internal.org.jvnet.staxex.util.XMLStreamReaderToXMLStreamWriter;
-
-
-/**
- * StaxBridge builds Envelope from LazyEnvelopeSource
- *
- * @author shih-chang.chen@oracle.com
- */
-public class StaxLazySourceBridge extends StaxBridge {
-        private LazyEnvelopeSource lazySource;
-
-        public StaxLazySourceBridge(LazyEnvelopeSource src, SOAPPartImpl soapPart) throws SOAPException {
-                super(soapPart);
-                lazySource = src;
-                final String soapEnvNS = soapPart.getSOAPNamespace();
-                try {
-                        breakpoint = new XMLStreamReaderToXMLStreamWriter.Breakpoint(src.readToBodyStarTag(), saajWriter) {
-                                        public boolean proceedAfterStartElement()  {
-                                                if ("Body".equals(reader.getLocalName()) && soapEnvNS.equals(reader.getNamespaceURI()) ){
-                                                        return false;
-                                                } else
-                                                        return true;
-                                        }
-                                };
-                } catch (XMLStreamException e) {
-                        throw new SOAPException(e);
-                }
-        }
-
-        @Override
-    public XMLStreamReader getPayloadReader() {
-        return lazySource.readPayload();
-//              throw new UnsupportedOperationException();
-    }
-
-        @Override
-    public QName getPayloadQName() {
-        return lazySource.getPayloadQName();
-    }
-
-        @Override
-    public String getPayloadAttributeValue(String attName) {
-        if (lazySource.isPayloadStreamReader()) {
-            XMLStreamReader reader = lazySource.readPayload();
-            if (reader.getEventType() == reader.START_ELEMENT) {
-                return reader.getAttributeValue(null, attName);
-            }
-        }
-        return null;
-    }
-
-        @Override
-    public String getPayloadAttributeValue(QName attName) {
-        if (lazySource.isPayloadStreamReader()) {
-            XMLStreamReader reader = lazySource.readPayload();
-            if (reader.getEventType() == reader.START_ELEMENT) {
-                return reader.getAttributeValue(attName.getNamespaceURI(), attName.getLocalPart());
-            }
-        }
-        return null;
-    }
-
-        public void bridgePayload() throws XMLStreamException {
-                //Assuming out is at Body
-                writePayloadTo(saajWriter);
-        }
-
-        public void writePayloadTo(XMLStreamWriter writer) throws XMLStreamException {
-        lazySource.writePayloadTo(writer);
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/StaxReaderBridge.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.SOAPException;
-import javax.xml.stream.XMLStreamReader;
-
-import com.sun.xml.internal.org.jvnet.staxex.util.XMLStreamReaderToXMLStreamWriter;
-
-/**
- * StaxBridge builds Envelope using a XMLStreamReaderToXMLStreamWriter
- *
- * @author shih-chang.chen@oracle.com
- */
-public class StaxReaderBridge extends StaxBridge {
-        private XMLStreamReader in;
-
-        public StaxReaderBridge(XMLStreamReader reader, SOAPPartImpl soapPart) throws SOAPException {
-                super(soapPart);
-                in = reader;
-                final String soapEnvNS = soapPart.getSOAPNamespace();
-                breakpoint =  new XMLStreamReaderToXMLStreamWriter.Breakpoint(reader, saajWriter) {
-                        boolean seenBody = false;
-                        boolean stopedAtBody = false;
-                    public boolean proceedBeforeStartElement()  {
-                        if (stopedAtBody) return true;
-                        if (seenBody) {
-                                stopedAtBody = true;
-                                return false;
-                        }
-                            if ("Body".equals(reader.getLocalName()) && soapEnvNS.equals(reader.getNamespaceURI()) ){
-                                seenBody = true;
-                            }
-                            return true;
-                    }
-                };
-        }
-
-    public XMLStreamReader getPayloadReader() {
-        return in;
-    }
-
-    public QName getPayloadQName() {
-        return (in.getEventType() == in.START_ELEMENT) ? in.getName() : null;
-    }
-
-    public String getPayloadAttributeValue(String attName) {
-        return (in.getEventType() == in.START_ELEMENT) ? in.getAttributeValue(null, attName) : null;
-    }
-
-    public String getPayloadAttributeValue(QName attName) {
-        return (in.getEventType() == in.START_ELEMENT) ? in.getAttributeValue(attName.getNamespaceURI(), attName.getLocalPart()) : null;
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/StringDataContentHandler.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,167 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import java.awt.datatransfer.DataFlavor;
-import java.io.*;
-
-import javax.activation.*;
-import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeUtility;
-import com.sun.xml.internal.messaging.saaj.packaging.mime.util.ASCIIUtility;
-import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.ContentType;
-
-/**
- * JAF data content handler for text/plain --> String
- *
- */
-public class StringDataContentHandler implements DataContentHandler {
-    private static ActivationDataFlavor myDF = new ActivationDataFlavor(
-        java.lang.String.class,
-        "text/plain",
-        "Text String");
-
-    protected ActivationDataFlavor getDF() {
-        return myDF;
-    }
-
-    /**
-     * Return the DataFlavors for this <code>DataContentHandler</code>.
-     *
-     * @return The DataFlavors
-     */
-    public DataFlavor[] getTransferDataFlavors() {
-        return new DataFlavor[] { getDF() };
-    }
-
-    /**
-     * Return the Transfer Data of type DataFlavor from InputStream.
-     *
-     * @param df The DataFlavor
-     * @param ds The DataSource corresponding to the data
-     * @return String object
-     */
-    public Object getTransferData(DataFlavor df, DataSource ds)
-                        throws IOException {
-        // use myDF.equals to be sure to get ActivationDataFlavor.equals,
-        // which properly ignores Content-Type parameters in comparison
-        if (getDF().equals(df))
-            return getContent(ds);
-        else
-            return null;
-    }
-
-    public Object getContent(DataSource ds) throws IOException {
-        String enc = null;
-        InputStreamReader is = null;
-
-        try {
-            enc = getCharset(ds.getContentType());
-            is = new InputStreamReader(ds.getInputStream(), enc);
-        } catch (IllegalArgumentException iex) {
-            /*
-             * An unknown charset of the form ISO-XXX-XXX will cause
-             * the JDK to throw an IllegalArgumentException.  The
-             * JDK will attempt to create a classname using this string,
-             * but valid classnames must not contain the character '-',
-             * and this results in an IllegalArgumentException, rather than
-             * the expected UnsupportedEncodingException.  Yikes.
-             */
-            throw new UnsupportedEncodingException(enc);
-        }
-
-        try {
-            int pos = 0;
-            int count;
-            char buf[] = new char[1024];
-
-            while ((count = is.read(buf, pos, buf.length - pos)) != -1) {
-                pos += count;
-                if (pos >= buf.length) {
-                    int size = buf.length;
-                    if (size < 256*1024)
-                        size += size;
-                    else
-                        size += 256*1024;
-                    char tbuf[] = new char[size];
-                    System.arraycopy(buf, 0, tbuf, 0, pos);
-                    buf = tbuf;
-                }
-            }
-            return new String(buf, 0, pos);
-        } finally {
-            try {
-                is.close();
-            } catch (IOException ex) { }
-        }
-    }
-
-    /**
-     * Write the object to the output stream, using the specified MIME type.
-     */
-    public void writeTo(Object obj, String type, OutputStream os)
-                        throws IOException {
-        if (!(obj instanceof String))
-            throw new IOException("\"" + getDF().getMimeType() +
-                "\" DataContentHandler requires String object, " +
-                "was given object of type " + obj.getClass().toString());
-
-        String enc = null;
-        OutputStreamWriter osw = null;
-
-        try {
-            enc = getCharset(type);
-            osw = new OutputStreamWriter(os, enc);
-        } catch (IllegalArgumentException iex) {
-            /*
-             * An unknown charset of the form ISO-XXX-XXX will cause
-             * the JDK to throw an IllegalArgumentException.  The
-             * JDK will attempt to create a classname using this string,
-             * but valid classnames must not contain the character '-',
-             * and this results in an IllegalArgumentException, rather than
-             * the expected UnsupportedEncodingException.  Yikes.
-             */
-            throw new UnsupportedEncodingException(enc);
-        }
-
-        String s = (String)obj;
-        osw.write(s, 0, s.length());
-        osw.flush();
-    }
-
-    private String getCharset(String type) {
-        try {
-            ContentType ct = new ContentType(type);
-            String charset = ct.getParameter("charset");
-            if (charset == null)
-                // If the charset parameter is absent, use US-ASCII.
-                charset = "us-ascii";
-            return MimeUtility.javaCharset(charset);
-        } catch (Exception ex) {
-            return null;
-        }
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/XmlDataContentHandler.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap;
-
-import java.awt.datatransfer.DataFlavor;
-import java.io.IOException;
-import java.io.OutputStream;
-
-import javax.activation.*;
-import javax.xml.transform.Source;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
-import com.sun.xml.internal.messaging.saaj.util.transform.EfficientStreamingTransformer;
-
-/**
- * JAF data handler for XML content
- *
- * @author Anil Vijendran
- */
-public class XmlDataContentHandler implements DataContentHandler {
-    public static final String STR_SRC = "javax.xml.transform.stream.StreamSource";
-    private static Class streamSourceClass = null;
-
-    public XmlDataContentHandler() throws ClassNotFoundException {
-        if (streamSourceClass == null) {
-            streamSourceClass = Class.forName(STR_SRC);
-        }
-    }
-
-    /**
-     * return the DataFlavors for this <code>DataContentHandler</code>
-     * @return The DataFlavors.
-     */
-    public DataFlavor[] getTransferDataFlavors() { // throws Exception;
-        DataFlavor flavors[] = new DataFlavor[2];
-
-        flavors[0] =
-            new ActivationDataFlavor(streamSourceClass, "text/xml", "XML");
-        flavors[1] =
-            new ActivationDataFlavor(streamSourceClass, "application/xml", "XML");
-
-        return flavors;
-    }
-
-    /**
-     * return the Transfer Data of type DataFlavor from InputStream
-     * @param df The DataFlavor.
-     * @param ins The InputStream corresponding to the data.
-     * @return The constructed Object.
-     */
-    public Object getTransferData(DataFlavor flavor, DataSource dataSource)
-        throws IOException {
-        if (flavor.getMimeType().startsWith("text/xml") ||
-                flavor.getMimeType().startsWith("application/xml")) {
-            if (flavor.getRepresentationClass().getName().equals(STR_SRC)) {
-                return new StreamSource(dataSource.getInputStream());
-            }
-        }
-        return null;
-    }
-
-    /**
-     *
-     */
-    public Object getContent(DataSource dataSource) throws IOException {
-        return new StreamSource(dataSource.getInputStream());
-    }
-
-    /**
-     * construct an object from a byte stream
-     * (similar semantically to previous method, we are deciding
-     *  which one to support)
-     */
-    public void writeTo(Object obj, String mimeType, OutputStream os)
-        throws IOException {
-        if (!mimeType.startsWith("text/xml") && !mimeType.startsWith("application/xml"))
-            throw new IOException(
-                "Invalid content type \"" + mimeType + "\" for XmlDCH");
-
-
-        try {
-            Transformer transformer = EfficientStreamingTransformer.newTransformer();
-            StreamResult result = new StreamResult(os);
-            if (obj instanceof DataSource) {
-                // Streaming transform applies only to javax.xml.transform.StreamSource
-                transformer.transform((Source) getContent((DataSource)obj), result);
-            } else {
-                Source src=null;
-                if (obj instanceof String) {
-                     src= new StreamSource(new java.io.StringReader((String) obj));
-                } else {
-                    src=(Source) obj;
-                }
-                transformer.transform(src, result);
-            }
-        } catch (Exception ex) {
-            throw new IOException(
-                "Unable to run the JAXP transformer on a stream "
-                    + ex.getMessage());
-        }
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/dynamic/SOAPFactoryDynamicImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.dynamic;
-
-import javax.xml.soap.Detail;
-import javax.xml.soap.SOAPException;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPFactoryImpl;
-
-public class SOAPFactoryDynamicImpl extends SOAPFactoryImpl {
-    protected SOAPDocumentImpl createDocument() {
-        return null;
-    }
-
-    public Detail createDetail() throws SOAPException {
-        throw new UnsupportedOperationException(
-                "createDetail() not supported for Dynamic Protocol");
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/dynamic/SOAPMessageFactoryDynamicImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.dynamic;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import javax.xml.soap.*;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-import com.sun.xml.internal.messaging.saaj.soap.MessageFactoryImpl;
-
-public class SOAPMessageFactoryDynamicImpl extends MessageFactoryImpl {
-    public SOAPMessage createMessage() throws SOAPException {
-        throw new UnsupportedOperationException(
-                "createMessage() not supported for Dynamic Protocol");
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/BodyElementImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap.impl;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.*;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-
-/**
- * All elements of the SOAP-ENV:BODY.
- *
- * @author Anil Vijendran (akv@eng.sun.com)
- */
-public abstract class BodyElementImpl
-    extends ElementImpl
-    implements SOAPBodyElement {
-
-    public BodyElementImpl(SOAPDocumentImpl ownerDoc, Name qname) {
-        super(ownerDoc, qname);
-    }
-
-    public BodyElementImpl(SOAPDocumentImpl ownerDoc, QName qname) {
-        super(ownerDoc, qname);
-    }
-
-    public void setParentElement(SOAPElement element) throws SOAPException {
-        if (! (element instanceof SOAPBody)) {
-            log.severe("SAAJ0101.impl.parent.of.body.elem.mustbe.body");
-            throw new SOAPException("Parent of a SOAPBodyElement has to be a SOAPBody");
-        }
-        super.setParentElement(element);
-    }
-
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/BodyImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,467 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap.impl;
-
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.logging.Level;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.*;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import org.w3c.dom.*;
-import org.w3c.dom.Node;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.StaxBridge;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-
-/**
- * The implementation of SOAP-ENV:BODY or the SOAPBody abstraction.
- *
- * @author Anil Vijendran (anil@sun.com)
- */
-public abstract class BodyImpl extends ElementImpl implements SOAPBody {
-    private SOAPFault fault;
-//  private XMLStreamReaderToXMLStreamWriter staxBridge;
-    private StaxBridge staxBridge;
-    private boolean payloadStreamRead = false;
-
-    protected BodyImpl(SOAPDocumentImpl ownerDoc, NameImpl bodyName) {
-        super(ownerDoc, bodyName);
-    }
-
-    protected abstract NameImpl getFaultName(String name);
-    protected abstract boolean isFault(SOAPElement child);
-    protected abstract SOAPBodyElement createBodyElement(Name name);
-    protected abstract SOAPBodyElement createBodyElement(QName name);
-    protected abstract SOAPFault createFaultElement();
-    protected abstract QName getDefaultFaultCode();
-
-    public SOAPFault addFault() throws SOAPException {
-        if (hasFault()) {
-            log.severe("SAAJ0110.impl.fault.already.exists");
-            throw new SOAPExceptionImpl("Error: Fault already exists");
-        }
-
-        fault = createFaultElement();
-
-        addNode(fault);
-
-        fault.setFaultCode(getDefaultFaultCode());
-        fault.setFaultString("Fault string, and possibly fault code, not set");
-
-        return fault;
-    }
-
-    public SOAPFault addFault(
-        Name faultCode,
-        String faultString,
-        Locale locale)
-        throws SOAPException {
-
-        SOAPFault fault = addFault();
-        fault.setFaultCode(faultCode);
-        fault.setFaultString(faultString, locale);
-        return fault;
-    }
-
-   public SOAPFault addFault(
-        QName faultCode,
-        String faultString,
-        Locale locale)
-        throws SOAPException {
-
-        SOAPFault fault = addFault();
-        fault.setFaultCode(faultCode);
-        fault.setFaultString(faultString, locale);
-        return fault;
-    }
-
-    public SOAPFault addFault(Name faultCode, String faultString)
-        throws SOAPException {
-
-        SOAPFault fault = addFault();
-        fault.setFaultCode(faultCode);
-        fault.setFaultString(faultString);
-        return fault;
-    }
-
-    public SOAPFault addFault(QName faultCode, String faultString)
-        throws SOAPException {
-
-        SOAPFault fault = addFault();
-        fault.setFaultCode(faultCode);
-        fault.setFaultString(faultString);
-        return fault;
-    }
-
-    void initializeFault() {
-        FaultImpl flt = (FaultImpl) findFault();
-        fault = flt;
-    }
-
-    protected SOAPElement findFault() {
-        Iterator eachChild = getChildElementNodes();
-        while (eachChild.hasNext()) {
-            SOAPElement child = (SOAPElement) eachChild.next();
-            if (isFault(child)) {
-                return child;
-            }
-        }
-
-        return null;
-    }
-
-    public boolean hasFault() {
-        QName payloadQName = getPayloadQName();
-        return getFaultQName().equals(payloadQName);
-    }
-
-    private Object getFaultQName() {
-        return new QName(getNamespaceURI(), "Fault");
-    }
-
-    public SOAPFault getFault() {
-        if (hasFault()) {
-            if (fault == null) {
-                //initialize fault member
-                fault = (SOAPFault) getFirstChildElement();
-            }
-            return fault;
-        }
-        return null;
-    }
-
-    public SOAPBodyElement addBodyElement(Name name) throws SOAPException {
-        SOAPBodyElement newBodyElement =
-            (SOAPBodyElement) ElementFactory.createNamedElement(
-                ((SOAPDocument) getOwnerDocument()).getDocument(),
-                name.getLocalName(),
-                name.getPrefix(),
-                name.getURI());
-        if (newBodyElement == null) {
-            newBodyElement = createBodyElement(name);
-        }
-        addNode(newBodyElement);
-        return newBodyElement;
-    }
-
-    public SOAPBodyElement addBodyElement(QName qname) throws SOAPException {
-        SOAPBodyElement newBodyElement =
-            (SOAPBodyElement) ElementFactory.createNamedElement(
-                ((SOAPDocument) getOwnerDocument()).getDocument(),
-                qname.getLocalPart(),
-                qname.getPrefix(),
-                qname.getNamespaceURI());
-        if (newBodyElement == null) {
-            newBodyElement = createBodyElement(qname);
-        }
-        addNode(newBodyElement);
-        return newBodyElement;
-    }
-
-    public void setParentElement(SOAPElement element) throws SOAPException {
-
-        if (!(element instanceof SOAPEnvelope)) {
-            log.severe("SAAJ0111.impl.body.parent.must.be.envelope");
-            throw new SOAPException("Parent of SOAPBody has to be a SOAPEnvelope");
-        }
-        super.setParentElement(element);
-    }
-
-    protected SOAPElement addElement(Name name) throws SOAPException {
-        return addBodyElement(name);
-    }
-
-    protected SOAPElement addElement(QName name) throws SOAPException {
-        return addBodyElement(name);
-    }
-
-    //    public Node insertBefore(Node newElement, Node ref) throws DOMException {
-    //        if (!(newElement instanceof SOAPBodyElement) && (newElement instanceof SOAPElement)) {
-    //            newElement = new ElementWrapper((ElementImpl) newElement);
-    //        }
-    //        return super.insertBefore(newElement, ref);
-    //    }
-    //
-    //    public Node replaceChild(Node newElement, Node ref) throws DOMException {
-    //        if (!(newElement instanceof SOAPBodyElement) && (newElement instanceof SOAPElement)) {
-    //            newElement = new ElementWrapper((ElementImpl) newElement);
-    //        }
-    //        return super.replaceChild(newElement, ref);
-    //    }
-
-    public SOAPBodyElement addDocument(Document document)
-        throws SOAPException {
-        /*
-
-                Element rootNode =
-                    document.getDocumentElement();
-                // Causes all deferred nodes to be inflated
-                rootNode.normalize();
-                adoptElement(rootNode);
-                SOAPBodyElement bodyElement = (SOAPBodyElement) convertToSoapElement(rootNode);
-                addNode(bodyElement);
-                return bodyElement;
-        */
-        ///*
-        SOAPBodyElement newBodyElement = null;
-        DocumentFragment docFrag = document.createDocumentFragment();
-        Element rootElement = document.getDocumentElement();
-        if(rootElement != null) {
-            docFrag.appendChild(rootElement);
-
-            Document ownerDoc = getOwnerDocument();
-            // This copies the whole tree which could be very big so it's slow.
-            // However, it does have the advantage of actually working.
-            org.w3c.dom.Node replacingNode = ownerDoc.importNode(docFrag, true);
-            // Adding replacingNode at the last of the children list of body
-            addNode(replacingNode);
-            Iterator i =
-                getChildElements(NameImpl.copyElementName(rootElement));
-            // Return the child element with the required name which is at the
-            // end of the list
-            while(i.hasNext())
-                newBodyElement = (SOAPBodyElement) i.next();
-        }
-        return newBodyElement;
-        //*/
-    }
-
-    protected SOAPElement convertToSoapElement(Element element) {
-        if ((element instanceof SOAPBodyElement) &&
-            //this check is required because ElementImpl currently
-            // implements SOAPBodyElement
-            !(element.getClass().equals(ElementImpl.class))) {
-            return (SOAPElement) element;
-        } else {
-            return replaceElementWithSOAPElement(
-                element,
-                (ElementImpl) createBodyElement(NameImpl
-                    .copyElementName(element)));
-        }
-    }
-
-    public SOAPElement setElementQName(QName newName) throws SOAPException {
-        log.log(Level.SEVERE,
-                "SAAJ0146.impl.invalid.name.change.requested",
-                new Object[] {elementQName.getLocalPart(),
-                              newName.getLocalPart()});
-        throw new SOAPException("Cannot change name for "
-                                + elementQName.getLocalPart() + " to "
-                                + newName.getLocalPart());
-    }
-
-    public Document extractContentAsDocument() throws SOAPException {
-
-        Iterator eachChild = getChildElements();
-        javax.xml.soap.Node firstBodyElement = null;
-
-        while (eachChild.hasNext() &&
-               !(firstBodyElement instanceof SOAPElement))
-            firstBodyElement = (javax.xml.soap.Node) eachChild.next();
-
-        boolean exactlyOneChildElement = true;
-        if (firstBodyElement == null)
-            exactlyOneChildElement = false;
-        else {
-            for (org.w3c.dom.Node node = firstBodyElement.getNextSibling();
-                 node != null;
-                 node = node.getNextSibling()) {
-
-                if (node instanceof Element) {
-                    exactlyOneChildElement = false;
-                    break;
-                }
-            }
-        }
-
-        if(!exactlyOneChildElement) {
-            log.log(Level.SEVERE,
-                    "SAAJ0250.impl.body.should.have.exactly.one.child");
-            throw new SOAPException("Cannot extract Document from body");
-        }
-
-        Document document = null;
-        try {
-            DocumentBuilderFactory factory =
-                new com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl();
-            factory.setNamespaceAware(true);
-            DocumentBuilder builder = factory.newDocumentBuilder();
-            document = builder.newDocument();
-
-            Element rootElement = (Element) document.importNode(
-                                                firstBodyElement,
-                                                true);
-
-            document.appendChild(rootElement);
-
-        } catch(Exception e) {
-            log.log(Level.SEVERE,
-                    "SAAJ0251.impl.cannot.extract.document.from.body");
-            throw new SOAPExceptionImpl(
-                "Unable to extract Document from body", e);
-        }
-
-        firstBodyElement.detachNode();
-
-        return document;
-    }
-
-    private void materializePayloadWrapException() {
-        try {
-            materializePayload();
-        } catch (SOAPException e) {
-            throw new RuntimeException(e);
-        }
-    }
-    private void materializePayload() throws SOAPException {
-        if (staxBridge != null) {
-            if (payloadStreamRead) {
-                //the payload has already been read via stream reader and the
-                //stream has been exhausted already. Throw an
-                //exception since we are now trying to materialize as DOM and
-                //there is no stream left to read
-                throw new SOAPException("SOAPBody payload stream has been fully read - cannot materialize as DOM!");
-            }
-            try {
-                staxBridge.bridgePayload();
-                staxBridge = null;
-                payloadStreamRead = true;
-            } catch (XMLStreamException e) {
-                throw new SOAPException(e);
-            }
-        }
-    }
-
-    @Override
-    public boolean hasChildNodes() {
-        boolean hasChildren = super.hasChildNodes();
-        //to answer this question we need to know _whether_ we have at least one child
-        //So no need to materialize body if we already know we have a header child
-        if (!hasChildren) {
-            materializePayloadWrapException();
-        }
-        return super.hasChildNodes();
-    }
-
-    @Override
-    public NodeList getChildNodes() {
-        materializePayloadWrapException();
-        return super.getChildNodes();
-    }
-
-    @Override
-    public Node getFirstChild() {
-        Node child = super.getFirstChild();
-        if (child == null) {
-            materializePayloadWrapException();
-        }
-        return super.getFirstChild();
-    }
-
-    public Node getFirstChildNoMaterialize() {
-        return super.getFirstChild();
-    }
-
-    @Override
-    public Node getLastChild() {
-        materializePayloadWrapException();
-        return super.getLastChild();
-    }
-
-    XMLStreamReader getPayloadReader() {
-        return staxBridge.getPayloadReader();
-    }
-
-    void setStaxBridge(StaxBridge bridge) {
-        this.staxBridge = bridge;
-    }
-
-    StaxBridge getStaxBridge() {
-        return staxBridge;
-    }
-
-    void setPayloadStreamRead() {
-        this.payloadStreamRead = true;
-    }
-
-    QName getPayloadQName() {
-        if (staxBridge != null) {
-                return staxBridge.getPayloadQName();
-        } else {
-            //not lazy - Just get first child element and return its name
-            Element elem = getFirstChildElement();
-            if (elem != null) {
-                String ns = elem.getNamespaceURI();
-                String pref = elem.getPrefix();
-                String local = elem.getLocalName();
-                if (pref != null) return new QName(ns, local, pref);
-                if (ns != null) return new QName(ns, local);
-                return new QName(local);
-            }
-        }
-        return null;
-    }
-
-    String getPayloadAttributeValue(String attName) {
-        if (staxBridge != null) {
-            return staxBridge.getPayloadAttributeValue(attName);
-        } else {
-            //not lazy -Just get first child element and return its attribute
-            Element elem = getFirstChildElement();
-            if (elem != null) {
-                return elem.getAttribute(localName);
-            }
-        }
-        return null;
-    }
-
-    String getPayloadAttributeValue(QName attNAme) {
-        if (staxBridge != null) {
-            return staxBridge.getPayloadAttributeValue(attNAme);
-        } else {
-            //not lazy -Just get first child element and return its attribute
-            Element elem = getFirstChildElement();
-            if (elem != null) {
-                return elem.getAttributeNS(attNAme.getNamespaceURI(), attNAme.getLocalPart());
-            }
-        }
-        return null;
-    }
-
-    public boolean isLazy() {
-        return (staxBridge != null && !payloadStreamRead);
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/CDATAImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap.impl;
-
-import java.util.logging.Logger;
-
-import javax.xml.soap.SOAPElement;
-import javax.xml.soap.SOAPException;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
-
-public class CDATAImpl
-    extends com.sun.org.apache.xerces.internal.dom.CDATASectionImpl
-    implements javax.xml.soap.Text {
-
-    protected static final Logger log =
-        Logger.getLogger(LogDomainConstants.SOAP_IMPL_DOMAIN,
-                         "com.sun.xml.internal.messaging.saaj.soap.impl.LocalStrings");
-
-    static final String cdataUC = "<![CDATA[";
-    static final String cdataLC = "<![cdata[";
-
-    public CDATAImpl(SOAPDocumentImpl ownerDoc, String text) {
-        super(ownerDoc, text);
-    }
-
-    public String getValue() {
-        String nodeValue = getNodeValue();
-        return (nodeValue.equals("") ? null : nodeValue);
-    }
-
-    public void setValue(String text) {
-        setNodeValue(text);
-    }
-
-    public void setParentElement(SOAPElement parent) throws SOAPException {
-        if (parent == null) {
-            log.severe("SAAJ0145.impl.no.null.to.parent.elem");
-            throw new SOAPException("Cannot pass NULL to setParentElement");
-        }
-        ((ElementImpl) parent).addNode(this);
-    }
-
-    public SOAPElement getParentElement() {
-        return (SOAPElement) getParentNode();
-    }
-
-
-    public void detachNode() {
-        org.w3c.dom.Node parent = getParentNode();
-        if (parent != null) {
-            parent.removeChild(this);
-        }
-    }
-
-    public void recycleNode() {
-        detachNode();
-        // TBD
-        //  - add this to the factory so subsequent
-        //    creations can reuse this object.
-    }
-
-    public boolean isComment() {
-        return false;
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/DetailEntryImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap.impl;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.DetailEntry;
-import javax.xml.soap.Name;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-
-public abstract class DetailEntryImpl
-    extends ElementImpl
-    implements DetailEntry {
-    public DetailEntryImpl(SOAPDocumentImpl ownerDoc, Name qname) {
-        super(ownerDoc, qname);
-    }
-    public DetailEntryImpl(SOAPDocumentImpl ownerDoc, QName qname) {
-        super(ownerDoc, qname);
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/DetailImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap.impl;
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.*;
-
-import org.w3c.dom.Element;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-
-public abstract class DetailImpl extends FaultElementImpl implements Detail {
-    public DetailImpl(SOAPDocumentImpl ownerDoc, NameImpl detailName) {
-        super(ownerDoc, detailName);
-    }
-
-    protected abstract DetailEntry createDetailEntry(Name name);
-    protected abstract DetailEntry createDetailEntry(QName name);
-
-    public DetailEntry addDetailEntry(Name name) throws SOAPException {
-        DetailEntry entry = createDetailEntry(name);
-        addNode(entry);
-        return (DetailEntry) circumventBug5034339(entry);
-    }
-
-    public DetailEntry addDetailEntry(QName qname) throws SOAPException {
-        DetailEntry entry = createDetailEntry(qname);
-        addNode(entry);
-        return (DetailEntry) circumventBug5034339(entry);
-    }
-
-    protected SOAPElement addElement(Name name) throws SOAPException {
-        return addDetailEntry(name);
-    }
-
-    protected SOAPElement addElement(QName name) throws SOAPException {
-        return addDetailEntry(name);
-    }
-
-    protected SOAPElement convertToSoapElement(Element element) {
-        if (element instanceof DetailEntry) {
-            return (SOAPElement) element;
-        } else {
-            DetailEntry detailEntry =
-                createDetailEntry(NameImpl.copyElementName(element));
-            return replaceElementWithSOAPElement(
-                element,
-                (ElementImpl) detailEntry);
-        }
-    }
-
-    public Iterator getDetailEntries() {
-        return new Iterator() {
-            Iterator eachNode = getChildElementNodes();
-            SOAPElement next = null;
-            SOAPElement last = null;
-
-            public boolean hasNext() {
-                if (next == null) {
-                    while (eachNode.hasNext()) {
-                        next = (SOAPElement) eachNode.next();
-                        if (next instanceof DetailEntry) {
-                            break;
-                        }
-                        next = null;
-                    }
-                }
-                return next != null;
-            }
-
-            public Object next() {
-                if (!hasNext()) {
-                    throw new NoSuchElementException();
-                }
-                last = next;
-                next = null;
-                return last;
-            }
-
-            public void remove() {
-                if (last == null) {
-                    throw new IllegalStateException();
-                }
-                SOAPElement target = last;
-                removeChild(target);
-                last = null;
-            }
-        };
-    }
-
-   protected  boolean isStandardFaultElement() {
-       return true;
-   }
-
-    //overriding this method since the only two uses of this method
-    // are in ElementImpl and DetailImpl
-    //whereas the original base impl does the correct job for calls to it inside ElementImpl
-    // But it would not work for DetailImpl.
-    protected SOAPElement circumventBug5034339(SOAPElement element) {
-
-        Name elementName = element.getElementName();
-        if (!isNamespaceQualified(elementName)) {
-            String prefix = elementName.getPrefix();
-            String defaultNamespace = getNamespaceURI(prefix);
-            if (defaultNamespace != null) {
-                Name newElementName =
-                    NameImpl.create(
-                        elementName.getLocalName(),
-                        elementName.getPrefix(),
-                        defaultNamespace);
-                SOAPElement newElement = createDetailEntry(newElementName);
-                replaceChild(newElement, element);
-                return newElement;
-            }
-        }
-        return element;
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/ElementFactory.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,167 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap.impl;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.*;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-import com.sun.xml.internal.messaging.saaj.soap.ver1_1.*;
-import com.sun.xml.internal.messaging.saaj.soap.ver1_2.*;
-
-
-public class ElementFactory {
-    public static SOAPElement createElement(
-        SOAPDocumentImpl ownerDocument,
-        Name name) {
-        return createElement(
-            ownerDocument,
-            name.getLocalName(),
-            name.getPrefix(),
-            name.getURI());
-    }
-    public static SOAPElement createElement(
-        SOAPDocumentImpl ownerDocument,
-        QName name) {
-        return createElement(
-            ownerDocument,
-            name.getLocalPart(),
-            name.getPrefix(),
-            name.getNamespaceURI());
-    }
-
-    public static SOAPElement createElement(
-        SOAPDocumentImpl ownerDocument,
-        String localName,
-        String prefix,
-        String namespaceUri) {
-
-
-        if (ownerDocument == null) {
-            if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
-                ownerDocument = new SOAPPart1_1Impl().getDocument();
-            } else if (NameImpl.SOAP12_NAMESPACE.equals(namespaceUri)) {
-                ownerDocument = new SOAPPart1_2Impl().getDocument();
-            } else {
-                ownerDocument = new SOAPDocumentImpl(null);
-            }
-        }
-
-        SOAPElement newElement =
-            createNamedElement(ownerDocument, localName, prefix, namespaceUri);
-
-        return newElement != null
-            ? newElement
-            : new ElementImpl(
-                ownerDocument,
-                namespaceUri,
-                NameImpl.createQName(prefix, localName));
-    }
-
-    public static SOAPElement createNamedElement(
-        SOAPDocumentImpl ownerDocument,
-        String localName,
-        String prefix,
-        String namespaceUri) {
-
-        if (prefix == null) {
-            prefix = NameImpl.SOAP_ENVELOPE_PREFIX;
-        }
-
-        if (localName.equalsIgnoreCase("Envelope")) {
-            if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
-                return new Envelope1_1Impl(ownerDocument, prefix);
-            } else if (NameImpl.SOAP12_NAMESPACE.equals(namespaceUri)) {
-                return new Envelope1_2Impl(ownerDocument, prefix);
-            }
-        }
-        if (localName.equalsIgnoreCase("Body")) {
-            if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
-                return new Body1_1Impl(ownerDocument, prefix);
-            } else if (NameImpl.SOAP12_NAMESPACE.equals(namespaceUri)) {
-                return new Body1_2Impl(ownerDocument, prefix);
-            }
-        }
-        if (localName.equalsIgnoreCase("Header")) {
-            if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
-                return new Header1_1Impl(ownerDocument, prefix);
-            } else if (NameImpl.SOAP12_NAMESPACE.equals(namespaceUri)) {
-                return new Header1_2Impl(ownerDocument, prefix);
-            }
-        }
-        if (localName.equalsIgnoreCase("Fault")) {
-            SOAPFault fault = null;
-            if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
-                fault = new Fault1_1Impl(ownerDocument, prefix);
-            } else if (NameImpl.SOAP12_NAMESPACE.equals(namespaceUri)) {
-                fault = new Fault1_2Impl(ownerDocument, prefix);
-            }
-
-            if (fault != null) {
-//                try {
-//                    fault.addNamespaceDeclaration(
-//                        NameImpl.SOAP_ENVELOPE_PREFIX,
-//                        SOAPConstants.URI_NS_SOAP_ENVELOPE);
-//                    fault.setFaultCode(
-//                        NameImpl.create(
-//                            "Server",
-//                            NameImpl.SOAP_ENVELOPE_PREFIX,
-//                            SOAPConstants.URI_NS_SOAP_ENVELOPE));
-//                    fault.setFaultString(
-//                        "Fault string, and possibly fault code, not set");
-//                } catch (SOAPException e) {
-//                }
-                return fault;
-            }
-
-        }
-        if (localName.equalsIgnoreCase("Detail")) {
-            if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
-                return new Detail1_1Impl(ownerDocument, prefix);
-            } else if (NameImpl.SOAP12_NAMESPACE.equals(namespaceUri)) {
-                return new Detail1_2Impl(ownerDocument, prefix);
-            }
-        }
-        if (localName.equalsIgnoreCase("faultcode")
-            || localName.equalsIgnoreCase("faultstring")
-            || localName.equalsIgnoreCase("faultactor")) {
-            // SOAP 1.2 does not have fault(code/string/actor)
-            // So there is no else case required
-            if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
-                return new FaultElement1_1Impl(ownerDocument,
-                                               localName,
-                                               prefix);
-            }
-        }
-
-        return null;
-    }
-
-    protected static void invalidCreate(String msg) {
-        throw new TreeException(msg);
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/ElementImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1290 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap.impl;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.*;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.*;
-
-import org.w3c.dom.*;
-import org.w3c.dom.Node;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-import com.sun.xml.internal.messaging.saaj.util.*;
-
-public class ElementImpl
-    extends com.sun.org.apache.xerces.internal.dom.ElementNSImpl
-    implements SOAPElement, SOAPBodyElement {
-
-    public static final String DSIG_NS = "http://www.w3.org/2000/09/xmldsig#".intern();
-    public static final String XENC_NS = "http://www.w3.org/2001/04/xmlenc#".intern();
-    public static final String WSU_NS = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd".intern();
-
-    private transient AttributeManager encodingStyleAttribute = new AttributeManager();
-
-    protected QName elementQName;
-
-    protected static final Logger log =
-        Logger.getLogger(LogDomainConstants.SOAP_IMPL_DOMAIN,
-                         "com.sun.xml.internal.messaging.saaj.soap.impl.LocalStrings");
-
-    /**
-     * XML Information Set REC
-     * all namespace attributes (including those named xmlns,
-     * whose [prefix] property has no value) have a namespace URI of http://www.w3.org/2000/xmlns/
-     */
-    public final static String XMLNS_URI = "http://www.w3.org/2000/xmlns/".intern();
-
-    /**
-     * The XML Namespace ("http://www.w3.org/XML/1998/namespace"). This is
-     * the Namespace URI that is automatically mapped to the "xml" prefix.
-     */
-    public final static String XML_URI = "http://www.w3.org/XML/1998/namespace".intern();
-
-    public ElementImpl(SOAPDocumentImpl ownerDoc, Name name) {
-        super(
-            ownerDoc,
-            name.getURI(),
-            name.getQualifiedName(),
-            name.getLocalName());
-        elementQName = NameImpl.convertToQName(name);
-    }
-
-    public ElementImpl(SOAPDocumentImpl ownerDoc, QName name) {
-        super(
-            ownerDoc,
-            name.getNamespaceURI(),
-            getQualifiedName(name),
-            name.getLocalPart());
-        elementQName = name;
-    }
-
-    public ElementImpl(
-        SOAPDocumentImpl ownerDoc,
-        String uri,
-        String qualifiedName) {
-
-        super(ownerDoc, uri, qualifiedName);
-        elementQName =
-            new QName(uri, getLocalPart(qualifiedName), getPrefix(qualifiedName));
-    }
-
-    public void ensureNamespaceIsDeclared(String prefix, String uri) {
-        String alreadyDeclaredUri = getNamespaceURI(prefix);
-        if (alreadyDeclaredUri == null || !alreadyDeclaredUri.equals(uri)) {
-            try {
-                addNamespaceDeclaration(prefix, uri);
-            } catch (SOAPException e) { /*ignore*/
-            }
-        }
-    }
-
-    public Document getOwnerDocument() {
-        Document doc = super.getOwnerDocument();
-        if (doc instanceof SOAPDocument)
-            return ((SOAPDocument) doc).getDocument();
-        else
-            return doc;
-    }
-
-    public SOAPElement addChildElement(Name name) throws SOAPException {
-        return  addElement(name);
-    }
-
-    public SOAPElement addChildElement(QName qname) throws SOAPException {
-        return  addElement(qname);
-    }
-
-    public SOAPElement addChildElement(String localName) throws SOAPException {
-        return (SOAPElement) addChildElement(
-            NameImpl.createFromUnqualifiedName(localName));
-    }
-
-    public SOAPElement addChildElement(String localName, String prefix)
-        throws SOAPException {
-        String uri = getNamespaceURI(prefix);
-        if (uri == null) {
-            log.log(
-                Level.SEVERE,
-                "SAAJ0101.impl.parent.of.body.elem.mustbe.body",
-                new String[] { prefix });
-            throw new SOAPExceptionImpl(
-                "Unable to locate namespace for prefix " + prefix);
-        }
-        return addChildElement(localName, prefix, uri);
-    }
-
-    public String getNamespaceURI(String prefix) {
-
-        if ("xmlns".equals(prefix)) {
-            return XMLNS_URI;
-        }
-
-        if("xml".equals(prefix)) {
-            return XML_URI;
-        }
-
-        if ("".equals(prefix)) {
-
-            org.w3c.dom.Node currentAncestor = this;
-            while (currentAncestor != null &&
-                   !(currentAncestor instanceof Document)) {
-
-                if (currentAncestor instanceof ElementImpl) {
-                    QName name = ((ElementImpl) currentAncestor).getElementQName();
-                    /*
-                    if (prefix.equals(name.getPrefix())) {
-                        String uri = name.getNamespaceURI();
-                        if ("".equals(uri)) {
-                            return null;
-                        }
-                        else {
-                            return uri;
-                        }
-                    }*/
-                    if (((Element) currentAncestor).hasAttributeNS(
-                            XMLNS_URI, "xmlns")) {
-
-                        String uri =
-                            ((Element) currentAncestor).getAttributeNS(
-                                XMLNS_URI, "xmlns");
-                        if ("".equals(uri))
-                            return null;
-                        else {
-                            return uri;
-                        }
-                    }
-                }
-                currentAncestor = currentAncestor.getParentNode();
-            }
-
-        } else if (prefix != null) {
-            // Find if there's an ancester whose name contains this prefix
-            org.w3c.dom.Node currentAncestor = this;
-
-//            String uri = currentAncestor.lookupNamespaceURI(prefix);
-//            return uri;
-            while (currentAncestor != null &&
-                   !(currentAncestor instanceof Document)) {
-
-               /* if (prefix.equals(currentAncestor.getPrefix())) {
-                    String uri = currentAncestor.getNamespaceURI();
-                    // this is because the javadoc says getNamespaceURI() is not a computed value
-                    // and URI for a non-empty prefix cannot be null
-                    if (uri != null)
-                        return uri;
-                }*/
-                //String uri = currentAncestor.lookupNamespaceURI(prefix);
-                //if (uri != null) {
-                //    return uri;
-                //}
-
-                if (((Element) currentAncestor).hasAttributeNS(
-                        XMLNS_URI, prefix)) {
-                    return ((Element) currentAncestor).getAttributeNS(
-                               XMLNS_URI, prefix);
-                }
-
-                currentAncestor = currentAncestor.getParentNode();
-            }
-        }
-
-        return null;
-    }
-
-    public SOAPElement setElementQName(QName newName) throws SOAPException {
-        ElementImpl copy =
-            new ElementImpl((SOAPDocumentImpl) getOwnerDocument(), newName);
-        return replaceElementWithSOAPElement(this,copy);
-    }
-
-    public QName createQName(String localName, String prefix)
-        throws SOAPException {
-        String uri = getNamespaceURI(prefix);
-        if (uri == null) {
-            log.log(Level.SEVERE, "SAAJ0102.impl.cannot.locate.ns",
-                    new Object[] {prefix});
-            throw new SOAPException("Unable to locate namespace for prefix "
-                                    + prefix);
-        }
-        return new QName(uri, localName, prefix);
-    }
-
-    public String getNamespacePrefix(String uri) {
-
-        NamespaceContextIterator eachNamespace = getNamespaceContextNodes();
-        while (eachNamespace.hasNext()) {
-            org.w3c.dom.Attr namespaceDecl = eachNamespace.nextNamespaceAttr();
-            if (namespaceDecl.getNodeValue().equals(uri)) {
-                String candidatePrefix = namespaceDecl.getLocalName();
-                if ("xmlns".equals(candidatePrefix))
-                    return "";
-                else
-                    return candidatePrefix;
-            }
-        }
-
-        // Find if any of the ancestors' name has this uri
-        org.w3c.dom.Node currentAncestor = this;
-        while (currentAncestor != null &&
-               !(currentAncestor instanceof Document)) {
-
-            if (uri.equals(currentAncestor.getNamespaceURI()))
-                return currentAncestor.getPrefix();
-            currentAncestor = currentAncestor.getParentNode();
-        }
-
-        return null;
-    }
-
-    protected org.w3c.dom.Attr getNamespaceAttr(String prefix) {
-        NamespaceContextIterator eachNamespace = getNamespaceContextNodes();
-        if (!"".equals(prefix))
-            prefix = ":"+prefix;
-        while (eachNamespace.hasNext()) {
-            org.w3c.dom.Attr namespaceDecl = eachNamespace.nextNamespaceAttr();
-            if (!"".equals(prefix)) {
-                if (namespaceDecl.getNodeName().endsWith(prefix))
-                    return namespaceDecl;
-            } else {
-                if (namespaceDecl.getNodeName().equals("xmlns"))
-                    return namespaceDecl;
-            }
-        }
-        return null;
-    }
-
-    public NamespaceContextIterator getNamespaceContextNodes() {
-        return getNamespaceContextNodes(true);
-    }
-
-    public NamespaceContextIterator getNamespaceContextNodes(boolean traverseStack) {
-        return new NamespaceContextIterator(this, traverseStack);
-    }
-
-    public SOAPElement addChildElement(
-        String localName,
-        String prefix,
-        String uri)
-        throws SOAPException {
-
-        SOAPElement newElement = createElement(NameImpl.create(localName, prefix, uri));
-        addNode(newElement);
-        return convertToSoapElement(newElement);
-    }
-
-    public SOAPElement addChildElement(SOAPElement element)
-        throws SOAPException {
-
-        // check if Element falls in SOAP 1.1 or 1.2 namespace.
-        String elementURI = element.getElementName().getURI();
-        String localName = element.getLocalName();
-
-        if ((SOAPConstants.URI_NS_SOAP_ENVELOPE).equals(elementURI)
-            || (SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE).equals(elementURI)) {
-
-
-            if ("Envelope".equalsIgnoreCase(localName) ||
-                "Header".equalsIgnoreCase(localName) || "Body".equalsIgnoreCase(localName)) {
-                log.severe("SAAJ0103.impl.cannot.add.fragements");
-                throw new SOAPExceptionImpl(
-                    "Cannot add fragments which contain elements "
-                        + "which are in the SOAP namespace");
-            }
-
-            if ("Fault".equalsIgnoreCase(localName) && !"Body".equalsIgnoreCase(this.getLocalName())) {
-                log.severe("SAAJ0154.impl.adding.fault.to.nonbody");
-                throw new SOAPExceptionImpl("Cannot add a SOAPFault as a child of " + this.getLocalName());
-            }
-
-            if ("Detail".equalsIgnoreCase(localName) && !"Fault".equalsIgnoreCase(this.getLocalName())) {
-                log.severe("SAAJ0155.impl.adding.detail.nonfault");
-                throw new SOAPExceptionImpl("Cannot add a Detail as a child of " + this.getLocalName());
-            }
-
-            if ("Fault".equalsIgnoreCase(localName)) {
-               // if body is not empty throw an exception
-               if (!elementURI.equals(this.getElementName().getURI())) {
-                   log.severe("SAAJ0158.impl.version.mismatch.fault");
-                   throw new SOAPExceptionImpl("SOAP Version mismatch encountered when trying to add SOAPFault to SOAPBody");
-               }
-               Iterator it = this.getChildElements();
-               if (it.hasNext()) {
-                   log.severe("SAAJ0156.impl.adding.fault.error");
-                   throw new SOAPExceptionImpl("Cannot add SOAPFault as a child of a non-Empty SOAPBody");
-               }
-            }
-        }
-
-        // preserve the encodingStyle attr as it may get lost in the import
-        String encodingStyle = element.getEncodingStyle();
-
-        ElementImpl importedElement = (ElementImpl) importElement(element);
-        addNode(importedElement);
-
-        if (encodingStyle != null)
-            importedElement.setEncodingStyle(encodingStyle);
-
-        return convertToSoapElement(importedElement);
-    }
-
-    protected Element importElement(Element element) {
-        Document document = getOwnerDocument();
-        Document oldDocument = element.getOwnerDocument();
-        if (!oldDocument.equals(document)) {
-            return (Element) document.importNode(element, true);
-        } else {
-            return element;
-        }
-    }
-
-    protected SOAPElement addElement(Name name) throws SOAPException {
-        SOAPElement newElement = createElement(name);
-        addNode(newElement);
-        return circumventBug5034339(newElement);
-    }
-
-    protected SOAPElement addElement(QName name) throws SOAPException {
-        SOAPElement newElement = createElement(name);
-        addNode(newElement);
-        return circumventBug5034339(newElement);
-    }
-
-    protected SOAPElement createElement(Name name) {
-
-        if (isNamespaceQualified(name)) {
-            return (SOAPElement)
-                getOwnerDocument().createElementNS(
-                                       name.getURI(),
-                                       name.getQualifiedName());
-        } else {
-            return (SOAPElement)
-                getOwnerDocument().createElement(name.getQualifiedName());
-        }
-    }
-
-    protected SOAPElement createElement(QName name) {
-
-        if (isNamespaceQualified(name)) {
-            return (SOAPElement)
-                getOwnerDocument().createElementNS(
-                                       name.getNamespaceURI(),
-                                       getQualifiedName(name));
-        } else {
-            return (SOAPElement)
-                getOwnerDocument().createElement(getQualifiedName(name));
-        }
-    }
-
-    protected void addNode(org.w3c.dom.Node newElement) throws SOAPException {
-        insertBefore(newElement, null);
-
-        if (getOwnerDocument() instanceof DocumentFragment)
-            return;
-
-        if (newElement instanceof ElementImpl) {
-            ElementImpl element = (ElementImpl) newElement;
-            QName elementName = element.getElementQName();
-            if (!"".equals(elementName.getNamespaceURI())) {
-                element.ensureNamespaceIsDeclared(
-                    elementName.getPrefix(), elementName.getNamespaceURI());
-            }
-        }
-
-    }
-
-    Element getFirstChildElement() {
-        Node child = getFirstChild();
-        while (child != null) {
-            if (child instanceof Element) {
-                return ((Element) child);
-            }
-            child = child.getNextSibling();
-        }
-        return null;
-    }
-
-    protected SOAPElement findChild(NameImpl name) {
-        Node eachChild = getFirstChild();
-        while (eachChild != null) {
-            if (eachChild instanceof SOAPElement) {
-                SOAPElement eachChildSoap = (SOAPElement) eachChild;
-                if (eachChildSoap.getElementName().equals(name)) {
-                    return eachChildSoap;
-                }
-            }
-            eachChild = eachChild.getNextSibling();
-        }
-        return null;
-    }
-
-    protected SOAPElement findAndConvertChildElement(NameImpl name) {
-        Iterator eachChild = getChildElementNodes();
-        while (eachChild.hasNext()) {
-            SOAPElement child = (SOAPElement) eachChild.next();
-            if (child.getElementName().equals(name)) {
-                return child;
-            }
-        }
-
-        return null;
-    }
-
-    public SOAPElement addTextNode(String text) throws SOAPException {
-        if (text.startsWith(CDATAImpl.cdataUC)
-            || text.startsWith(CDATAImpl.cdataLC))
-            return addCDATA(
-                text.substring(CDATAImpl.cdataUC.length(), text.length() - 3));
-        return addText(text);
-    }
-
-    protected SOAPElement addCDATA(String text) throws SOAPException {
-        org.w3c.dom.Text cdata =
-            (org.w3c.dom.Text) getOwnerDocument().createCDATASection(text);
-        addNode(cdata);
-        return this;
-    }
-
-    protected SOAPElement addText(String text) throws SOAPException {
-        org.w3c.dom.Text textNode =
-            (org.w3c.dom.Text) getOwnerDocument().createTextNode(text);
-        addNode(textNode);
-        return this;
-    }
-
-    public SOAPElement addAttribute(Name name, String value)
-        throws SOAPException {
-        addAttributeBare(name, value);
-        if (!"".equals(name.getURI())) {
-            ensureNamespaceIsDeclared(name.getPrefix(), name.getURI());
-        }
-        return this;
-    }
-
-    public SOAPElement addAttribute(QName qname, String value)
-        throws SOAPException {
-        addAttributeBare(qname, value);
-        if (!"".equals(qname.getNamespaceURI())) {
-            ensureNamespaceIsDeclared(qname.getPrefix(), qname.getNamespaceURI());
-        }
-        return this;
-    }
-
-    private void addAttributeBare(Name name, String value) {
-        addAttributeBare(
-            name.getURI(),
-            name.getPrefix(),
-            name.getQualifiedName(),
-            value);
-    }
-    private void addAttributeBare(QName name, String value) {
-        addAttributeBare(
-            name.getNamespaceURI(),
-            name.getPrefix(),
-            getQualifiedName(name),
-            value);
-    }
-
-    private void addAttributeBare(
-        String uri,
-        String prefix,
-        String qualifiedName,
-        String value) {
-
-        uri = uri.length() == 0 ? null : uri;
-        if (qualifiedName.equals("xmlns")) {
-            uri = XMLNS_URI;
-        }
-
-        if (uri == null) {
-            setAttribute(qualifiedName, value);
-        } else {
-            setAttributeNS(uri, qualifiedName, value);
-        }
-    }
-
-    public SOAPElement addNamespaceDeclaration(String prefix, String uri)
-        throws SOAPException {
-        if (prefix.length() > 0) {
-            setAttributeNS(XMLNS_URI, "xmlns:" + prefix, uri);
-        } else {
-            setAttributeNS(XMLNS_URI, "xmlns", uri);
-        }
-        //Fix for CR:6474641
-        //tryToFindEncodingStyleAttributeName();
-        return this;
-    }
-
-    public String getAttributeValue(Name name) {
-        return getAttributeValueFrom(this, name);
-    }
-
-    public String getAttributeValue(QName qname) {
-        return getAttributeValueFrom(
-                   this,
-                   qname.getNamespaceURI(),
-                   qname.getLocalPart(),
-                   qname.getPrefix(),
-                   getQualifiedName(qname));
-    }
-
-    public Iterator getAllAttributes() {
-        Iterator i = getAllAttributesFrom(this);
-        ArrayList list = new ArrayList();
-        while (i.hasNext()) {
-            Name name = (Name) i.next();
-            if (!"xmlns".equalsIgnoreCase(name.getPrefix()))
-                list.add(name);
-        }
-        return list.iterator();
-    }
-
-    public Iterator getAllAttributesAsQNames() {
-        Iterator i = getAllAttributesFrom(this);
-        ArrayList list = new ArrayList();
-        while (i.hasNext()) {
-            Name name = (Name) i.next();
-            if (!"xmlns".equalsIgnoreCase(name.getPrefix())) {
-                list.add(NameImpl.convertToQName(name));
-            }
-        }
-        return list.iterator();
-    }
-
-
-    public Iterator getNamespacePrefixes() {
-        return doGetNamespacePrefixes(false);
-    }
-
-    public Iterator getVisibleNamespacePrefixes() {
-        return doGetNamespacePrefixes(true);
-    }
-
-    protected Iterator doGetNamespacePrefixes(final boolean deep) {
-        return new Iterator() {
-            String next = null;
-            String last = null;
-            NamespaceContextIterator eachNamespace =
-                getNamespaceContextNodes(deep);
-
-            void findNext() {
-                while (next == null && eachNamespace.hasNext()) {
-                    String attributeKey =
-                        eachNamespace.nextNamespaceAttr().getNodeName();
-                    if (attributeKey.startsWith("xmlns:")) {
-                        next = attributeKey.substring("xmlns:".length());
-                    }
-                }
-            }
-
-            public boolean hasNext() {
-                findNext();
-                return next != null;
-            }
-
-            public Object next() {
-                findNext();
-                if (next == null) {
-                    throw new NoSuchElementException();
-                }
-
-                last = next;
-                next = null;
-                return last;
-            }
-
-            public void remove() {
-                if (last == null) {
-                    throw new IllegalStateException();
-                }
-                eachNamespace.remove();
-                next = null;
-                last = null;
-            }
-        };
-    }
-
-    public Name getElementName() {
-        return NameImpl.convertToName(elementQName);
-    }
-
-    public QName getElementQName() {
-        return elementQName;
-    }
-
-    public boolean removeAttribute(Name name) {
-        return removeAttribute(name.getURI(), name.getLocalName());
-    }
-
-    public boolean removeAttribute(QName name) {
-        return removeAttribute(name.getNamespaceURI(), name.getLocalPart());
-    }
-
-    private boolean removeAttribute(String uri, String localName) {
-        String nonzeroLengthUri =
-            (uri == null || uri.length() == 0) ? null : uri;
-        org.w3c.dom.Attr attribute =
-            getAttributeNodeNS(nonzeroLengthUri, localName);
-        if (attribute == null) {
-            return false;
-        }
-        removeAttributeNode(attribute);
-        return true;
-    }
-
-    public boolean removeNamespaceDeclaration(String prefix) {
-        org.w3c.dom.Attr declaration = getNamespaceAttr(prefix);
-        if (declaration == null) {
-            return false;
-        }
-        try {
-            removeAttributeNode(declaration);
-        } catch (DOMException de) {
-            // ignore
-        }
-        return true;
-    }
-
-    public Iterator getChildElements() {
-        return getChildElementsFrom(this);
-    }
-
-    protected SOAPElement convertToSoapElement(Element element) {
-        if (element instanceof SOAPElement) {
-            return (SOAPElement) element;
-        } else {
-            return replaceElementWithSOAPElement(
-                element,
-                (ElementImpl) createElement(NameImpl.copyElementName(element)));
-        }
-    }
-
-    protected static SOAPElement replaceElementWithSOAPElement(
-        Element element,
-        ElementImpl copy) {
-
-        Iterator eachAttribute = getAllAttributesFrom(element);
-        while (eachAttribute.hasNext()) {
-            Name name = (Name) eachAttribute.next();
-            copy.addAttributeBare(name, getAttributeValueFrom(element, name));
-        }
-
-        Iterator eachChild = getChildElementsFrom(element);
-        while (eachChild.hasNext()) {
-            Node nextChild = (Node) eachChild.next();
-            copy.insertBefore(nextChild, null);
-        }
-
-        Node parent = element.getParentNode();
-        if (parent != null) {
-            parent.replaceChild(copy, element);
-        } // XXX else throw an exception?
-
-        return copy;
-    }
-
-    protected Iterator getChildElementNodes() {
-        return new Iterator() {
-            Iterator eachNode = getChildElements();
-            Node next = null;
-            Node last = null;
-
-            public boolean hasNext() {
-                if (next == null) {
-                    while (eachNode.hasNext()) {
-                        Node node = (Node) eachNode.next();
-                        if (node instanceof SOAPElement) {
-                            next = node;
-                            break;
-                        }
-                    }
-                }
-                return next != null;
-            }
-
-            public Object next() {
-                if (hasNext()) {
-                    last = next;
-                    next = null;
-                    return last;
-                }
-                throw new NoSuchElementException();
-            }
-
-            public void remove() {
-                if (last == null) {
-                    throw new IllegalStateException();
-                }
-                Node target = last;
-                last = null;
-                removeChild(target);
-            }
-        };
-    }
-
-    public Iterator getChildElements(final Name name) {
-       return getChildElements(name.getURI(), name.getLocalName());
-    }
-
-    public Iterator getChildElements(final QName qname) {
-        return getChildElements(qname.getNamespaceURI(), qname.getLocalPart());
-    }
-
-    private Iterator getChildElements(final String nameUri, final String nameLocal) {
-        return new Iterator() {
-            Iterator eachElement = getChildElementNodes();
-            Node next = null;
-            Node last = null;
-
-            public boolean hasNext() {
-                if (next == null) {
-                    while (eachElement.hasNext()) {
-                        Node element = (Node) eachElement.next();
-                        String elementUri = element.getNamespaceURI();
-                        elementUri = elementUri == null ? "" : elementUri;
-                        String elementName = element.getLocalName();
-                        if (elementUri.equals(nameUri)
-                            && elementName.equals(nameLocal)) {
-                            next = element;
-                            break;
-                        }
-                    }
-                }
-                return next != null;
-            }
-
-            public Object next() {
-                if (!hasNext()) {
-                    throw new NoSuchElementException();
-                }
-                last = next;
-                next = null;
-                return last;
-            }
-
-            public void remove() {
-                if (last == null) {
-                    throw new IllegalStateException();
-                }
-                Node target = last;
-                last = null;
-                removeChild(target);
-            }
-        };
-    }
-
-    public void removeContents() {
-        Node currentChild = getFirstChild();
-
-        while (currentChild != null) {
-            Node temp = currentChild.getNextSibling();
-            if (currentChild instanceof javax.xml.soap.Node) {
-                ((javax.xml.soap.Node) currentChild).detachNode();
-            } else {
-                Node parent = currentChild.getParentNode();
-                if (parent != null) {
-                    parent.removeChild(currentChild);
-                }
-
-            }
-            currentChild = temp;
-        }
-    }
-
-    public void setEncodingStyle(String encodingStyle) throws SOAPException {
-        if (!"".equals(encodingStyle)) {
-            try {
-                new URI(encodingStyle);
-            } catch (URISyntaxException m) {
-                log.log(
-                    Level.SEVERE,
-                    "SAAJ0105.impl.encoding.style.mustbe.valid.URI",
-                    new String[] { encodingStyle });
-                throw new IllegalArgumentException(
-                    "Encoding style (" + encodingStyle + ") should be a valid URI");
-            }
-        }
-        encodingStyleAttribute.setValue(encodingStyle);
-        tryToFindEncodingStyleAttributeName();
-    }
-
-    public String getEncodingStyle() {
-        String encodingStyle = encodingStyleAttribute.getValue();
-        if (encodingStyle != null)
-            return encodingStyle;
-        String soapNamespace = getSOAPNamespace();
-        if (soapNamespace != null) {
-            Attr attr = getAttributeNodeNS(soapNamespace, "encodingStyle");
-            if (attr != null) {
-                encodingStyle = attr.getValue();
-                try {
-                    setEncodingStyle(encodingStyle);
-                } catch (SOAPException se) {
-                    // has to be ignored
-                }
-                return encodingStyle;
-            }
-        }
-        return null;
-    }
-
-    // Node methods
-    public String getValue() {
-        javax.xml.soap.Node valueNode = getValueNode();
-        return valueNode == null ? null : valueNode.getValue();
-    }
-
-    public void setValue(String value) {
-        Node valueNode = getValueNodeStrict();
-        if (valueNode != null) {
-            valueNode.setNodeValue(value);
-        } else {
-            try {
-                addTextNode(value);
-            } catch (SOAPException e) {
-                throw new RuntimeException(e.getMessage());
-            }
-        }
-    }
-
-    protected Node getValueNodeStrict() {
-        Node node = getFirstChild();
-        if (node != null) {
-            if (node.getNextSibling() == null
-                && node.getNodeType() == org.w3c.dom.Node.TEXT_NODE) {
-                return node;
-            } else {
-                log.severe("SAAJ0107.impl.elem.child.not.single.text");
-                throw new IllegalStateException();
-            }
-        }
-
-        return null;
-    }
-
-    protected javax.xml.soap.Node getValueNode() {
-        Iterator i = getChildElements();
-        while (i.hasNext()) {
-            javax.xml.soap.Node n = (javax.xml.soap.Node) i.next();
-            if (n.getNodeType() == org.w3c.dom.Node.TEXT_NODE ||
-                n.getNodeType() == org.w3c.dom.Node.CDATA_SECTION_NODE) {
-                // TODO: Hack to fix text node split into multiple lines.
-                normalize();
-                // Should remove the normalization step when this gets fixed in
-                // DOM/Xerces.
-                return (javax.xml.soap.Node) n;
-            }
-        }
-        return null;
-    }
-
-    public void setParentElement(SOAPElement element) throws SOAPException {
-        if (element == null) {
-            log.severe("SAAJ0106.impl.no.null.to.parent.elem");
-            throw new SOAPException("Cannot pass NULL to setParentElement");
-        }
-        element.addChildElement(this);
-        findEncodingStyleAttributeName();
-    }
-
-    protected void findEncodingStyleAttributeName() throws SOAPException {
-        String soapNamespace = getSOAPNamespace();
-        if (soapNamespace != null) {
-            String soapNamespacePrefix = getNamespacePrefix(soapNamespace);
-            if (soapNamespacePrefix != null) {
-                setEncodingStyleNamespace(soapNamespace, soapNamespacePrefix);
-            }
-        }
-    }
-
-    protected void setEncodingStyleNamespace(
-        String soapNamespace,
-        String soapNamespacePrefix)
-        throws SOAPException {
-        Name encodingStyleAttributeName =
-            NameImpl.create(
-                "encodingStyle",
-                soapNamespacePrefix,
-                soapNamespace);
-        encodingStyleAttribute.setName(encodingStyleAttributeName);
-    }
-
-    public SOAPElement getParentElement() {
-        Node parentNode = getParentNode();
-        if (parentNode instanceof SOAPDocument) {
-            return null;
-        }
-        return (SOAPElement) parentNode;
-    }
-
-    protected String getSOAPNamespace() {
-        String soapNamespace = null;
-
-        SOAPElement antecedent = this;
-        while (antecedent != null) {
-            Name antecedentName = antecedent.getElementName();
-            String antecedentNamespace = antecedentName.getURI();
-
-            if (NameImpl.SOAP11_NAMESPACE.equals(antecedentNamespace)
-                || NameImpl.SOAP12_NAMESPACE.equals(antecedentNamespace)) {
-
-                soapNamespace = antecedentNamespace;
-                break;
-            }
-
-            antecedent = antecedent.getParentElement();
-        }
-
-        return soapNamespace;
-    }
-
-    public void detachNode() {
-        Node parent = getParentNode();
-        if (parent != null) {
-            parent.removeChild(this);
-        }
-        encodingStyleAttribute.clearNameAndValue();
-        // Fix for CR: 6474641
-        //tryToFindEncodingStyleAttributeName();
-    }
-
-    public void tryToFindEncodingStyleAttributeName() {
-        try {
-            findEncodingStyleAttributeName();
-        } catch (SOAPException e) { /*okay to fail*/
-        }
-    }
-
-    public void recycleNode() {
-        detachNode();
-        // TBD
-        //  - add this to the factory so subsequent
-        //    creations can reuse this object.
-    }
-
-    class AttributeManager {
-        Name attributeName = null;
-        String attributeValue = null;
-
-        public void setName(Name newName) throws SOAPException {
-            clearAttribute();
-            attributeName = newName;
-            reconcileAttribute();
-        }
-        public void clearName() {
-            clearAttribute();
-            attributeName = null;
-        }
-        public void setValue(String value) throws SOAPException {
-            attributeValue = value;
-            reconcileAttribute();
-        }
-        public Name getName() {
-            return attributeName;
-        }
-        public String getValue() {
-            return attributeValue;
-        }
-
-        /** Note: to be used only in detachNode method */
-        public void clearNameAndValue() {
-            attributeName = null;
-            attributeValue = null;
-        }
-
-        private void reconcileAttribute() throws SOAPException {
-            if (attributeName != null) {
-                removeAttribute(attributeName);
-                if (attributeValue != null) {
-                    addAttribute(attributeName, attributeValue);
-                }
-            }
-        }
-        private void clearAttribute() {
-            if (attributeName != null) {
-                removeAttribute(attributeName);
-            }
-        }
-    }
-
-    protected static org.w3c.dom.Attr getNamespaceAttrFrom(
-        Element element,
-        String prefix) {
-        NamespaceContextIterator eachNamespace =
-            new NamespaceContextIterator(element);
-        while (eachNamespace.hasNext()) {
-            org.w3c.dom.Attr namespaceDecl = eachNamespace.nextNamespaceAttr();
-            String declaredPrefix =
-                NameImpl.getLocalNameFromTagName(namespaceDecl.getNodeName());
-            if (declaredPrefix.equals(prefix)) {
-                return namespaceDecl;
-            }
-        }
-        return null;
-    }
-
-    protected static Iterator getAllAttributesFrom(final Element element) {
-        final NamedNodeMap attributes = element.getAttributes();
-
-        return new Iterator() {
-            int attributesLength = attributes.getLength();
-            int attributeIndex = 0;
-            String currentName;
-
-            public boolean hasNext() {
-                return attributeIndex < attributesLength;
-            }
-
-            public Object next() {
-                if (!hasNext()) {
-                    throw new NoSuchElementException();
-                }
-                Node current = attributes.item(attributeIndex++);
-                currentName = current.getNodeName();
-
-                String prefix = NameImpl.getPrefixFromTagName(currentName);
-                if (prefix.length() == 0) {
-                    return NameImpl.createFromUnqualifiedName(currentName);
-                } else {
-                    Name attributeName =
-                        NameImpl.createFromQualifiedName(
-                            currentName,
-                            current.getNamespaceURI());
-                    return attributeName;
-                }
-            }
-
-            public void remove() {
-                if (currentName == null) {
-                    throw new IllegalStateException();
-                }
-                attributes.removeNamedItem(currentName);
-            }
-        };
-    }
-
-    protected static String getAttributeValueFrom(Element element, Name name) {
-      return getAttributeValueFrom(
-          element,
-          name.getURI(),
-          name.getLocalName(),
-          name.getPrefix(),
-          name.getQualifiedName());
-    }
-
-    private static String getAttributeValueFrom(
-        Element element,
-        String uri,
-        String localName,
-        String prefix,
-        String qualifiedName) {
-
-        String nonzeroLengthUri =
-            (uri == null || uri.length() == 0) ? null : uri;
-
-        boolean mustUseGetAttributeNodeNS =  (nonzeroLengthUri != null);
-
-        if (mustUseGetAttributeNodeNS) {
-
-            if (!element.hasAttributeNS(uri, localName)) {
-                return null;
-            }
-
-            String attrValue =
-                element.getAttributeNS(nonzeroLengthUri, localName);
-
-            return attrValue;
-        }
-
-        Attr attribute = null;
-        attribute = element.getAttributeNode(qualifiedName);
-
-        return attribute == null ? null : attribute.getValue();
-    }
-
-    protected static Iterator getChildElementsFrom(final Element element) {
-        return new Iterator() {
-            Node next = element.getFirstChild();
-            Node nextNext = null;
-            Node last = null;
-
-            public boolean hasNext() {
-                if (next != null) {
-                    return true;
-                }
-                if (next == null && nextNext != null) {
-                    next = nextNext;
-                }
-
-                return next != null;
-            }
-
-            public Object next() {
-                if (hasNext()) {
-                    last = next;
-                    next = null;
-
-                    if ((element instanceof ElementImpl)
-                        && (last instanceof Element)) {
-                        last =
-                            ((ElementImpl) element).convertToSoapElement(
-                                (Element) last);
-                    }
-
-                    nextNext = last.getNextSibling();
-                    return last;
-                }
-                throw new NoSuchElementException();
-            }
-
-            public void remove() {
-                if (last == null) {
-                    throw new IllegalStateException();
-                }
-                Node target = last;
-                last = null;
-                element.removeChild(target);
-            }
-        };
-    }
-
-    public static String getQualifiedName(QName name) {
-        String prefix = name.getPrefix();
-        String localName = name.getLocalPart();
-        String qualifiedName = null;
-
-            if (prefix != null && prefix.length() > 0) {
-                qualifiedName = prefix + ":" + localName;
-            } else {
-                qualifiedName = localName;
-            }
-         return qualifiedName;
-    }
-
-    public static String getLocalPart(String qualifiedName) {
-        if (qualifiedName == null) {
-            // Log
-            throw new IllegalArgumentException("Cannot get local name for a \"null\" qualified name");
-        }
-
-        int index = qualifiedName.indexOf(':');
-        if (index < 0)
-            return qualifiedName;
-        else
-            return qualifiedName.substring(index + 1);
-    }
-
-    public static String getPrefix(String qualifiedName) {
-        if (qualifiedName == null) {
-            // Log
-            throw new IllegalArgumentException("Cannot get prefix for a  \"null\" qualified name");
-        }
-
-        int index = qualifiedName.indexOf(':');
-        if (index < 0)
-            return "";
-        else
-            return qualifiedName.substring(0, index);
-    }
-
-    protected boolean isNamespaceQualified(Name name) {
-        return !"".equals(name.getURI());
-    }
-
-    protected boolean isNamespaceQualified(QName name) {
-        return !"".equals(name.getNamespaceURI());
-    }
-
-    protected SOAPElement circumventBug5034339(SOAPElement element) {
-
-        Name elementName = element.getElementName();
-        if (!isNamespaceQualified(elementName)) {
-            String prefix = elementName.getPrefix();
-            String defaultNamespace = getNamespaceURI(prefix);
-            if (defaultNamespace != null) {
-                Name newElementName =
-                    NameImpl.create(
-                        elementName.getLocalName(),
-                        elementName.getPrefix(),
-                        defaultNamespace);
-                SOAPElement newElement = createElement(newElementName);
-                replaceChild(newElement, element);
-                return newElement;
-            }
-        }
-        return element;
-    }
-
-    //TODO: This is a temporary SAAJ workaround for optimizing XWS
-    // should be removed once the corresponding JAXP bug is fixed
-    // It appears the bug will be fixed in JAXP 1.4 (not by Appserver 9 timeframe)
-    public void setAttributeNS(
-        String namespaceURI,String qualifiedName, String value) {
-        int index = qualifiedName.indexOf(':');
-        String localName;
-        if (index < 0)
-            localName = qualifiedName;
-        else
-            localName = qualifiedName.substring(index + 1);
-
-        // Workaround for bug 6467808 - This needs to be fixed in JAXP
-
-        // Rolling back this fix, this is a wrong fix, infact its causing other regressions in JAXWS tck and
-        // other tests, because of this change the namespace declarations on soapenv:Fault element are never
-        // picked up. The fix for bug 6467808 should be in JAXP.
-//        if(elementQName.getLocalPart().equals("Fault") &&
-//                (SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE.equals(value) ||
-//                SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE.equals(value)))
-//            return;
-
-        super.setAttributeNS(namespaceURI,qualifiedName,value);
-        //String tmpLocalName = this.getLocalName();
-        String tmpURI = this.getNamespaceURI();
-        boolean isIDNS = false;
-        if( tmpURI != null && (tmpURI.equals(DSIG_NS) || tmpURI.equals(XENC_NS))){
-            isIDNS = true;
-        }
-        //No need to check for Signature/encryption element
-        //just check for namespace.
-        if(localName.equals("Id")){
-            if(namespaceURI == null || namespaceURI.equals("")){
-                setIdAttribute(localName,true);
-            }else if(isIDNS || WSU_NS.equals(namespaceURI)){
-                setIdAttributeNS(namespaceURI,localName,true);
-            }
-        }
-
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/EnvelopeImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,438 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap.impl;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-
-import java.util.logging.Level;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.*;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.stream.XMLStreamWriter;
-import javax.xml.transform.*;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-import com.sun.xml.internal.messaging.saaj.soap.LazyEnvelope;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.StaxBridge;
-import com.sun.xml.internal.messaging.saaj.soap.StaxLazySourceBridge;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-import com.sun.xml.internal.messaging.saaj.util.FastInfosetReflection;
-import com.sun.xml.internal.messaging.saaj.util.stax.LazyEnvelopeStaxReader;
-import com.sun.xml.internal.messaging.saaj.util.transform.EfficientStreamingTransformer;
-
-import com.sun.xml.internal.org.jvnet.staxex.util.DOMStreamReader;
-import com.sun.xml.internal.org.jvnet.staxex.util.XMLStreamReaderToXMLStreamWriter;
-
-/**
- * Our implementation of the SOAP envelope.
- *
- * @author Anil Vijendran (anil@sun.com)
- */
-public abstract class EnvelopeImpl extends ElementImpl implements LazyEnvelope {
-    protected HeaderImpl header;
-    protected BodyImpl body;
-    String omitXmlDecl = "yes";
-    String charset = "utf-8";
-    String xmlDecl = null;
-
-    protected EnvelopeImpl(SOAPDocumentImpl ownerDoc, Name name) {
-        super(ownerDoc, name);
-    }
-
-    protected EnvelopeImpl(SOAPDocumentImpl ownerDoc, QName name) {
-        super(ownerDoc, name);
-    }
-
-    protected EnvelopeImpl(
-        SOAPDocumentImpl ownerDoc,
-        NameImpl name,
-        boolean createHeader,
-        boolean createBody)
-        throws SOAPException {
-        this(ownerDoc, name);
-
-        ensureNamespaceIsDeclared(
-            getElementQName().getPrefix(), getElementQName().getNamespaceURI());
-
-        // XXX
-        if (createHeader)
-            addHeader();
-
-        if (createBody)
-            addBody();
-    }
-
-    protected abstract NameImpl getHeaderName(String prefix);
-    protected abstract NameImpl getBodyName(String prefix);
-
-    public SOAPHeader addHeader() throws SOAPException {
-        return addHeader(null);
-    }
-
-    public SOAPHeader addHeader(String prefix) throws SOAPException {
-
-        if (prefix == null || prefix.equals("")) {
-            prefix = getPrefix();
-        }
-
-        NameImpl headerName = getHeaderName(prefix);
-        NameImpl bodyName = getBodyName(prefix);
-
-        HeaderImpl header = null;
-        SOAPElement firstChild = (SOAPElement) getFirstChildElement();
-
-        if (firstChild != null) {
-            if (firstChild.getElementName().equals(headerName)) {
-                log.severe("SAAJ0120.impl.header.already.exists");
-                throw new SOAPExceptionImpl("Can't add a header when one is already present.");
-            } else if (!firstChild.getElementName().equals(bodyName)) {
-                log.severe("SAAJ0121.impl.invalid.first.child.of.envelope");
-                throw new SOAPExceptionImpl("First child of Envelope must be either a Header or Body");
-            }
-        }
-
-        header = (HeaderImpl) createElement(headerName);
-        insertBefore(header, firstChild);
-        header.ensureNamespaceIsDeclared(headerName.getPrefix(), headerName.getURI());
-
-        return header;
-    }
-
-    protected void lookForHeader() throws SOAPException {
-        NameImpl headerName = getHeaderName(null);
-
-        HeaderImpl hdr = (HeaderImpl) findChild(headerName);
-        header = hdr;
-    }
-
-    public SOAPHeader getHeader() throws SOAPException {
-        lookForHeader();
-        return header;
-    }
-
-    protected void lookForBody() throws SOAPException {
-        NameImpl bodyName = getBodyName(null);
-
-        BodyImpl bodyChildElement = (BodyImpl) findChild(bodyName);
-        body = bodyChildElement;
-    }
-
-    public SOAPBody addBody() throws SOAPException {
-        return addBody(null);
-    }
-
-    public SOAPBody addBody(String prefix) throws SOAPException {
-        lookForBody();
-
-        if (prefix == null || prefix.equals("")) {
-            prefix = getPrefix();
-        }
-
-        if (body == null) {
-            NameImpl bodyName = getBodyName(prefix);
-            body = (BodyImpl) createElement(bodyName);
-            insertBefore(body, null);
-            body.ensureNamespaceIsDeclared(bodyName.getPrefix(), bodyName.getURI());
-        } else {
-            log.severe("SAAJ0122.impl.body.already.exists");
-            throw new SOAPExceptionImpl("Can't add a body when one is already present.");
-        }
-
-        return body;
-    }
-
-    protected SOAPElement addElement(Name name) throws SOAPException {
-        if (getBodyName(null).equals(name)) {
-            return addBody(name.getPrefix());
-        }
-        if (getHeaderName(null).equals(name)) {
-            return addHeader(name.getPrefix());
-        }
-
-        return super.addElement(name);
-    }
-
-    protected SOAPElement addElement(QName name) throws SOAPException {
-        if (getBodyName(null).equals(NameImpl.convertToName(name))) {
-            return addBody(name.getPrefix());
-        }
-        if (getHeaderName(null).equals(NameImpl.convertToName(name))) {
-            return addHeader(name.getPrefix());
-        }
-
-        return super.addElement(name);
-    }
-
-    public SOAPBody getBody() throws SOAPException {
-        lookForBody();
-        return body;
-    }
-
-    public Source getContent() {
-        return new DOMSource(getOwnerDocument());
-    }
-
-    public Name createName(String localName, String prefix, String uri)
-        throws SOAPException {
-
-        // validating parameters before passing them on
-        // to make sure that the namespace specification rules are followed
-
-        // reserved xmlns prefix cannot be used.
-        if ("xmlns".equals(prefix)) {
-            log.severe("SAAJ0123.impl.no.reserved.xmlns");
-            throw new SOAPExceptionImpl("Cannot declare reserved xmlns prefix");
-        }
-        // Qualified name cannot be xmlns.
-        if ((prefix == null) && ("xmlns".equals(localName))) {
-            log.severe("SAAJ0124.impl.qualified.name.cannot.be.xmlns");
-            throw new SOAPExceptionImpl("Qualified name cannot be xmlns");
-        }
-
-        return NameImpl.create(localName, prefix, uri);
-    }
-
-    public Name createName(String localName, String prefix)
-        throws SOAPException {
-        String namespace = getNamespaceURI(prefix);
-        if (namespace == null) {
-            log.log(
-                Level.SEVERE,
-                "SAAJ0126.impl.cannot.locate.ns",
-                new String[] { prefix });
-            throw new SOAPExceptionImpl(
-                "Unable to locate namespace for prefix " + prefix);
-        }
-        return NameImpl.create(localName, prefix, namespace);
-    }
-
-    public Name createName(String localName) throws SOAPException {
-        return NameImpl.createFromUnqualifiedName(localName);
-    }
-
-    public void setOmitXmlDecl(String value) {
-        this.omitXmlDecl = value;
-    }
-
-    public void setXmlDecl(String value) {
-        this.xmlDecl = value;
-    }
-
-    private String getOmitXmlDecl() {
-        return this.omitXmlDecl;
-    }
-
-    public void setCharsetEncoding(String value) {
-        charset = value;
-    }
-
-    public void output(OutputStream out) throws IOException {
-        try {
-//            materializeBody();
-            Transformer transformer =
-                EfficientStreamingTransformer.newTransformer();
-
-            transformer.setOutputProperty(
-                OutputKeys.OMIT_XML_DECLARATION, "yes");
-                /*omitXmlDecl);*/
-            // no equivalent for "setExpandEmptyElements"
-            transformer.setOutputProperty(
-                OutputKeys.ENCODING,
-                charset);
-
-            if (omitXmlDecl.equals("no") && xmlDecl == null) {
-                xmlDecl = "<?xml version=\"" + getOwnerDocument().getXmlVersion() + "\" encoding=\"" +
-                    charset + "\" ?>";
-            }
-
-           StreamResult result = new StreamResult(out);
-            if (xmlDecl != null) {
-                OutputStreamWriter writer = new OutputStreamWriter(out, charset);
-                writer.write(xmlDecl);
-                writer.flush();
-                result = new StreamResult(writer);
-            }
-
-            if (log.isLoggable(Level.FINE)) {
-                log.log(Level.FINE, "SAAJ0190.impl.set.xml.declaration",
-                        new String[] { omitXmlDecl });
-                log.log(Level.FINE, "SAAJ0191.impl.set.encoding",
-                        new String[] { charset });
-            }
-
-            //StreamResult result = new StreamResult(out);
-            transformer.transform(getContent(), result);
-        } catch (Exception ex) {
-            throw new IOException(ex.getMessage());
-        }
-    }
-
-    /**
-     * Serialize to FI if boolean parameter set.
-     */
-    public void output(OutputStream out, boolean isFastInfoset)
-        throws IOException
-    {
-        if (!isFastInfoset) {
-            output(out);
-        }
-        else {
-            try {
-                // Run transform and generate FI output from content
-                Source source = getContent();
-                Transformer transformer = EfficientStreamingTransformer.newTransformer();
-                    transformer.transform(getContent(),
-                        FastInfosetReflection.FastInfosetResult_new(out));
-            }
-            catch (Exception ex) {
-                throw new IOException(ex.getMessage());
-            }
-        }
-    }
-
-    //    public void prettyPrint(OutputStream out) throws IOException {
-    //        if (getDocument() == null)
-    //            initDocument();
-    //
-    //        OutputFormat format = OutputFormat.createPrettyPrint();
-    //
-    //        format.setIndentSize(2);
-    //        format.setNewlines(true);
-    //        format.setTrimText(true);
-    //        format.setPadText(true);
-    //        format.setExpandEmptyElements(false);
-    //
-    //        XMLWriter writer = new XMLWriter(out, format);
-    //        writer.write(getDocument());
-    //    }
-    //
-    //    public void prettyPrint(Writer out) throws IOException {
-    //        if (getDocument() == null)
-    //            initDocument();
-    //
-    //        OutputFormat format = OutputFormat.createPrettyPrint();
-    //
-    //        format.setIndentSize(2);
-    //        format.setNewlines(true);
-    //        format.setTrimText(true);
-    //        format.setPadText(true);
-    //        format.setExpandEmptyElements(false);
-    //
-    //        XMLWriter writer = new XMLWriter(out, format);
-    //        writer.write(getDocument());
-    //    }
-
-
-     public SOAPElement setElementQName(QName newName) throws SOAPException {
-        log.log(Level.SEVERE,
-                "SAAJ0146.impl.invalid.name.change.requested",
-                new Object[] {elementQName.getLocalPart(),
-                              newName.getLocalPart()});
-        throw new SOAPException("Cannot change name for "
-                                + elementQName.getLocalPart() + " to "
-                                + newName.getLocalPart());
-     }
-
-    @Override
-    public void setStaxBridge(StaxBridge bridge) throws SOAPException {
-        //set it on the body
-        ((BodyImpl) getBody()).setStaxBridge(bridge);
-    }
-
-    @Override
-    public StaxBridge getStaxBridge() throws SOAPException {
-        return ((BodyImpl) getBody()).getStaxBridge();
-    }
-
-    @Override
-    public XMLStreamReader getPayloadReader() throws SOAPException {
-        return ((BodyImpl) getBody()).getPayloadReader();
-    }
-
-    @Override
-    public void writeTo(final XMLStreamWriter writer) throws XMLStreamException, SOAPException {
-        StaxBridge readBridge = this.getStaxBridge();
-        if (readBridge != null && readBridge instanceof StaxLazySourceBridge) {
-//              StaxSoapWriteBridge writingBridge =  new StaxSoapWriteBridge(this);
-//              writingBridge.write(writer);
-                final String soapEnvNS = this.getNamespaceURI();
-                final DOMStreamReader reader = new DOMStreamReader(this);
-                XMLStreamReaderToXMLStreamWriter writingBridge =  new XMLStreamReaderToXMLStreamWriter();
-                writingBridge.bridge( new XMLStreamReaderToXMLStreamWriter.Breakpoint(reader, writer) {
-                        public boolean proceedAfterStartElement()  {
-                                if ("Body".equals(reader.getLocalName()) && soapEnvNS.equals(reader.getNamespaceURI()) ){
-                                        return false;
-                                } else
-                                        return true;
-                        }
-            });//bridgeToBodyStartTag
-            ((StaxLazySourceBridge)readBridge).writePayloadTo(writer);
-            writer.writeEndElement();//body
-            writer.writeEndElement();//env
-            writer.writeEndDocument();
-            writer.flush();
-        } else {
-                LazyEnvelopeStaxReader lazyEnvReader = new LazyEnvelopeStaxReader(this);
-                XMLStreamReaderToXMLStreamWriter writingBridge = new XMLStreamReaderToXMLStreamWriter();
-                writingBridge.bridge(lazyEnvReader, writer);
-//            writingBridge.bridge(new XMLStreamReaderToXMLStreamWriter.Breakpoint(lazyEnvReader, writer));
-        }
-        //Assume the staxBridge is exhausted now since we would have read the body reader
-        ((BodyImpl) getBody()).setPayloadStreamRead();
-    }
-
-    @Override
-    public QName getPayloadQName() throws SOAPException {
-        return ((BodyImpl) getBody()).getPayloadQName();
-    }
-
-    @Override
-    public String getPayloadAttributeValue(String localName) throws SOAPException {
-        return ((BodyImpl) getBody()).getPayloadAttributeValue(localName);
-    }
-
-    @Override
-    public String getPayloadAttributeValue(QName qName) throws SOAPException {
-        return ((BodyImpl) getBody()).getPayloadAttributeValue(qName);
-    }
-
-    @Override
-    public boolean isLazy() {
-        try {
-            return ((BodyImpl) getBody()).isLazy();
-        } catch (SOAPException e) {
-            return false;
-        }
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/FaultElementImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap.impl;
-
-import java.util.logging.Level;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPElement;
-import javax.xml.soap.SOAPFaultElement;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-
-public abstract class FaultElementImpl
-    extends ElementImpl
-    implements SOAPFaultElement {
-
-    protected FaultElementImpl(SOAPDocumentImpl ownerDoc, NameImpl qname) {
-        super(ownerDoc, qname);
-    }
-
-    protected FaultElementImpl(SOAPDocumentImpl ownerDoc, QName qname) {
-        super(ownerDoc, qname);
-    }
-
-    protected abstract boolean isStandardFaultElement();
-
-    public SOAPElement setElementQName(QName newName) throws SOAPException {
-            log.log(Level.SEVERE,
-                    "SAAJ0146.impl.invalid.name.change.requested",
-                    new Object[] {elementQName.getLocalPart(),
-                                  newName.getLocalPart()});
-            throw new SOAPException("Cannot change name for "
-                                    + elementQName.getLocalPart() + " to "
-                                    + newName.getLocalPart());
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/FaultImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,346 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap.impl;
-
-import java.util.Locale;
-import java.util.logging.Level;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.*;
-
-import org.w3c.dom.Element;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-
-public abstract class FaultImpl extends ElementImpl implements SOAPFault {
-
-    /* This can also represent a fault reason element */
-    protected SOAPFaultElement faultStringElement;
-
-    /* This can also represent a fault role element */
-    protected SOAPFaultElement faultActorElement;
-
-    protected SOAPFaultElement faultCodeElement;
-
-    protected Detail detail;
-
-    protected FaultImpl(SOAPDocumentImpl ownerDoc, NameImpl name) {
-        super(ownerDoc, name);
-    }
-
-
-    protected abstract NameImpl getDetailName();
-    protected abstract NameImpl getFaultCodeName();
-    protected abstract NameImpl getFaultStringName();
-    protected abstract NameImpl getFaultActorName();
-    protected abstract DetailImpl createDetail();
-    protected abstract FaultElementImpl createSOAPFaultElement(String localName);
-    protected abstract FaultElementImpl createSOAPFaultElement(QName qname);
-    protected abstract FaultElementImpl createSOAPFaultElement(Name qname);
-    protected abstract void checkIfStandardFaultCode(String faultCode, String uri) throws SOAPException;
-    protected abstract void finallySetFaultCode(String faultcode) throws SOAPException;
-    protected abstract boolean isStandardFaultElement(String localName);
-    protected abstract QName getDefaultFaultCode();
-
-
-    protected void findFaultCodeElement() {
-        this.faultCodeElement =
-            (SOAPFaultElement) findAndConvertChildElement(getFaultCodeName());
-    }
-
-    protected void findFaultActorElement() {
-        this.faultActorElement =
-            (SOAPFaultElement) findAndConvertChildElement(getFaultActorName());
-    }
-
-    protected void findFaultStringElement() {
-        this.faultStringElement =
-            (SOAPFaultElement) findAndConvertChildElement(getFaultStringName());
-    }
-
-    public void setFaultCode(String faultCode) throws SOAPException {
-        setFaultCode(
-            NameImpl.getLocalNameFromTagName(faultCode),
-            NameImpl.getPrefixFromTagName(faultCode),
-            null);
-    }
-
-    public void setFaultCode(String faultCode, String prefix, String uri)
-        throws SOAPException {
-
-        if (prefix == null || "".equals(prefix)) {
-            if (uri != null && !"".equals(uri)) {
-                prefix = getNamespacePrefix(uri);
-                if (prefix == null || "".equals(prefix)) {
-                    prefix = "ns0";
-                }
-            }
-        }
-        if (this.faultCodeElement == null)
-            findFaultCodeElement();
-
-        if (this.faultCodeElement == null)
-            this.faultCodeElement = addFaultCodeElement();
-        else
-            this.faultCodeElement.removeContents();
-
-        if (uri == null || "".equals(uri)) {
-            uri = this.faultCodeElement.getNamespaceURI(prefix);
-        }
-        if (uri == null || "".equals(uri)) {
-            if (prefix != null && !"".equals(prefix)) {
-                //cannot allow an empty URI for a non-Empty prefix
-                log.log(Level.SEVERE, "SAAJ0140.impl.no.ns.URI", new Object[]{prefix + ":" + faultCode});
-                throw new SOAPExceptionImpl("Empty/Null NamespaceURI specified for faultCode \"" + prefix + ":" + faultCode + "\"");
-            } else {
-                uri = "";
-            }
-        }
-        checkIfStandardFaultCode(faultCode, uri);
-        ((FaultElementImpl) this.faultCodeElement).ensureNamespaceIsDeclared(prefix, uri);
-
-        if (prefix == null || "".equals(prefix)) {
-            finallySetFaultCode(faultCode);
-        } else {
-            finallySetFaultCode(prefix + ":" + faultCode);
-        }
-    }
-
-    public void setFaultCode(Name faultCodeQName) throws SOAPException {
-        setFaultCode(
-            faultCodeQName.getLocalName(),
-            faultCodeQName.getPrefix(),
-            faultCodeQName.getURI());
-    }
-
-    public void setFaultCode(QName faultCodeQName) throws SOAPException {
-        setFaultCode(
-            faultCodeQName.getLocalPart(),
-            faultCodeQName.getPrefix(),
-            faultCodeQName.getNamespaceURI());
-    }
-
-    protected static QName convertCodeToQName(
-        String code,
-        SOAPElement codeContainingElement) {
-
-        int prefixIndex = code.indexOf(':');
-        if (prefixIndex == -1) {
-            return new QName(code);
-        }
-
-        String prefix = code.substring(0, prefixIndex);
-        String nsName =((ElementImpl) codeContainingElement).lookupNamespaceURI(prefix);
-            //((ElementImpl) codeContainingElement).getNamespaceURI(prefix);
-        return new QName(nsName, getLocalPart(code), prefix);
-    }
-
-    protected void initializeDetail() {
-        NameImpl detailName = getDetailName();
-        detail = (Detail) findAndConvertChildElement(detailName);
-    }
-
-    public Detail getDetail() {
-        if (detail == null)
-            initializeDetail();
-        if ((detail != null) && (detail.getParentNode() == null)) {
-        // a detach node was called on it
-            detail = null;
-        }
-        return detail;
-    }
-
-    public Detail addDetail() throws SOAPException {
-        if (detail == null)
-            initializeDetail();
-        if (detail == null) {
-            detail = createDetail();
-            addNode(detail);
-            return detail;
-        } else {
-            // Log
-            throw new SOAPExceptionImpl("Error: Detail already exists");
-        }
-    }
-
-    public boolean hasDetail() {
-        return (getDetail() != null);
-    }
-
-    public abstract void setFaultActor(String faultActor) throws SOAPException;
-
-    public String getFaultActor() {
-        if (this.faultActorElement == null)
-            findFaultActorElement();
-        if (this.faultActorElement != null) {
-                return this.faultActorElement.getValue();
-        }
-        return null;
-    }
-
-    public SOAPElement setElementQName(QName newName) throws SOAPException {
-
-        log.log(
-            Level.SEVERE,
-            "SAAJ0146.impl.invalid.name.change.requested",
-            new Object[] {elementQName.getLocalPart(), newName.getLocalPart()});
-        throw new SOAPException(
-            "Cannot change name for " + elementQName.getLocalPart() + " to " + newName.getLocalPart());
-    }
-
-    protected SOAPElement convertToSoapElement(Element element) {
-        if (element instanceof SOAPFaultElement) {
-            return (SOAPElement) element;
-        } else if (element instanceof SOAPElement) {
-            SOAPElement soapElement = (SOAPElement) element;
-            if (getDetailName().equals(soapElement.getElementName())) {
-                return replaceElementWithSOAPElement(element, createDetail());
-            } else {
-                String localName =
-                    soapElement.getElementName().getLocalName();
-                if (isStandardFaultElement(localName))
-                    return replaceElementWithSOAPElement(
-                               element,
-                               createSOAPFaultElement(soapElement.getElementQName()));
-                return soapElement;
-            }
-        } else {
-            Name elementName = NameImpl.copyElementName(element);
-            ElementImpl newElement;
-            if (getDetailName().equals(elementName)) {
-                newElement = (ElementImpl) createDetail();
-            } else {
-                String localName = elementName.getLocalName();
-                if (isStandardFaultElement(localName))
-                    newElement =
-                        (ElementImpl) createSOAPFaultElement(elementName);
-                else
-                    newElement = (ElementImpl) createElement(elementName);
-            }
-            return replaceElementWithSOAPElement(element, newElement);
-        }
-    }
-
-    protected SOAPFaultElement addFaultCodeElement() throws SOAPException {
-        if (this.faultCodeElement == null)
-            findFaultCodeElement();
-        if (this.faultCodeElement == null) {
-            this.faultCodeElement =
-                addSOAPFaultElement(getFaultCodeName().getLocalName());
-            return this.faultCodeElement;
-        } else {
-            throw new SOAPExceptionImpl("Error: Faultcode already exists");
-        }
-    }
-
-    private SOAPFaultElement addFaultStringElement() throws SOAPException {
-        if (this.faultStringElement == null)
-            findFaultStringElement();
-        if (this.faultStringElement == null) {
-            this.faultStringElement =
-                addSOAPFaultElement(getFaultStringName().getLocalName());
-            return this.faultStringElement;
-        } else {
-            // Log
-            throw new SOAPExceptionImpl("Error: Faultstring already exists");
-        }
-    }
-
-    private SOAPFaultElement addFaultActorElement() throws SOAPException {
-        if (this.faultActorElement == null)
-            findFaultActorElement();
-        if (this.faultActorElement == null) {
-            this.faultActorElement =
-                addSOAPFaultElement(getFaultActorName().getLocalName());
-            return this.faultActorElement;
-        } else {
-            // Log
-            throw new SOAPExceptionImpl("Error: Faultactor already exists");
-        }
-    }
-
-    protected SOAPElement addElement(Name name) throws SOAPException {
-        if (getDetailName().equals(name)) {
-            return addDetail();
-        } else if(getFaultCodeName().equals(name)) {
-            return addFaultCodeElement();
-        } else if(getFaultStringName().equals(name)) {
-            return addFaultStringElement();
-        } else if(getFaultActorName().equals(name)) {
-            return addFaultActorElement();
-        }
-        return super.addElement(name);
-    }
-
-    protected SOAPElement addElement(QName name) throws SOAPException {
-        return addElement(NameImpl.convertToName(name));
-    }
-
-    protected FaultElementImpl addSOAPFaultElement(String localName)
-        throws SOAPException {
-
-        FaultElementImpl faultElem = createSOAPFaultElement(localName);
-        addNode(faultElem);
-        return faultElem;
-    }
-
-    /**
-     * Convert an xml:lang attribute value into a Locale object
-     */
-    protected static Locale xmlLangToLocale(String xmlLang) {
-        if (xmlLang == null) {
-            return null;
-        }
-
-        // Spec uses hyphen as separator
-        int index = xmlLang.indexOf("-");
-
-        // Accept underscore as separator as well
-        if (index == -1) {
-            index = xmlLang.indexOf("_");
-        }
-
-        if (index == -1) {
-            // No separator so assume only a language component
-            return new Locale(xmlLang, "");
-        }
-
-        String language = xmlLang.substring(0, index);
-        String country = xmlLang.substring(index + 1);
-        return new Locale(language, country);
-    }
-
-    protected static String localeToXmlLang(Locale locale) {
-        String xmlLang = locale.getLanguage();
-        String country = locale.getCountry();
-        if (!"".equals(country)) {
-            xmlLang += "-" + country;
-        }
-        return xmlLang;
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/HeaderElementImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap.impl;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.*;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-
-public abstract class HeaderElementImpl
-    extends ElementImpl
-    implements SOAPHeaderElement {
-
-    protected static Name RELAY_ATTRIBUTE_LOCAL_NAME =
-        NameImpl.createFromTagName("relay");
-    protected static Name MUST_UNDERSTAND_ATTRIBUTE_LOCAL_NAME =
-        NameImpl.createFromTagName("mustUnderstand");
-
-    public HeaderElementImpl(SOAPDocumentImpl ownerDoc, Name qname) {
-        super(ownerDoc, qname);
-    }
-    public HeaderElementImpl(SOAPDocumentImpl ownerDoc, QName qname) {
-        super(ownerDoc, qname);
-    }
-
-    protected abstract NameImpl getActorAttributeName();
-    protected abstract NameImpl getRoleAttributeName();
-    protected abstract NameImpl getMustunderstandAttributeName();
-    protected abstract boolean getMustunderstandAttributeValue(String str);
-    protected abstract String getMustunderstandLiteralValue(boolean mu);
-    protected abstract NameImpl getRelayAttributeName();
-    protected abstract boolean getRelayAttributeValue(String str);
-    protected abstract String getRelayLiteralValue(boolean mu);
-    protected abstract String getActorOrRole();
-
-
-    public void setParentElement(SOAPElement element) throws SOAPException {
-        if (!(element instanceof SOAPHeader)) {
-            log.severe("SAAJ0130.impl.header.elem.parent.mustbe.header");
-            throw new SOAPException("Parent of a SOAPHeaderElement has to be a SOAPHeader");
-        }
-
-        super.setParentElement(element);
-    }
-
-    public void setActor(String actorUri) {
-        try {
-            removeAttribute(getActorAttributeName());
-            addAttribute((Name) getActorAttributeName(), actorUri);
-        } catch (SOAPException ex) {
-        }
-    }
-
-    //SOAP 1.2 supports Role
-    public void setRole(String roleUri) throws SOAPException {
-        // runtime exception thrown if called for SOAP 1.1
-        removeAttribute(getRoleAttributeName());
-        addAttribute((Name) getRoleAttributeName(), roleUri);
-    }
-
-
-    Name actorAttNameWithoutNS = NameImpl.createFromTagName("actor");
-
-    public String getActor() {
-        String actor = getAttributeValue(getActorAttributeName());
-        return actor;
-    }
-
-    Name roleAttNameWithoutNS = NameImpl.createFromTagName("role");
-
-    public String getRole() {
-        // runtime exception thrown for 1.1
-        String role = getAttributeValue(getRoleAttributeName());
-        return role;
-    }
-
-    public void setMustUnderstand(boolean mustUnderstand) {
-        try {
-            removeAttribute(getMustunderstandAttributeName());
-            addAttribute(
-                (Name) getMustunderstandAttributeName(),
-                getMustunderstandLiteralValue(mustUnderstand));
-        } catch (SOAPException ex) {
-        }
-    }
-
-    public boolean getMustUnderstand() {
-        String mu = getAttributeValue(getMustunderstandAttributeName());
-
-        if (mu != null)
-            return getMustunderstandAttributeValue(mu);
-
-        return false;
-    }
-
-    public void setRelay(boolean relay) throws SOAPException {
-        // runtime exception thrown for 1.1
-        removeAttribute(getRelayAttributeName());
-        addAttribute(
-            (Name) getRelayAttributeName(),
-            getRelayLiteralValue(relay));
-    }
-
-    public boolean getRelay() {
-        String mu = getAttributeValue(getRelayAttributeName());
-        if (mu != null)
-            return getRelayAttributeValue(mu);
-
-        return false;
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/HeaderImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,306 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap.impl;
-
-import java.util.*;
-import java.util.logging.Level;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.*;
-
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-
-public abstract class HeaderImpl extends ElementImpl implements SOAPHeader {
-    protected static final boolean MUST_UNDERSTAND_ONLY = false;
-
-    protected HeaderImpl(SOAPDocumentImpl ownerDoc, NameImpl name) {
-        super(ownerDoc, name);
-    }
-
-    protected abstract SOAPHeaderElement createHeaderElement(Name name)
-        throws SOAPException;
-    protected abstract SOAPHeaderElement createHeaderElement(QName name)
-        throws SOAPException;
-    protected abstract NameImpl getNotUnderstoodName();
-    protected abstract NameImpl getUpgradeName();
-    protected abstract NameImpl getSupportedEnvelopeName();
-
-    public SOAPHeaderElement addHeaderElement(Name name) throws SOAPException {
-        SOAPElement newHeaderElement =
-            ElementFactory.createNamedElement(
-                ((SOAPDocument) getOwnerDocument()).getDocument(),
-                name.getLocalName(),
-                name.getPrefix(),
-                name.getURI());
-        if (newHeaderElement == null
-            || !(newHeaderElement instanceof SOAPHeaderElement)) {
-            newHeaderElement = createHeaderElement(name);
-        }
-
-        // header elements must be namespace qualified
-        // check that URI is  not empty, ensuring that the element is NS qualified.
-        String uri = newHeaderElement.getElementQName().getNamespaceURI();
-        if ((uri == null) || ("").equals(uri)) {
-            log.severe("SAAJ0131.impl.header.elems.ns.qualified");
-            throw new SOAPExceptionImpl("HeaderElements must be namespace qualified");
-        }
-        addNode(newHeaderElement);
-        return (SOAPHeaderElement) newHeaderElement;
-    }
-
-    public SOAPHeaderElement addHeaderElement(QName name) throws SOAPException {
-        SOAPElement newHeaderElement =
-            ElementFactory.createNamedElement(
-                ((SOAPDocument) getOwnerDocument()).getDocument(),
-                name.getLocalPart(),
-                name.getPrefix(),
-                name.getNamespaceURI());
-        if (newHeaderElement == null
-            || !(newHeaderElement instanceof SOAPHeaderElement)) {
-            newHeaderElement = createHeaderElement(name);
-        }
-
-        // header elements must be namespace qualified
-        // check that URI is  not empty, ensuring that the element is NS qualified.
-        String uri = newHeaderElement.getElementQName().getNamespaceURI();
-        if ((uri == null) || ("").equals(uri)) {
-            log.severe("SAAJ0131.impl.header.elems.ns.qualified");
-            throw new SOAPExceptionImpl("HeaderElements must be namespace qualified");
-        }
-        addNode(newHeaderElement);
-        return (SOAPHeaderElement) newHeaderElement;
-    }
-
-    protected SOAPElement addElement(Name name) throws SOAPException {
-        return addHeaderElement(name);
-    }
-
-    protected SOAPElement addElement(QName name) throws SOAPException {
-        return addHeaderElement(name);
-    }
-
-    public Iterator examineHeaderElements(String actor) {
-        return getHeaderElementsForActor(actor, false, false);
-    }
-
-    public Iterator extractHeaderElements(String actor) {
-        return getHeaderElementsForActor(actor, true, false);
-    }
-
-    protected Iterator getHeaderElementsForActor(
-        String actor,
-        boolean detach,
-        boolean mustUnderstand) {
-        if (actor == null || actor.equals("")) {
-            log.severe("SAAJ0132.impl.invalid.value.for.actor.or.role");
-            throw new IllegalArgumentException("Invalid value for actor or role");
-        }
-        return getHeaderElements(actor, detach, mustUnderstand);
-    }
-
-    protected Iterator getHeaderElements(
-        String actor,
-        boolean detach,
-        boolean mustUnderstand) {
-        List elementList = new ArrayList();
-
-        Iterator eachChild = getChildElements();
-
-        Object currentChild = iterate(eachChild);
-        while (currentChild != null) {
-            if (!(currentChild instanceof SOAPHeaderElement)) {
-                currentChild = iterate(eachChild);
-            } else {
-                HeaderElementImpl currentElement =
-                    (HeaderElementImpl) currentChild;
-                currentChild = iterate(eachChild);
-
-                boolean isMustUnderstandMatching =
-                    (!mustUnderstand || currentElement.getMustUnderstand());
-                boolean doAdd = false;
-                if (actor == null && isMustUnderstandMatching) {
-                    doAdd = true;
-                } else {
-                    String currentActor = currentElement.getActorOrRole();
-                    if (currentActor == null) {
-                        currentActor = "";
-                    }
-
-                    if (currentActor.equalsIgnoreCase(actor)
-                        && isMustUnderstandMatching) {
-                        doAdd = true;
-                    }
-                }
-
-                if (doAdd) {
-                    elementList.add(currentElement);
-                    if (detach) {
-                        currentElement.detachNode();
-                    }
-                }
-            }
-        }
-
-        return elementList.listIterator();
-    }
-
-    private Object iterate(Iterator each) {
-        return each.hasNext() ? each.next() : null;
-    }
-
-    public void setParentElement(SOAPElement element) throws SOAPException {
-        if (!(element instanceof SOAPEnvelope)) {
-            log.severe("SAAJ0133.impl.header.parent.mustbe.envelope");
-            throw new SOAPException("Parent of SOAPHeader has to be a SOAPEnvelope");
-        }
-        super.setParentElement(element);
-    }
-
-    // overriding ElementImpl's method to ensure that HeaderElements are
-    // namespace qualified. Holds for both SOAP versions.
-    // TODO - This check needs to be made for other addChildElement() methods
-    // as well.
-    public SOAPElement addChildElement(String localName) throws SOAPException {
-
-        SOAPElement element = super.addChildElement(localName);
-        // check that URI is  not empty, ensuring that the element is NS qualified.
-        String uri = element.getElementName().getURI();
-        if ((uri == null) || ("").equals(uri)) {
-            log.severe("SAAJ0134.impl.header.elems.ns.qualified");
-            throw new SOAPExceptionImpl("HeaderElements must be namespace qualified");
-        }
-        return element;
-    }
-
-    public Iterator examineAllHeaderElements() {
-        return getHeaderElements(null, false, MUST_UNDERSTAND_ONLY);
-    }
-
-    public Iterator examineMustUnderstandHeaderElements(String actor) {
-        return getHeaderElements(actor, false, true);
-
-    }
-
-    public Iterator extractAllHeaderElements() {
-        return getHeaderElements(null, true, false);
-    }
-
-    public SOAPHeaderElement addUpgradeHeaderElement(Iterator supportedSoapUris)
-        throws SOAPException {
-        if (supportedSoapUris == null) {
-            log.severe("SAAJ0411.ver1_2.no.null.supportedURIs");
-            throw new SOAPException("Argument cannot be null; iterator of supportedURIs cannot be null");
-        }
-        if (!supportedSoapUris.hasNext()) {
-            log.severe("SAAJ0412.ver1_2.no.empty.list.of.supportedURIs");
-            throw new SOAPException("List of supported URIs cannot be empty");
-        }
-        Name upgradeName = getUpgradeName();
-        SOAPHeaderElement upgradeHeaderElement =
-            (SOAPHeaderElement) addChildElement(upgradeName);
-        Name supportedEnvelopeName = getSupportedEnvelopeName();
-        int i = 0;
-        while (supportedSoapUris.hasNext()) {
-            SOAPElement subElement =
-                upgradeHeaderElement.addChildElement(supportedEnvelopeName);
-            String ns = "ns" + Integer.toString(i);
-            subElement.addAttribute(
-                NameImpl.createFromUnqualifiedName("qname"),
-                ns + ":Envelope");
-            subElement.addNamespaceDeclaration(
-                ns,
-                (String) supportedSoapUris.next());
-            i ++;
-        }
-        return upgradeHeaderElement;
-    }
-
-    public SOAPHeaderElement addUpgradeHeaderElement(String supportedSoapUri)
-        throws SOAPException {
-        return addUpgradeHeaderElement(new String[] {supportedSoapUri});
-    }
-
-    public SOAPHeaderElement addUpgradeHeaderElement(String[] supportedSoapUris)
-        throws SOAPException {
-
-        if (supportedSoapUris == null) {
-            log.severe("SAAJ0411.ver1_2.no.null.supportedURIs");
-            throw new SOAPException("Argument cannot be null; array of supportedURIs cannot be null");
-        }
-        if (supportedSoapUris.length == 0) {
-            log.severe("SAAJ0412.ver1_2.no.empty.list.of.supportedURIs");
-            throw new SOAPException("List of supported URIs cannot be empty");
-        }
-        Name upgradeName = getUpgradeName();
-        SOAPHeaderElement upgradeHeaderElement =
-            (SOAPHeaderElement) addChildElement(upgradeName);
-        Name supportedEnvelopeName = getSupportedEnvelopeName();
-        for (int i = 0; i < supportedSoapUris.length; i ++) {
-            SOAPElement subElement =
-                upgradeHeaderElement.addChildElement(supportedEnvelopeName);
-            String ns = "ns" + Integer.toString(i);
-            subElement.addAttribute(
-                NameImpl.createFromUnqualifiedName("qname"),
-                ns + ":Envelope");
-            subElement.addNamespaceDeclaration(ns, supportedSoapUris[i]);
-        }
-        return upgradeHeaderElement;
-    }
-
-    protected SOAPElement convertToSoapElement(Element element) {
-        if (element instanceof SOAPHeaderElement) {
-            return (SOAPElement) element;
-        } else {
-            SOAPHeaderElement headerElement;
-            try {
-                headerElement =
-                    createHeaderElement(NameImpl.copyElementName(element));
-            } catch (SOAPException e) {
-                throw new ClassCastException("Could not convert Element to SOAPHeaderElement: " + e.getMessage());
-            }
-            return replaceElementWithSOAPElement(
-                element,
-                (ElementImpl) headerElement);
-        }
-    }
-
-    public SOAPElement setElementQName(QName newName) throws SOAPException {
-       log.log(Level.SEVERE,
-                "SAAJ0146.impl.invalid.name.change.requested",
-                new Object[] {elementQName.getLocalPart(),
-                              newName.getLocalPart()});
-        throw new SOAPException("Cannot change name for "
-                                + elementQName.getLocalPart() + " to "
-                                + newName.getLocalPart());
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for impl
-# Error messages
-SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: Parent of a SOAPBodyElement has to be a SOAPBody
-SAAJ0102.impl.cannot.locate.ns=SAAJ0102: Unable to locate namespace for prefix {0}
-SAAJ0103.impl.cannot.add.fragements=SAAJ0103: Cannot add fragments which contain elements which are in the SOAP namespace
-SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: Encoding style {0} should be a valid URI
-SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: Cannot pass NULL to setParentElement
-SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: Cannot setValue on an Element that does not have an only child of type Text
-
-SAAJ0110.impl.fault.already.exists=SAAJ0110: Error: Fault already exists
-SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: Parent of SOAPBody has to be a SOAPEnvelope
-
-SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: Cannot pass NULL to setParentElement
-SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: Cannot split text from a Comment Node
-SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: Cannot replace whole text from a Comment Node
-
-SAAJ0120.impl.header.already.exists=SAAJ0120: Can't add a header when one is already present
-SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: First child of Envelope must be either a Header or Body
-SAAJ0122.impl.body.already.exists=SAAJ0122: Can't add a body when one is already present
-SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: Cannot declare reserved xmlns prefix
-SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: Qualified name cannot be xmlns
-#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null
-SAAJ0126.impl.cannot.locate.ns=SAAJ0126: Unable to locate namespace for prefix {0}
-SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: Cannot pass NULL to setParentElement
-
-SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: Parent of a SOAPHeaderElement has to be a SOAPHeader
-SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements must be namespace qualified
-SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: Invalid value for actor or role
-SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: Parent of SOAPHeader has to be a SOAPEnvelope
-SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements must be namespace qualified
-
-SAAJ0140.impl.no.ns.URI=SAAJ0140: Empty/Null NamespaceURI specified for faultCode {0}
-SAAJ0141.impl.detail.exists=SAAJ0141: Detail already exists
-SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: Fault/Reason/Text not supported by this SOAP version, try SOAP 1.2 or later
-SAAJ0143.impl.node.not.supported=SAAJ0143: Fault/Node not supported by this SOAP version, try SOAP 1.2 or later
-SAAJ0144.impl.role.not.supported=SAAJ0144: Fault/Role not supported by this SOAP version, try SOAP 1.2 or later
-SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: Cannot pass NULL to setParentElement
-SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: Cannot change name of element {0} to {1}
-SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: Cannot change the URI for prefix {0} from {1} to {2} in setElementQName
-SAAJ0148.impl.invalid.prefix.for.uri=Non-empty namespace URI: {0} for an empty prefix in SetElementQName
-SAAJ0149.impl.null.prefix=SAAJ0149: prefix cannot be "null" when creating a QName
-
-SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: Cannot extract Document from body
-SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: Unable to extract Document from body
-
-# Debug messages
-SAAJ0150.impl.added.attr=SAAJ0150: Added attribute {0}
-SAAJ0151.impl.no.children=SAAJ0151: Cannot find node containing value: there are no children
-SAAJ0152.impl.first.child.not.text.node=SAAJ0152: Cannot find node containing value: first child is not a Text node
-SAAJ0153.impl.multiple.children.same.value=SAAJ0153: Cannot find node containing value: There is more than one child node
-SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: A SOAPFault element can only be added as a child of SOAPBody
-SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: A Detail element can only be added as a child of a SOAPFault
-SAAJ0156.impl.adding.fault.error=SAAJ0156: Cannot add SOAPFault, a SOAPFault should be the only child of a SOAPBody
-SAAJ0157.impl.detail.exists.error=SAAJ0157: Cannot add Detail, Detail already exists
-SAAJ0158.impl.version.mismatch.fault=SAAJ0158: SOAP Version mismatch encountered when trying to add SOAPFault to SOAPBody
-SAAJ0159.impl.version.mismatch.detail=SAAJ0159: SOAP Version mismatch encountered when trying to add Detail to SOAPFault
-
-# Info messages
-SAAJ0190.impl.set.xml.declaration=SAAJ0190: Omit XML declaration set to {0}
-SAAJ0191.impl.set.encoding=SAAJ0191: Encoding is set to {0}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_de.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for impl
-# Error messages
-SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: \u00DCbergeordnetes Element von SOAPBodyElement muss ein SOAPBody sein
-SAAJ0102.impl.cannot.locate.ns=SAAJ0102: Namespace f\u00FCr Pr\u00E4fix {0} kann nicht gefunden werden
-SAAJ0103.impl.cannot.add.fragements=SAAJ0103: Es k\u00F6nnen keine Fragmente hinzugef\u00FCgt werden, die Elemente enthalten, die im SOAP-Namespace enthalten sind
-SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: Codierungsstil {0} muss ein g\u00FCltiger URI sein
-SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: NULL kann nicht an setParentElement \u00FCbergeben werden
-SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: setValue ist bei einem Element nicht m\u00F6glich, das nicht ein einziges untergeordnetes Element vom Typ Text hat
-
-SAAJ0110.impl.fault.already.exists=SAAJ0110: Fehler: Fault ist bereits vorhanden
-SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: \u00DCbergeordnetes Element von SOAPBody muss SOAPEnvelope sein
-
-SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: NULL kann nicht an setParentElement \u00FCbergeben werden
-SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: Text aus einem Kommentarknoten kann nicht geteilt werden
-SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: Gesamter Text aus einem Kommentarknoten kann nicht ersetzt werden
-
-SAAJ0120.impl.header.already.exists=SAAJ0120: Es kann kein Header hinzugef\u00FCgt werden, wenn bereits ein Header vorhanden ist
-SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: Erstes untergeordnetes Element von Envelope muss "Header" oder "Body" sein
-SAAJ0122.impl.body.already.exists=SAAJ0122: Es kann kein Nachrichtentext hinzugef\u00FCgt werden, wenn bereits ein Nachrichtentext vorhanden ist
-SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: Reserviertes xmlns-Pr\u00E4fix kann nicht deklariert werden
-SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: Vollst\u00E4ndiger Name darf nicht xmlns sein
-#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null
-SAAJ0126.impl.cannot.locate.ns=SAAJ0126: Namespace f\u00FCr Pr\u00E4fix {0} kann nicht gefunden werden
-SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: NULL kann nicht an setParentElement \u00FCbergeben werden
-
-SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: \u00DCbergeordnetes Element von SOAPHeaderElement muss ein SOAPHeader sein
-SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements muss mit Namespace angegeben werden
-SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: Ung\u00FCltiger Wert f\u00FCr Actor oder Rolle
-SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: \u00DCbergeordnetes Element von SOAPHeader muss SOAPEnvelope sein
-SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements muss mit Namespace angegeben werden
-
-SAAJ0140.impl.no.ns.URI=SAAJ0140: Leerer/Null-NamespaceURI f\u00FCr faultCode {0} angegeben
-SAAJ0141.impl.detail.exists=SAAJ0141: Detail ist bereits vorhanden
-SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: Fault/Ursache/Text wird von dieser SOAP-Version nicht unterst\u00FCtzt, versuchen Sie SOAP 1.2 oder h\u00F6her
-SAAJ0143.impl.node.not.supported=SAAJ0143: Fault/Knoten wird von dieser SOAP-Version nicht unterst\u00FCtzt, versuchen Sie SOAP 1.2 oder h\u00F6her
-SAAJ0144.impl.role.not.supported=SAAJ0144: Fault/Rolle wird von dieser SOAP-Version nicht unterst\u00FCtzt, versuchen Sie SOAP 1.2 oder h\u00F6her
-SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: NULL kann nicht an setParentElement \u00FCbergeben werden
-SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: Name des Elements {0} kann nicht in {1} ge\u00E4ndert werden
-SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: Der URI f\u00FCr Pr\u00E4fix {0} kann nicht von {1} in {2} in setElementQName ge\u00E4ndert werden
-SAAJ0148.impl.invalid.prefix.for.uri=Nicht-leerer Namespace-URI: {0} f\u00FCr ein leeres Pr\u00E4fix in SetElementQName
-SAAJ0149.impl.null.prefix=SAAJ0149: Pr\u00E4fix darf bei der Erstellung eines QName nicht "null" sein
-
-SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: Dokument kann nicht aus Nachrichtentext extrahiert werden
-SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: Dokument kann nicht aus Nachrichtentext extrahiert werden
-
-# Debug messages
-SAAJ0150.impl.added.attr=SAAJ0150: Attribut {0} hinzugef\u00FCgt
-SAAJ0151.impl.no.children=SAAJ0151: Knoten, der Wert enth\u00E4lt, kann nicht gefunden werden: es sind keine untergeordneten Elemente vorhanden
-SAAJ0152.impl.first.child.not.text.node=SAAJ0152: Knoten, der Wert enth\u00E4lt, kann nicht gefunden werden: erstes untergeordnetes Element ist kein Textknoten
-SAAJ0153.impl.multiple.children.same.value=SAAJ0153: Knoten, der Wert enth\u00E4lt, kann nicht gefunden werden: Es ist mehr als ein untergeordneter Knoten vorhanden
-SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: Ein SOAPFault-Element kann nur als untergeordnetes Element von SOAPBody hinzugef\u00FCgt werden
-SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: Ein "Detail"-Element kann nur als untergeordnetes Element von SOAPFault hinzugef\u00FCgt werden
-SAAJ0156.impl.adding.fault.error=SAAJ0156: SOAPFault kann nicht hinzugef\u00FCgt werden, SOAPFault muss das einzige untergeordnete Element von SOAPBody sein
-SAAJ0157.impl.detail.exists.error=SAAJ0157: Detail kann nicht hinzugef\u00FCgt werden, Detail ist bereits vorhanden
-SAAJ0158.impl.version.mismatch.fault=SAAJ0158: Nicht \u00FCbereinstimmende SOAP-Version beim Versuch aufgetreten, SOAPFault zu SOAPBody hinzuzuf\u00FCgen
-SAAJ0159.impl.version.mismatch.detail=SAAJ0159: Nicht \u00FCbereinstimmende SOAP-Version beim Versuch aufgetreten, Detail zu SOAPBody hinzuzuf\u00FCgen
-
-# Info messages
-SAAJ0190.impl.set.xml.declaration=SAAJ0190: Deklaration "Omit XML" auf {0} gesetzt
-SAAJ0191.impl.set.encoding=SAAJ0191: Codierung ist auf {0} gesetzt
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_es.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for impl
-# Error messages
-SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: el principal de un SOAPBodyElement tiene que ser un SOAPBody
-SAAJ0102.impl.cannot.locate.ns=SAAJ0102: no se ha encontrado el espacio de nombres para el prefijo {0}
-SAAJ0103.impl.cannot.add.fragements=SAAJ0103: no se pueden agregar fragmentos que contengan elementos que se encuentren en el espacio de nombres de SOAP
-SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: el estilo de codificaci\u00F3n {0} debe ser un URI v\u00E1lido
-SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: no se puede transferir NULL a setParentElement
-SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: no se puede definir un valor en un elemento que no tenga un \u00FAnico secundario de tipo Text
-
-SAAJ0110.impl.fault.already.exists=SAAJ0110: Error: ya existe el fallo
-SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: el principal de SOAPBody tiene que ser SOAPEnvelope
-
-SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: no se puede transferir NULL a setParentElement
-SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: no se puede dividir el texto de un nodo de comentarios
-SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: no se puede sustituir el texto completo de un nodo de comentarios
-
-SAAJ0120.impl.header.already.exists=SAAJ0120: no se puede agregar una cabecera si ya hay una
-SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: el primer secundario de Envelope debe ser Header o Body
-SAAJ0122.impl.body.already.exists=SAAJ0120: no se puede agregar un cuerpo si ya hay uno
-SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: no se puede declarar el prefijo xmlns reservado
-SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: el nombre cualificado no puede ser xmlns
-#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null
-SAAJ0126.impl.cannot.locate.ns=SAAJ0126: no se ha encontrado el espacio de nombres para el prefijo {0}
-SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: no se puede transferir NULL a setParentElement
-
-SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: el principal de SOAPHeaderElement tiene que ser SOAPHeader
-SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements debe estar cualificado por espacio de nombres
-SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: valor no v\u00E1lido para actor o rol
-SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: el principal de SOAPHeader tiene que ser SOAPEnvelope
-SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements debe estar cualificado por espacio de nombres
-
-SAAJ0140.impl.no.ns.URI=SAAJ0140: se ha especificado un URI de espacio de nombres vac\u00EDo o nulo para el c\u00F3digo de fallo {0}
-SAAJ0141.impl.detail.exists=SAAJ0141: ya existe el detalle
-SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: el fallo/motivo/texto no est\u00E1 soportado en esta versi\u00F3n de SOAP. Pruebe SOAP 1.2 o posterior
-SAAJ0143.impl.node.not.supported=SAAJ0143: El fallo/nodo no est\u00E1 soportado en esta versi\u00F3n de SOAP. Pruebe SOAP 1.2 o posterior
-SAAJ0144.impl.role.not.supported=SAAJ0143: el fallo/rol no est\u00E1 soportado en esta versi\u00F3n de SOAP. Pruebe SOAP 1.2 o posterior
-SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: no se puede transferir NULL a setParentElement
-SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: no se puede cambiar el nombre del elemento {0} por {1}
-SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: no se puede cambiar el URI del prefijo {0} de {1} a {2} en setElementQName
-SAAJ0148.impl.invalid.prefix.for.uri=URI de espacio de nombres no vac\u00EDo: {0} para un prefijo vac\u00EDo en SetElementQName
-SAAJ0149.impl.null.prefix=SAAJ0149: el prefijo no puede ser "null" al crear un QName
-
-SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: no se puede extraer el documento del cuerpo
-SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: no se ha podido extraer el documento del cuerpo
-
-# Debug messages
-SAAJ0150.impl.added.attr=SAAJ0150: se ha agregado el atributo {0}
-SAAJ0151.impl.no.children=SAAJ0151: no se ha encontrado el nodo que contiene el valor: no hay secundarios
-SAAJ0152.impl.first.child.not.text.node=SAAJ0152: no se ha encontrado el nodo que contiene el valor: el primer secundario no es un nodo de texto
-SAAJ0153.impl.multiple.children.same.value=SAAJ0153: no se ha encontrado el nodo que contiene el valor: hay m\u00E1s de un nodo secundario
-SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: un elemento SOAPFault s\u00F3lo se puede agregar como secundario de SOAPBody
-SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: un elemento Detail s\u00F3lo se puede agregar como secundario de SOAPFault
-SAAJ0156.impl.adding.fault.error=SAAJ0156: no se puede agregar SOAPFault; SOAPFault debe ser el \u00FAnico secundario de SOAPBody
-SAAJ0157.impl.detail.exists.error=SAAJ0157: no se puede agregar el detalle. El detalle ya existe
-SAAJ0158.impl.version.mismatch.fault=SAAJ0158: se ha encontrado un error de coincidencia de la versi\u00F3n de SOAP al intentar agregar SOAPFault a SOAPBody
-SAAJ0159.impl.version.mismatch.detail=SAAJ0159: se ha encontrado un error de coincidencia de la versi\u00F3n de SOAP al intentar agregar Detail a SOAPFault
-
-# Info messages
-SAAJ0190.impl.set.xml.declaration=SAAJ0190: omita la declaraci\u00F3n XML definida en {0}
-SAAJ0191.impl.set.encoding=SAAJ0191: la codificaci\u00F3n se ha definido en {0}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_fr.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for impl
-# Error messages
-SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101 : le parent d'un \u00E9l\u00E9ment SOAPBodyElement doit \u00EAtre un \u00E9l\u00E9ment SOAPBody
-SAAJ0102.impl.cannot.locate.ns=SAAJ0102 : impossible de localiser l''espace de noms pour le pr\u00E9fixe {0}
-SAAJ0103.impl.cannot.add.fragements=SAAJ0103 : impossible d'ajouter les fragments qui contiennent les \u00E9l\u00E9ments figurant dans l'espace de noms SOAP
-SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105 : le style d''encodage {0} doit \u00EAtre un URI valide
-SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106 : impossible de transmettre la valeur NULL \u00E0 setParentElement
-SAAJ0107.impl.elem.child.not.single.text=SAAJ0107 : impossible de d\u00E9finir la valeur sur un \u00E9l\u00E9ment qui ne comporte aucun enfant unique de type Text
-
-SAAJ0110.impl.fault.already.exists=SAAJ0110 : erreur : l'erreur existe d\u00E9j\u00E0
-SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111 : le parent de SOAPBody doit \u00EAtre un \u00E9l\u00E9ment SOAPEnvelope
-
-SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112 : impossible de transmettre la valeur NULL \u00E0 setParentElement
-SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113 : impossible de s\u00E9parer le texte d'un noeud de commentaire
-SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114 : impossible de remplacer l'ensemble du texte \u00E0 partir d'un noeud de commentaire
-
-SAAJ0120.impl.header.already.exists=SAAJ0120 : impossible d'ajouter un en-t\u00EAte lorsqu'il en existe d\u00E9j\u00E0 un
-SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121 : le premier enfant de Envelope doit \u00EAtre un \u00E9l\u00E9ment Header ou Body
-SAAJ0122.impl.body.already.exists=SAAJ0122 : impossible d'ajouter un corps lorsqu'il en existe d\u00E9j\u00E0 un
-SAAJ0123.impl.no.reserved.xmlns=SAAJ0123 : impossible de d\u00E9clarer le pr\u00E9fixe xmlns r\u00E9serv\u00E9
-SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124 : le nom qualifi\u00E9 ne peut pas \u00EAtre xmlns
-#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null
-SAAJ0126.impl.cannot.locate.ns=SAAJ0126 : impossible de localiser l''espace de noms pour le pr\u00E9fixe {0}
-SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127 : impossible de transmettre la valeur NULL \u00E0 setParentElement
-
-SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130 : le parent d'un \u00E9l\u00E9ment SOAPHeaderElement doit \u00EAtre un \u00E9l\u00E9ment SOAPHeader
-SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131 : les \u00E9l\u00E9ments Header doivent \u00EAtre des espaces de noms qualifi\u00E9s
-SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132 : valeur non valide pour l'acteur ou le r\u00F4le
-SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133 : le parent de SOAPHeader doit \u00EAtre un \u00E9l\u00E9ment SOAPEnvelope
-SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134 : les \u00E9l\u00E9ments Header doivent \u00EAtre des espaces de noms qualifi\u00E9s
-
-SAAJ0140.impl.no.ns.URI=SAAJ0140 : NamespaceURI vide/NULL indiqu\u00E9 pour faultCode {0}
-SAAJ0141.impl.detail.exists=SAAJ0141 : l'\u00E9l\u00E9ment Detail existe d\u00E9j\u00E0
-SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142 : \u00E9l\u00E9ments Fault/Reason/Text non pris en charge par cette version SOAP, essayez SOAP 1.2 ou sup\u00E9rieur
-SAAJ0143.impl.node.not.supported=SAAJ0142 : \u00E9l\u00E9ments Fault/Node non pris en charge par cette version SOAP, essayez SOAP 1.2 ou sup\u00E9rieur
-SAAJ0144.impl.role.not.supported=SAAJ0142 : \u00E9l\u00E9ments Fault/Role non pris en charge par cette version SOAP, essayez SOAP 1.2 ou sup\u00E9rieur
-SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145 : impossible de transmettre la valeur NULL \u00E0 setParentElement
-SAAJ0146.impl.invalid.name.change.requested=SAAJ0146 : impossible de modifier le nom de l''\u00E9l\u00E9ment {0} en {1}
-SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147 : impossible de modifier l''URI pour le pr\u00E9fixe {0} de {1} en {2} dans setElementQName
-SAAJ0148.impl.invalid.prefix.for.uri=URI d''espace de noms non vide : {0} pour un pr\u00E9fixe vide dans SetElementQName
-SAAJ0149.impl.null.prefix=SAAJ0149 : le pr\u00E9fixe ne peut pas \u00EAtre "NULL" lors de la cr\u00E9ation d'un QName
-
-SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250 : impossible d'extraire le document du corps
-SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251 : impossible d'extraire le document du corps
-
-# Debug messages
-SAAJ0150.impl.added.attr=SAAJ0150 : attribut {0} ajout\u00E9
-SAAJ0151.impl.no.children=SAAJ0151 : noeud contenant la valeur introuvable : il n'existe aucun enfant
-SAAJ0152.impl.first.child.not.text.node=SAAJ0151 : noeud contenant la valeur introuvable : le premier enfant n'est pas un noeud Text
-SAAJ0153.impl.multiple.children.same.value=SAAJ0151 : noeud contenant la valeur introuvable : il existe plusieurs noeuds enfant
-SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154 : un \u00E9l\u00E9ment SOAPFault peut \u00EAtre ajout\u00E9 uniquement en tant qu'enfant de SOAPBody
-SAAJ0155.impl.adding.detail.nonfault=SAAJ0155 : un \u00E9l\u00E9ment Detail peut \u00EAtre ajout\u00E9 uniquement en tant qu'enfant d'un \u00E9l\u00E9ment SOAPFault
-SAAJ0156.impl.adding.fault.error=SAAJ0156 : impossible d'ajouter SOAPFault ; un \u00E9l\u00E9ment SOAPFault doit \u00EAtre le seul enfant d'un \u00E9l\u00E9ment SOAPBody
-SAAJ0157.impl.detail.exists.error=SAAJ0157 : impossible d'ajouter l'\u00E9l\u00E9ment Detail, il existe d\u00E9j\u00E0
-SAAJ0158.impl.version.mismatch.fault=SAAJ0158 : non-concordance de versions SOAP d\u00E9tect\u00E9e lors de la tentative d'ajout de SOAPFault \u00E0 SOAPBody
-SAAJ0159.impl.version.mismatch.detail=SAAJ0158 : non-concordance de versions SOAP d\u00E9tect\u00E9e lors de la tentative d'ajout de Detail \u00E0 SOAPFault
-
-# Info messages
-SAAJ0190.impl.set.xml.declaration=SAAJ0190 : omettre la d\u00E9claration XML d\u00E9finie sur {0}
-SAAJ0191.impl.set.encoding=SAAJ0191 : l''encodage est d\u00E9fini sur {0}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_it.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for impl
-# Error messages
-SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: L'elemento padre di un SOAPBodyElement deve essere un SOAPBody
-SAAJ0102.impl.cannot.locate.ns=SAAJ0102: Impossibile trovare lo spazio di nomi per il prefisso {0}
-SAAJ0103.impl.cannot.add.fragements=SAAJ0103: Impossibile aggiungere frammenti che contengono elementi presenti nello spazio di nomi SOAP
-SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: Lo stile di codifica {0} deve essere un URI valido
-SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: Impossibile passare NULL a setParentElement
-SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: Impossibile usare setValue su un elemento che non ha solo un elemento figlio di tipo Text
-
-SAAJ0110.impl.fault.already.exists=SAAJ0110: Errore: Fault esiste gi\u00E0
-SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: L'elemento padre di SOAPBody deve essere un SOAPEnvelope
-
-SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: Impossibile passare NULL a setParentElement
-SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: Impossibile dividere il testo di un Comment Node
-SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: Impossibile sostituire tutto il testo di un Comment Node
-
-SAAJ0120.impl.header.already.exists=SAAJ0120: Impossibile aggiungere un'intestazione quando ne \u00E8 gi\u00E0 presente una
-SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: Il primo elemento figlio di Envelope deve essere Header o Body
-SAAJ0122.impl.body.already.exists=SAAJ0122: Impossibile aggiungere un corpo quando ne \u00E8 gi\u00E0 presente uno
-SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: Impossibile dichiarare riservato il prefisso xmlns
-SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: Il nome qualificato non pu\u00F2 essere xmlns
-#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null
-SAAJ0126.impl.cannot.locate.ns=SAAJ0126: Impossibile trovare lo spazio di nomi per il prefisso {0}
-SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: Impossibile passare NULL a setParentElement
-
-SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: L'elemento padre di un SOAPHeaderElement deve essere un SSOAPHeader
-SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements deve essere qualificato per lo spazio di nomi
-SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: Valore non valido per l'attore o il ruolo
-SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: L'elemento padre di SOAPHeader deve essere un SOAPEnvelope
-SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements deve essere qualificato per lo spazio di nomi
-
-SAAJ0140.impl.no.ns.URI=SAAJ0140: URI dello spazio di nomi vuoto/nullo specificato per faultCode {0}
-SAAJ0141.impl.detail.exists=SAAJ0141: Detail esiste gi\u00E0
-SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: Fault/Reason/Text non supportato da questa versione SOAP. Tentare la versione SOAP 1.2 o successiva
-SAAJ0143.impl.node.not.supported=SAAJ0143: Fault/Node non supportato da questa versione SOAP. Tentare la versione SOAP 1.2 o successiva
-SAAJ0144.impl.role.not.supported=SAAJ0144: Fault/Role non supportato da questa versione SOAP. Tentare la versione SOAP 1.2 o successiva
-SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: Impossibile passare NULL a setParentElement
-SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: Impossibile modificare il nome dell''elemento {0} in {1}
-SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: Impossibile modificare l''URI per il prefisso {0} da {1} a {2} in setElementQName
-SAAJ0148.impl.invalid.prefix.for.uri=URI dello spazio di nomi non vuoto: {0} per un prefisso vuoto in SetElementQName
-SAAJ0149.impl.null.prefix=SAAJ0149: Il prefisso non pu\u00F2 essere "null" durante la creazione di un QName
-
-SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: Impossibile estrarre Document dal corpo
-SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: Impossibile estrarre Document dal corpo
-
-# Debug messages
-SAAJ0150.impl.added.attr=SAAJ0150: Attributo {0} aggiunto
-SAAJ0151.impl.no.children=SAAJ0151: Impossibile trovare il nodo contenente il valore: non sono presenti elementi figlio
-SAAJ0152.impl.first.child.not.text.node=SAAJ0152: Impossibile trovare il nodo contenente il valore: il primo elemento figlio non \u00E8 un nodo testo
-SAAJ0153.impl.multiple.children.same.value=SAAJ0153: Impossibile trovare il nodo contenente il valore: sono presenti pi\u00F9 nodi figlio
-SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: Un elemento SOAPFault pu\u00F2 essere aggiunto solo come elemento figlio di SOAPBody
-SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: Un elemento Detail pu\u00F2 essere aggiunto solo come elemento figlio di un SOAPFault
-SAAJ0156.impl.adding.fault.error=SAAJ0156: Impossibile aggiungere SOAPFault. SOAPFault deve essere l'unico elemento figlio di SOAPBody
-SAAJ0157.impl.detail.exists.error=SAAJ0157: Impossibile aggiungere Detail. Detail esiste gi\u00E0.
-SAAJ0158.impl.version.mismatch.fault=SAAJ0158: Mancata corrispondenza della versione SOAP rilevata durante il tentativo di aggiungere SOAPFault a SOAPBody
-SAAJ0159.impl.version.mismatch.detail=SAAJ0159: Mancata corrispondenza della versione SOAP rilevata durante il tentativo di aggiungere il dettaglio a SOAPFault
-
-# Info messages
-SAAJ0190.impl.set.xml.declaration=SAAJ0190: Omettere la dichiarazione XML impostata su {0}
-SAAJ0191.impl.set.encoding=SAAJ0191: La codifica \u00E8 impostata su {0}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_ja.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for impl
-# Error messages
-SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: SOAPBodyElement\u306E\u89AA\u306FSOAPBody\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
-SAAJ0102.impl.cannot.locate.ns=SAAJ0102: \u63A5\u982D\u8F9E{0}\u306E\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
-SAAJ0103.impl.cannot.add.fragements=SAAJ0103: SOAP\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u306B\u5B58\u5728\u3059\u308B\u8981\u7D20\u3092\u542B\u3080\u30D5\u30E9\u30B0\u30E1\u30F3\u30C8\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093
-SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: \u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u30FB\u30B9\u30BF\u30A4\u30EB{0}\u306F\u6709\u52B9\u306AURI\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
-SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: NULL\u3092setParentElement\u306B\u6E21\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: \u30BF\u30A4\u30D7\u304C\u30C6\u30AD\u30B9\u30C8\u306E\u552F\u4E00\u306E\u5B50\u304C\u306A\u3044\u8981\u7D20\u306B\u5024\u3092\u8A2D\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-
-SAAJ0110.impl.fault.already.exists=SAAJ0110: \u30A8\u30E9\u30FC: \u30D5\u30A9\u30EB\u30C8\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059
-SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: SOAPBody\u306E\u89AA\u306FSOAPEnvelope\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
-
-SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: NULL\u3092setParentElement\u306B\u6E21\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: \u30B3\u30E1\u30F3\u30C8\u30FB\u30CE\u30FC\u30C9\u304B\u3089\u30C6\u30AD\u30B9\u30C8\u3092\u5206\u5272\u3067\u304D\u307E\u305B\u3093
-SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: \u30B3\u30E1\u30F3\u30C8\u30FB\u30CE\u30FC\u30C9\u304B\u3089\u30C6\u30AD\u30B9\u30C8\u5168\u4F53\u3092\u7F6E\u63DB\u3067\u304D\u307E\u305B\u3093
-
-SAAJ0120.impl.header.already.exists=SAAJ0120: \u30D8\u30C3\u30C0\u30FC\u304C\u3059\u3067\u306B\u5B58\u5728\u3059\u308B\u5834\u5408\u306F\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093
-SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: Envelope\u306E\u6700\u521D\u306E\u5B50\u306FHeader\u307E\u305F\u306FBody\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
-SAAJ0122.impl.body.already.exists=SAAJ0122: \u672C\u6587\u304C\u3059\u3067\u306B\u5B58\u5728\u3059\u308B\u5834\u5408\u306F\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093
-SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: \u4E88\u7D04\u6E08\u306Exmlns\u63A5\u982D\u8F9E\u3092\u5BA3\u8A00\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: \u4FEE\u98FE\u540D\u3092xmlns\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null
-SAAJ0126.impl.cannot.locate.ns=SAAJ0126: \u63A5\u982D\u8F9E{0}\u306E\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
-SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: NULL\u3092setParentElement\u306B\u6E21\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-
-SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: SOAPHeaderElement\u306E\u89AA\u306FSOAPHeader\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
-SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements\u306F\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u3067\u4FEE\u98FE\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
-SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: \u30A2\u30AF\u30BF\u30FC\u307E\u305F\u306F\u30ED\u30FC\u30EB\u306E\u5024\u304C\u7121\u52B9\u3067\u3059
-SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: SOAPHeader\u306E\u89AA\u306FSOAPEnvelope\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
-SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements\u306F\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u3067\u4FEE\u98FE\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
-
-SAAJ0140.impl.no.ns.URI=SAAJ0140: faultCode {0}\u306B\u6307\u5B9A\u3055\u308C\u305FNamespaceURI\u304C\u7A7A/Null\u3067\u3059
-SAAJ0141.impl.detail.exists=SAAJ0141: Detail\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059
-SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: \u3053\u306ESOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u306F\u30D5\u30A9\u30EB\u30C8/\u7406\u7531/\u30C6\u30AD\u30B9\u30C8\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002SOAP 1.2\u4EE5\u4E0A\u3092\u8A66\u3057\u3066\u304F\u3060\u3055\u3044
-SAAJ0143.impl.node.not.supported=SAAJ0143: \u3053\u306ESOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u306F\u30D5\u30A9\u30EB\u30C8/\u30CE\u30FC\u30C9\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002SOAP 1.2\u4EE5\u4E0A\u3092\u8A66\u3057\u3066\u304F\u3060\u3055\u3044
-SAAJ0144.impl.role.not.supported=SAAJ0144: \u3053\u306ESOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u306F\u30D5\u30A9\u30EB\u30C8/\u30ED\u30FC\u30EB\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002SOAP 1.2\u4EE5\u4E0A\u3092\u8A66\u3057\u3066\u304F\u3060\u3055\u3044
-SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: NULL\u3092setParentElement\u306B\u6E21\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: \u8981\u7D20{0}\u306E\u540D\u524D\u3092{1}\u306B\u5909\u66F4\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: setElementQName\u306E\u63A5\u982D\u8F9E{0}\u306EURI\u3092{1}\u304B\u3089{2}\u306B\u5909\u66F4\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-SAAJ0148.impl.invalid.prefix.for.uri=SetElementQName\u306E\u7A7A\u306E\u63A5\u982D\u8F9E\u306B\u7A7A\u767D\u4EE5\u5916\u306E\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9URI: {0}\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
-SAAJ0149.impl.null.prefix=SAAJ0149: QName\u3092\u4F5C\u6210\u3059\u308B\u5834\u5408\u3001\u63A5\u982D\u8F9E\u3092\u300Cnull\u300D\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-
-SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: \u672C\u6587\u304B\u3089\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u62BD\u51FA\u3067\u304D\u307E\u305B\u3093
-SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: \u672C\u6587\u304B\u3089\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u62BD\u51FA\u3067\u304D\u307E\u305B\u3093
-
-# Debug messages
-SAAJ0150.impl.added.attr=SAAJ0150: \u5C5E\u6027{0}\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3057\u305F
-SAAJ0151.impl.no.children=SAAJ0151: \u5024\u3092\u542B\u3080\u30CE\u30FC\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: \u5B50\u304C\u3042\u308A\u307E\u305B\u3093
-SAAJ0152.impl.first.child.not.text.node=SAAJ0152: \u5024\u3092\u542B\u3080\u30CE\u30FC\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: \u6700\u521D\u306E\u5B50\u304C\u30C6\u30AD\u30B9\u30C8\u30FB\u30CE\u30FC\u30C9\u3067\u306F\u3042\u308A\u307E\u305B\u3093
-SAAJ0153.impl.multiple.children.same.value=SAAJ0153: \u5024\u3092\u542B\u3080\u30CE\u30FC\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: \u8907\u6570\u306E\u5B50\u30CE\u30FC\u30C9\u304C\u3042\u308A\u307E\u3059
-SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: SOAPFault\u8981\u7D20\u306FSOAPBody\u306E\u5B50\u3068\u3057\u3066\u306E\u307F\u8FFD\u52A0\u3067\u304D\u307E\u3059
-SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: Detail\u8981\u7D20\u306FSOAPFault\u306E\u5B50\u3068\u3057\u3066\u306E\u307F\u8FFD\u52A0\u3067\u304D\u307E\u3059
-SAAJ0156.impl.adding.fault.error=SAAJ0156: SOAPFault\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002SOAPFault\u306FSOAPBody\u306E\u552F\u4E00\u306E\u5B50\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
-SAAJ0157.impl.detail.exists.error=SAAJ0157: Detail\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002Detail\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059
-SAAJ0158.impl.version.mismatch.fault=SAAJ0158: SOAPFault\u3092SOAPBody\u306B\u8FFD\u52A0\u3057\u3088\u3046\u3068\u3057\u305F\u3068\u304D\u306BSOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u4E0D\u4E00\u81F4\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F
-SAAJ0159.impl.version.mismatch.detail=SAAJ0159: Detail\u3092SOAPFault\u306B\u8FFD\u52A0\u3057\u3088\u3046\u3068\u3057\u305F\u3068\u304D\u306BSOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u4E0D\u4E00\u81F4\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F
-
-# Info messages
-SAAJ0190.impl.set.xml.declaration=SAAJ0190: Omit XML\u5BA3\u8A00\u304C{0}\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
-SAAJ0191.impl.set.encoding=SAAJ0191: \u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u304C{0}\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_ko.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for impl
-# Error messages
-SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: SOAPBodyElement\uC758 \uC0C1\uC704\uB294 SOAPBody\uC5EC\uC57C \uD569\uB2C8\uB2E4.
-SAAJ0102.impl.cannot.locate.ns=SAAJ0102: {0} \uC811\uB450\uC5B4\uC5D0 \uB300\uD55C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0103.impl.cannot.add.fragements=SAAJ0103: SOAP \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5D0 \uC788\uB294 \uC694\uC18C\uAC00 \uD3EC\uD568\uB41C \uB2E8\uD3B8\uC744 \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: \uC778\uCF54\uB529 \uC2A4\uD0C0\uC77C {0}\uC740(\uB294) \uC801\uD569\uD55C URI\uC5EC\uC57C \uD569\uB2C8\uB2E4.
-SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: setParentElement\uC5D0 NULL\uC744 \uC804\uB2EC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: Text \uC720\uD615\uC758 \uC720\uC77C\uD55C \uD558\uC704\uAC00 \uD3EC\uD568\uB418\uC9C0 \uC54A\uC740 \uC694\uC18C\uC5D0 \uB300\uD574 \uAC12\uC744 \uC124\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-
-SAAJ0110.impl.fault.already.exists=SAAJ0110: \uC624\uB958: Fault\uAC00 \uC874\uC7AC\uD569\uB2C8\uB2E4.
-SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: SOAPBody\uC758 \uC0C1\uC704\uB294 SOAPEnvelope\uC5EC\uC57C \uD569\uB2C8\uB2E4.
-
-SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: setParentElement\uC5D0 NULL\uC744 \uC804\uB2EC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: \uC8FC\uC11D \uB178\uB4DC\uC5D0\uC11C \uD14D\uC2A4\uD2B8\uB97C \uBD84\uD560\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: \uC8FC\uC11D \uB178\uB4DC\uC758 \uC804\uCCB4 \uD14D\uC2A4\uD2B8\uB97C \uBC14\uAFC0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-
-SAAJ0120.impl.header.already.exists=SAAJ0120: Header\uAC00 \uC874\uC7AC\uD558\uB294 \uACBD\uC6B0 Header\uB97C \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: Envelope\uC758 \uCCAB\uBC88\uC9F8 \uD558\uC704\uB294 Header \uB610\uB294 Body\uC5EC\uC57C \uD569\uB2C8\uB2E4.
-SAAJ0122.impl.body.already.exists=SAAJ0122: Body\uAC00 \uC874\uC7AC\uD558\uB294 \uACBD\uC6B0 Body\uB97C \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: \uC608\uC57D\uB41C xmlns \uC811\uB450\uC5B4\uB97C \uC120\uC5B8\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: \uC815\uADDC\uD654\uB41C \uC774\uB984\uC740 xmlns\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null
-SAAJ0126.impl.cannot.locate.ns=SAAJ0126: {0} \uC811\uB450\uC5B4\uC5D0 \uB300\uD55C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: setParentElement\uC5D0 NULL\uC744 \uC804\uB2EC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-
-SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: SOAPHeaderElement\uC758 \uC0C1\uC704\uB294 SOAPHeader\uC5EC\uC57C \uD569\uB2C8\uB2E4.
-SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements\uB294 \uC815\uADDC\uD654\uB41C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5EC\uC57C \uD569\uB2C8\uB2E4.
-SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: \uC791\uC5C5\uC790 \uB610\uB294 \uB864\uC5D0 \uB300\uD55C \uAC12\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
-SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: SOAPHeader\uC758 \uC0C1\uC704\uB294 SOAPEnvelope\uC5EC\uC57C \uD569\uB2C8\uB2E4.
-SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements\uB294 \uC815\uADDC\uD654\uB41C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5EC\uC57C \uD569\uB2C8\uB2E4.
-
-SAAJ0140.impl.no.ns.URI=SAAJ0140: faultCode {0}\uC5D0 \uB300\uD574 \uBE48/\uB110 NamespaceURI\uAC00 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
-SAAJ0141.impl.detail.exists=SAAJ0141: Detail\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4.
-SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: \uC774 SOAP \uBC84\uC804\uC5D0\uC11C\uB294 Fault/Reason/Text\uAC00 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. SOAP 1.2 \uB610\uB294 \uC774\uD6C4 \uBC84\uC804\uC744 \uC0AC\uC6A9\uD574 \uBCF4\uC2ED\uC2DC\uC624.
-SAAJ0143.impl.node.not.supported=SAAJ0143: \uC774 SOAP \uBC84\uC804\uC5D0\uC11C\uB294 Fault/Node\uAC00 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. SOAP 1.2 \uB610\uB294 \uC774\uD6C4 \uBC84\uC804\uC744 \uC0AC\uC6A9\uD574 \uBCF4\uC2ED\uC2DC\uC624.
-SAAJ0144.impl.role.not.supported=SAAJ0144: \uC774 SOAP \uBC84\uC804\uC5D0\uC11C\uB294 Fault/Role\uC774 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. SOAP 1.2 \uB610\uB294 \uC774\uD6C4 \uBC84\uC804\uC744 \uC0AC\uC6A9\uD574 \uBCF4\uC2ED\uC2DC\uC624.
-SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: setParentElement\uC5D0 NULL\uC744 \uC804\uB2EC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: {0} \uC694\uC18C\uC758 \uC774\uB984\uC744 {1}(\uC73C)\uB85C \uBCC0\uACBD\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: setElementQName\uC5D0\uC11C {0} \uC811\uB450\uC5B4\uC5D0 \uB300\uD55C URI\uB97C {1}\uC5D0\uC11C {2}(\uC73C)\uB85C \uBCC0\uACBD\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0148.impl.invalid.prefix.for.uri=SetElementQName\uC5D0 \uBE48 \uC811\uB450\uC5B4\uC5D0 \uB300\uD574 \uBE44\uC5B4 \uC788\uC9C0 \uC54A\uC740 \uB124\uC784\uC2A4\uD398\uC774\uC2A4 URI {0}\uC774(\uAC00) \uC788\uC2B5\uB2C8\uB2E4.
-SAAJ0149.impl.null.prefix=SAAJ0149: QName\uC744 \uC0DD\uC131\uD558\uB294 \uACBD\uC6B0 \uC811\uB450\uC5B4\uB294 "null"\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-
-SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: \uBCF8\uBB38\uC5D0\uC11C \uBB38\uC11C\uB97C \uCD94\uCD9C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: \uBCF8\uBB38\uC5D0\uC11C \uBB38\uC11C\uB97C \uCD94\uCD9C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-
-# Debug messages
-SAAJ0150.impl.added.attr=SAAJ0150: {0} \uC18D\uC131\uC744 \uCD94\uAC00\uD588\uC2B5\uB2C8\uB2E4.
-SAAJ0151.impl.no.children=SAAJ0151: \uAC12\uC774 \uD3EC\uD568\uB41C \uB178\uB4DC\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C: \uD558\uC704 \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0152.impl.first.child.not.text.node=SAAJ0152: \uAC12\uC774 \uD3EC\uD568\uB41C \uB178\uB4DC\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C: \uCCAB\uBC88\uC9F8 \uD558\uC704\uAC00 \uD14D\uC2A4\uD2B8 \uB178\uB4DC\uAC00 \uC544\uB2D9\uB2C8\uB2E4.
-SAAJ0153.impl.multiple.children.same.value=SAAJ0153: \uAC12\uC774 \uD3EC\uD568\uB41C \uB178\uB4DC\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C: \uD558\uC704 \uB178\uB4DC\uAC00 \uB450 \uAC1C \uC774\uC0C1 \uC788\uC2B5\uB2C8\uB2E4.
-SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: SOAPFault \uC694\uC18C\uB294 SOAPBody\uC758 \uD558\uC704\uB85C\uB9CC \uCD94\uAC00\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
-SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: Detail \uC694\uC18C\uB294 SOAPFault\uC758 \uD558\uC704\uB85C\uB9CC \uCD94\uAC00\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
-SAAJ0156.impl.adding.fault.error=SAAJ0156: SOAPFault\uB97C \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. SOAPFault\uB294 SOAPBody\uC758 \uC720\uC77C\uD55C \uD558\uC704\uC5EC\uC57C \uD569\uB2C8\uB2E4.
-SAAJ0157.impl.detail.exists.error=SAAJ0157: Detail\uC744 \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. Detail\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4.
-SAAJ0158.impl.version.mismatch.fault=SAAJ0158: SOAPBody\uC5D0 SOAPFault\uB97C \uCD94\uAC00\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 SOAP \uBC84\uC804 \uBD88\uC77C\uCE58\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
-SAAJ0159.impl.version.mismatch.detail=SAAJ0159: SOAPFault\uC5D0 Detail\uC744 \uCD94\uAC00\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 SOAP \uBC84\uC804 \uBD88\uC77C\uCE58\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
-
-# Info messages
-SAAJ0190.impl.set.xml.declaration=SAAJ0190: XML \uC120\uC5B8 \uC0DD\uB7B5\uC774 {0}(\uC73C)\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
-SAAJ0191.impl.set.encoding=SAAJ0191: \uC778\uCF54\uB529\uC774 {0}(\uC73C)\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_pt_BR.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for impl
-# Error messages
-SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: o pai de um SOAPBodyElement deve ser um SOAPBody
-SAAJ0102.impl.cannot.locate.ns=SAAJ0102: n\u00E3o \u00E9 poss\u00EDvel localizar o namespace do prefixo {0}
-SAAJ0103.impl.cannot.add.fragements=SAAJ0103: n\u00E3o \u00E9 poss\u00EDvel adicionar fragmentos que cont\u00EAm elementos que est\u00E3o no namespace de SOAP
-SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: estilo {0} de codifica\u00E7\u00E3o deve ser um URI v\u00E1lido
-SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: n\u00E3o \u00E9 poss\u00EDvel informar NULL como setParentElement
-SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: n\u00E3o \u00E9 poss\u00EDvel setValue em um Elemento que n\u00E3o tem um s\u00F3 filho do tipo Texto
-
-SAAJ0110.impl.fault.already.exists=SAAJ0110: erro: j\u00E1 existe falha
-SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: o pai de SOAPBody deve ser um SOAPEnvelope
-
-SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: n\u00E3o \u00E9 poss\u00EDvel informar NULL como setParentElement
-SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: n\u00E3o \u00E9 poss\u00EDvel dividir o texto de um N\u00F3 do Coment\u00E1rio
-SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: n\u00E3o \u00E9 poss\u00EDvel substituir todo o texto de um N\u00F3 de Coment\u00E1rio
-
-SAAJ0120.impl.header.already.exists=SAAJ0120: n\u00E3o \u00E9 poss\u00EDvel adicionar um cabe\u00E7alho quando h\u00E1 houver um
-SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: o primeiro filho do Envelope deve ser um Cabe\u00E7alho ou um Corpo
-SAAJ0122.impl.body.already.exists=SAAJ0122: n\u00E3o \u00E9 poss\u00EDvel adicionar um corpo quando j\u00E1 houver um
-SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: n\u00E3o \u00E9 poss\u00EDvel declarar o prefixo xmlns reservado
-SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: o nome qualificado n\u00E3o pode ser xmlns
-#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null
-SAAJ0126.impl.cannot.locate.ns=SAAJ0126: n\u00E3o \u00E9 poss\u00EDvel localizar namespace para o prefixo {0}
-SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: n\u00E3o \u00E9 poss\u00EDvel informar NULL como setParentElement
-
-SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: o pai de um SOAPHeaderElement deve ser um SOAPHeader
-SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements deve ser um namespace qualificado
-SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: valor inv\u00E1lido para ator ou atribui\u00E7\u00E3o
-SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: o pai de um SOAPHeader deve ser um SOAPEnvelope
-SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements deve ser um namespace qualificado
-
-SAAJ0140.impl.no.ns.URI=SAAJ0140: NamespaceURI Vazio/Nulo especificado para faultCode {0}
-SAAJ0141.impl.detail.exists=SAAJ0141: o detalhe j\u00E1 existe
-SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: falha/motivo/texto n\u00E3o suportado por esta vers\u00E3o de SOAP, tente SOAP 1.2 ou posterior
-SAAJ0143.impl.node.not.supported=SAAJ0143: falha/n\u00F3 n\u00E3o suportados por esta vers\u00E3o de SOAP, tente SOAP 1.2 ou posterior
-SAAJ0144.impl.role.not.supported=SAAJ0144: falha/atribui\u00E7\u00E3o n\u00E3o suportada por esta vers\u00E3o de SOAP, tente SOAP 1.2 ou posterior
-SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: n\u00E3o \u00E9 poss\u00EDvel informar NULL como setParentElement
-SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: n\u00E3o \u00E9 poss\u00EDvel alterar o nome do elemento {0} para {1}
-SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: n\u00E3o \u00E9 poss\u00EDvel alterar o URI do prefixo {0} de {1} para {2} no setElementQName
-SAAJ0148.impl.invalid.prefix.for.uri=URI de namespace n\u00E3o vazio: {0} para um prefixo vazio no SetElementQName
-SAAJ0149.impl.null.prefix=SAAJ0149: o prefixo n\u00E3o pode ser "nulo" ao criar um QName
-
-SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: n\u00E3o \u00E9 poss\u00EDvel extrair o Documento do corpo
-SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: n\u00E3o \u00E9 poss\u00EDvel extrair o documento do corpo
-
-# Debug messages
-SAAJ0150.impl.added.attr=SAAJ0150: atributo {0} adicionado
-SAAJ0151.impl.no.children=SAAJ0151: n\u00E3o \u00E9 poss\u00EDvel localizar o n\u00F3 que cont\u00E9m o valor: n\u00E3o h\u00E1 filhos
-SAAJ0152.impl.first.child.not.text.node=SAAJ0152: n\u00E3o \u00E9 poss\u00EDvel localizar o n\u00F3 que cont\u00E9m o valor: o primeiro filho n\u00E3o \u00E9 um n\u00F3 de Texto
-SAAJ0153.impl.multiple.children.same.value=SAAJ0153: n\u00E3o \u00E9 poss\u00EDvel localizar o n\u00F3 que cont\u00E9m o valor: h\u00E1 mais de um n\u00F3 filho
-SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: um elemento de SOAPFault s\u00F3 pode ser adicionado como filho de SOAPBody
-SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: um elemento de Detalhe s\u00F3 pode ser adicionado como um filho de um SOAPFault
-SAAJ0156.impl.adding.fault.error=SAAJ0156: n\u00E3o \u00E9 poss\u00EDvel adicionar SOAPFault, um SOAPFault deve ser filho s\u00F3 de um SOAPBody
-SAAJ0157.impl.detail.exists.error=SAAJ0157: n\u00E3o \u00E9 poss\u00EDvel adicionar Detalhe, o Detalhe j\u00E1 existe
-SAAJ0158.impl.version.mismatch.fault=SAAJ0158: incompatibilidade da vers\u00E3o SOAP encontrada ao tentar adicionar SOAPFault ao SOAPBody
-SAAJ0159.impl.version.mismatch.detail=SAAJ0159: incompatibilidade da vers\u00E3o SOAP encontrada ao tentar adicionar Detalhes \u00E0 SOAPFault
-
-# Info messages
-SAAJ0190.impl.set.xml.declaration=SAAJ0190: omitir conjunto de declara\u00E7\u00F5es de XML para {0}
-SAAJ0191.impl.set.encoding=SAAJ0191: codifica\u00E7\u00E3o definida como {0}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_zh_CN.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for impl
-# Error messages
-SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: SOAPBodyElement \u7684\u7236\u7EA7\u5FC5\u987B\u662F SOAPBody
-SAAJ0102.impl.cannot.locate.ns=SAAJ0102: \u627E\u4E0D\u5230\u524D\u7F00{0}\u7684\u540D\u79F0\u7A7A\u95F4
-SAAJ0103.impl.cannot.add.fragements=SAAJ0103: \u65E0\u6CD5\u6DFB\u52A0\u5305\u542B\u4F4D\u4E8E SOAP \u540D\u79F0\u7A7A\u95F4\u4E2D\u7684\u5143\u7D20\u7684\u7247\u6BB5
-SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: \u7F16\u7801\u6837\u5F0F{0}\u5E94\u8BE5\u662F\u6709\u6548\u7684 URI
-SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: \u4E0D\u80FD\u5C06\u7A7A\u503C\u4F20\u9012\u7ED9 setParentElement
-SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: \u5BF9\u4E8E\u5E76\u975E\u53EA\u5177\u6709\u6587\u672C\u7C7B\u578B\u5B50\u7EA7\u7684\u5143\u7D20, \u4E0D\u80FD\u6267\u884C setValue
-
-SAAJ0110.impl.fault.already.exists=SAAJ0110: \u9519\u8BEF: \u6545\u969C\u5DF2\u5B58\u5728
-SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: SOAPBody \u7684\u7236\u7EA7\u5FC5\u987B\u662F SOAPEnvelope
-
-SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: \u4E0D\u80FD\u5C06\u7A7A\u503C\u4F20\u9012\u7ED9 setParentElement
-SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: \u65E0\u6CD5\u62C6\u5206\u6765\u81EA\u6CE8\u91CA\u8282\u70B9\u7684\u6587\u672C
-SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: \u65E0\u6CD5\u66FF\u6362\u6765\u81EA\u6CE8\u91CA\u8282\u70B9\u7684\u5168\u90E8\u6587\u672C
-
-SAAJ0120.impl.header.already.exists=SAAJ0120: \u5F53\u6807\u5934\u5DF2\u5B58\u5728\u65F6, \u65E0\u6CD5\u6DFB\u52A0\u6807\u5934
-SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: \u4FE1\u5C01\u7684\u7B2C\u4E00\u4E2A\u5B50\u7EA7\u5FC5\u987B\u662F\u6807\u5934\u6216\u6B63\u6587
-SAAJ0122.impl.body.already.exists=SAAJ0122: \u5F53\u6B63\u6587\u5DF2\u5B58\u5728\u65F6, \u65E0\u6CD5\u6DFB\u52A0\u6B63\u6587
-SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: \u65E0\u6CD5\u58F0\u660E\u4FDD\u7559\u7684 xmlns \u524D\u7F00
-SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: \u9650\u5B9A\u540D\u4E0D\u80FD\u662F xmlns
-#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null
-SAAJ0126.impl.cannot.locate.ns=SAAJ0126: \u627E\u4E0D\u5230\u524D\u7F00{0}\u7684\u540D\u79F0\u7A7A\u95F4
-SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: \u4E0D\u80FD\u5C06\u7A7A\u503C\u4F20\u9012\u7ED9 setParentElement
-
-SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: SOAPHeaderElement \u7684\u7236\u7EA7\u5FC5\u987B\u662F SOAPHeader
-SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements \u5FC5\u987B\u9650\u5B9A\u540D\u79F0\u7A7A\u95F4
-SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: \u64CD\u4F5C\u8005\u6216\u89D2\u8272\u7684\u503C\u65E0\u6548
-SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: SOAPHeader \u7684\u7236\u7EA7\u5FC5\u987B\u662F SOAPEnvelope
-SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements \u5FC5\u987B\u9650\u5B9A\u540D\u79F0\u7A7A\u95F4
-
-SAAJ0140.impl.no.ns.URI=SAAJ0140: \u4E3A faultCode {0} \u6307\u5B9A\u7684 NamespaceURI \u5FC5\u987B\u4E3A\u7A7A/\u7A7A\u503C
-SAAJ0141.impl.detail.exists=SAAJ0141: \u8BE6\u7EC6\u4FE1\u606F\u5DF2\u5B58\u5728
-SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u6301\u6545\u969C/\u539F\u56E0/\u6587\u672C, \u8BF7\u5C1D\u8BD5 SOAP 1.2 \u6216\u66F4\u9AD8\u7248\u672C
-SAAJ0143.impl.node.not.supported=SAAJ0143: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u6301\u6545\u969C/\u8282\u70B9, \u8BF7\u5C1D\u8BD5 SOAP 1.2 \u6216\u66F4\u9AD8\u7248\u672C
-SAAJ0144.impl.role.not.supported=SAAJ0144: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u6301\u6545\u969C/\u89D2\u8272, \u8BF7\u5C1D\u8BD5 SOAP 1.2 \u6216\u66F4\u9AD8\u7248\u672C
-SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: \u4E0D\u80FD\u5C06\u7A7A\u503C\u4F20\u9012\u7ED9 setParentElement
-SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: \u65E0\u6CD5\u5C06\u5143\u7D20{0}\u7684\u540D\u79F0\u66F4\u6539\u4E3A{1}
-SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: \u65E0\u6CD5\u5C06 setElementQName \u4E2D\u524D\u7F00{0}\u7684 URI \u4ECE {1} \u66F4\u6539\u4E3A {2}
-SAAJ0148.impl.invalid.prefix.for.uri=\u975E\u7A7A\u540D\u79F0\u7A7A\u95F4 URI: {0} \u7528\u4E8E SetElementQName \u4E2D\u7684\u7A7A\u524D\u7F00
-SAAJ0149.impl.null.prefix=SAAJ0149: \u521B\u5EFA QName \u65F6, \u524D\u7F00\u4E0D\u80FD\u4E3A "\u7A7A\u503C"
-
-SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: \u65E0\u6CD5\u4ECE\u6B63\u6587\u4E2D\u63D0\u53D6\u6587\u6863
-SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: \u65E0\u6CD5\u4ECE\u6B63\u6587\u4E2D\u63D0\u53D6\u6587\u6863
-
-# Debug messages
-SAAJ0150.impl.added.attr=SAAJ0150: \u5DF2\u6DFB\u52A0\u5C5E\u6027{0}
-SAAJ0151.impl.no.children=SAAJ0151: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u8282\u70B9: \u6CA1\u6709\u4EFB\u4F55\u5B50\u7EA7
-SAAJ0152.impl.first.child.not.text.node=SAAJ0152: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u8282\u70B9: \u7B2C\u4E00\u4E2A\u5B50\u7EA7\u4E0D\u662F\u6587\u672C\u8282\u70B9
-SAAJ0153.impl.multiple.children.same.value=SAAJ0153: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u8282\u70B9: \u5B58\u5728\u591A\u4E2A\u5B50\u8282\u70B9
-SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: SOAPFault \u5143\u7D20\u53EA\u80FD\u4F5C\u4E3A SOAPBody \u7684\u5B50\u7EA7\u6DFB\u52A0
-SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: \u8BE6\u7EC6\u4FE1\u606F\u5143\u7D20\u53EA\u80FD\u4F5C\u4E3A SOAPFault \u7684\u5B50\u7EA7\u6DFB\u52A0
-SAAJ0156.impl.adding.fault.error=SAAJ0156: \u65E0\u6CD5\u6DFB\u52A0 SOAPFault, SOAPFault \u53EA\u5E94\u8BE5\u662F SOAPBody \u7684\u5B50\u7EA7
-SAAJ0157.impl.detail.exists.error=SAAJ0157: \u65E0\u6CD5\u6DFB\u52A0\u8BE6\u7EC6\u4FE1\u606F, \u8BE6\u7EC6\u4FE1\u606F\u5DF2\u5B58\u5728
-SAAJ0158.impl.version.mismatch.fault=SAAJ0158: \u5C1D\u8BD5\u5C06 SOAPFault \u6DFB\u52A0\u5230 SOAPBody \u65F6\u9047\u5230 SOAP \u7248\u672C\u4E0D\u5339\u914D\u60C5\u51B5
-SAAJ0159.impl.version.mismatch.detail=SAAJ0159: \u5C1D\u8BD5\u5C06\u8BE6\u7EC6\u4FE1\u606F\u6DFB\u52A0\u5230 SOAPFault \u65F6\u9047\u5230 SOAP \u7248\u672C\u4E0D\u5339\u914D\u60C5\u51B5
-
-# Info messages
-SAAJ0190.impl.set.xml.declaration=SAAJ0190: \u9057\u6F0F XML \u58F0\u660E\u8BBE\u7F6E\u4E3A{0}
-SAAJ0191.impl.set.encoding=SAAJ0191: \u7F16\u7801\u8BBE\u7F6E\u4E3A{0}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_zh_TW.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for impl
-# Error messages
-SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: SOAPBodyElement \u7684\u7236\u9805\u5FC5\u9808\u662F SOAPBody
-SAAJ0102.impl.cannot.locate.ns=SAAJ0102: \u627E\u4E0D\u5230\u524D\u7F6E\u78BC {0} \u7684\u547D\u540D\u7A7A\u9593
-SAAJ0103.impl.cannot.add.fragements=SAAJ0103: \u7121\u6CD5\u65B0\u589E\u5305\u542B SOAP \u547D\u540D\u7A7A\u9593\u4E2D\u4E4B\u5143\u7D20\u7684\u7247\u6BB5
-SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: \u7DE8\u78BC\u6A23\u5F0F {0} \u61C9\u662F\u6709\u6548\u7684 URI
-SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: \u4E0D\u80FD\u50B3\u9001 NULL \u81F3 setParentElement
-SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: \u7121\u6CD5\u5728\u4E0D\u542B\u552F\u4E00 Text \u985E\u578B\u5B50\u9805\u7684\u300C\u5143\u7D20\u300D\u4E0A\u4F7F\u7528 setValue
-
-SAAJ0110.impl.fault.already.exists=SAAJ0110: \u932F\u8AA4: Fault \u5DF2\u7D93\u5B58\u5728
-SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: SOAPBody \u7684\u7236\u9805\u5FC5\u9808\u662F SOAPEnvelope
-
-SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: \u4E0D\u80FD\u50B3\u9001 NULL \u81F3 setParentElement
-SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: \u4E0D\u80FD\u5F9E\u300CComment \u7BC0\u9EDE\u300D\u5206\u5272\u6587\u5B57
-SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: \u4E0D\u80FD\u5F9E\u300CComment \u7BC0\u9EDE\u300D\u53D6\u4EE3\u6574\u500B\u6587\u5B57
-
-SAAJ0120.impl.header.already.exists=SAAJ0120: \u6A19\u982D\u5DF2\u7D93\u5B58\u5728\u6642\u4E0D\u80FD\u65B0\u589E\u6A19\u982D
-SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: Envelope\u7684\u7B2C\u4E00\u500B\u5B50\u9805\u5FC5\u9808\u662F Header \u6216 Body
-SAAJ0122.impl.body.already.exists=SAAJ0122: \u4E3B\u9AD4\u5DF2\u7D93\u5B58\u5728\u6642\u4E0D\u80FD\u65B0\u589E\u4E3B\u9AD4
-SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: \u4E0D\u80FD\u5BA3\u544A\u4FDD\u7559\u7684 xmlns \u524D\u7F6E\u78BC
-SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: \u5B8C\u6574\u540D\u7A31\u4E0D\u80FD\u662F xmlns
-#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null
-SAAJ0126.impl.cannot.locate.ns=SAAJ0126: \u627E\u4E0D\u5230\u524D\u7F6E\u78BC {0} \u7684\u547D\u540D\u7A7A\u9593
-SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: \u4E0D\u80FD\u50B3\u9001 NULL \u81F3 setParentElement
-
-SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: SOAPHeaderElement \u7684\u7236\u9805\u5FC5\u9808\u662F SOAPHeader
-SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements \u5FC5\u9808\u662F\u9650\u5B9A\u7684\u547D\u540D\u7A7A\u9593
-SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: actor \u6216 role \u7684\u503C\u7121\u6548
-SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: SOAPHeader \u7684\u7236\u9805\u5FC5\u9808\u662F SOAPEnvelope
-SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements \u5FC5\u9808\u662F\u9650\u5B9A\u7684\u547D\u540D\u7A7A\u9593
-
-SAAJ0140.impl.no.ns.URI=SAAJ0140: \u70BA faultCode {0} \u6307\u5B9A\u7684\u662F\u7A7A\u7684/\u7A7A\u503C NamespaceURI
-SAAJ0141.impl.detail.exists=SAAJ0141: Detail \u5DF2\u7D93\u5B58\u5728
-SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u63F4 Fault/Reason/Text, \u8ACB\u5617\u8A66 SOAP 1.2 \u6216\u66F4\u65B0\u7248\u672C
-SAAJ0143.impl.node.not.supported=SAAJ0143: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u63F4 Fault/Node, \u8ACB\u5617\u8A66 SOAP 1.2 \u6216\u66F4\u65B0\u7248\u672C
-SAAJ0144.impl.role.not.supported=SAAJ0144: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u63F4 Fault/Role, \u8ACB\u5617\u8A66 SOAP 1.2 \u6216\u66F4\u65B0\u7248\u672C
-SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: \u4E0D\u80FD\u50B3\u9001 NULL \u81F3 setParentElement
-SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: \u4E0D\u80FD\u5C07\u5143\u7D20 {0} \u7684\u540D\u7A31\u8B8A\u66F4\u70BA {1}
-SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: \u4E0D\u80FD\u5C07 setElementQName \u4E2D\u524D\u7F6E\u78BC {0} \u7684 URI \u5F9E {1} \u8B8A\u66F4\u70BA {2}
-SAAJ0148.impl.invalid.prefix.for.uri=SetElementQName \u4E2D\u7684\u7A7A\u524D\u7F6E\u78BC\u6709\u975E\u7A7A\u767D\u7684\u547D\u540D\u7A7A\u9593 URI: {0}
-SAAJ0149.impl.null.prefix=SAAJ0149: \u5EFA\u7ACB QName \u6642, \u524D\u7F6E\u78BC\u4E0D\u80FD\u662F "null"
-
-SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: \u4E0D\u80FD\u5F9E\u4E3B\u9AD4\u64F7\u53D6 Document
-SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: \u7121\u6CD5\u5F9E\u4E3B\u9AD4\u64F7\u53D6 Document
-
-# Debug messages
-SAAJ0150.impl.added.attr=SAAJ0150: \u5DF2\u65B0\u589E\u5C6C\u6027 {0}
-SAAJ0151.impl.no.children=SAAJ0151: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u7BC0\u9EDE: \u6C92\u6709\u5B50\u9805
-SAAJ0152.impl.first.child.not.text.node=SAAJ0152: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u7BC0\u9EDE: \u7B2C\u4E00\u500B\u5B50\u9805\u4E0D\u662F Text \u7BC0\u9EDE
-SAAJ0153.impl.multiple.children.same.value=SAAJ0153: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u7BC0\u9EDE: \u6709\u4E00\u500B\u4EE5\u4E0A\u7684\u5B50\u7BC0\u9EDE
-SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: SOAPFault \u5143\u7D20\u53EA\u80FD\u65B0\u589E\u6210\u70BA SOAPBody \u7684\u5B50\u9805
-SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: Detail \u5143\u7D20\u53EA\u80FD\u65B0\u589E\u6210\u70BA SOAPFault \u7684\u5B50\u9805
-SAAJ0156.impl.adding.fault.error=SAAJ0156: \u7121\u6CD5\u65B0\u589E SOAPFault, SOAPFault \u61C9\u70BA SOAPBody \u7684\u552F\u4E00\u5B50\u9805
-SAAJ0157.impl.detail.exists.error=SAAJ0157: \u7121\u6CD5\u65B0\u589E Detail, Detail \u5DF2\u7D93\u5B58\u5728
-SAAJ0158.impl.version.mismatch.fault=SAAJ0158: \u5617\u8A66\u65B0\u589E SOAPFault \u81F3 SOAPBody \u6642, \u767C\u751F SOAP \u7248\u672C\u4E0D\u7B26
-SAAJ0159.impl.version.mismatch.detail=SAAJ0159: \u5617\u8A66\u65B0\u589E Detail \u81F3 SOAPFault \u6642, \u767C\u751F SOAP \u7248\u672C\u4E0D\u7B26
-
-# Info messages
-SAAJ0190.impl.set.xml.declaration=SAAJ0190: \u7701\u7565\u8A2D\u70BA {0} \u7684 XML \u5BA3\u544A
-SAAJ0191.impl.set.encoding=SAAJ0191: \u7DE8\u78BC\u5DF2\u8A2D\u70BA {0}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/SOAPCommentImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap.impl;
-
-import java.util.ResourceBundle;
-import java.util.logging.Logger;
-
-import javax.xml.soap.SOAPElement;
-import javax.xml.soap.SOAPException;
-
-import org.w3c.dom.DOMException;
-import org.w3c.dom.Text;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
-
-public class SOAPCommentImpl
-    extends com.sun.org.apache.xerces.internal.dom.CommentImpl
-    implements javax.xml.soap.Text, org.w3c.dom.Comment {
-
-    protected static final Logger log =
-        Logger.getLogger(LogDomainConstants.SOAP_IMPL_DOMAIN,
-                         "com.sun.xml.internal.messaging.saaj.soap.impl.LocalStrings");
-    protected static ResourceBundle rb =
-        log.getResourceBundle();
-
-    public SOAPCommentImpl(SOAPDocumentImpl ownerDoc, String text) {
-        super(ownerDoc, text);
-    }
-
-    public String getValue() {
-        String nodeValue = getNodeValue();
-        return (nodeValue.equals("") ? null : nodeValue);
-    }
-
-    public void setValue(String text) {
-        setNodeValue(text);
-    }
-
-
-    public void setParentElement(SOAPElement element) throws SOAPException {
-        if (element == null) {
-            log.severe("SAAJ0112.impl.no.null.to.parent.elem");
-            throw new SOAPException("Cannot pass NULL to setParentElement");
-        }
-        ((ElementImpl) element).addNode(this);
-    }
-
-    public SOAPElement getParentElement() {
-        return (SOAPElement) getParentNode();
-    }
-
-    public void detachNode() {
-        org.w3c.dom.Node parent = getParentNode();
-        if (parent != null) {
-            parent.removeChild(this);
-        }
-    }
-
-    public void recycleNode() {
-        detachNode();
-        // TBD
-        //  - add this to the factory so subsequent
-        //    creations can reuse this object.
-    }
-
-    public boolean isComment() {
-        return true;
-    }
-
-    public Text splitText(int offset) throws DOMException {
-        log.severe("SAAJ0113.impl.cannot.split.text.from.comment");
-        throw new UnsupportedOperationException("Cannot split text from a Comment Node.");
-    }
-
-    public Text replaceWholeText(String content) throws DOMException {
-        log.severe("SAAJ0114.impl.cannot.replace.wholetext.from.comment");
-        throw new UnsupportedOperationException("Cannot replace Whole Text from a Comment Node.");
-    }
-
-    public String getWholeText() {
-        //TODO: maybe we have to implement this in future.
-        throw new UnsupportedOperationException("Not Supported");
-    }
-
-    public boolean isElementContentWhitespace() {
-        //TODO: maybe we have to implement this in future.
-        throw new UnsupportedOperationException("Not Supported");
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/SOAPTextImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap.impl;
-
-import java.util.logging.Logger;
-
-import javax.xml.soap.SOAPElement;
-import javax.xml.soap.SOAPException;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
-
-public class SOAPTextImpl
-    extends com.sun.org.apache.xerces.internal.dom.TextImpl
-    implements javax.xml.soap.Text, org.w3c.dom.Text {
-
-    protected static final Logger log =
-        Logger.getLogger(LogDomainConstants.SOAP_IMPL_DOMAIN,
-                         "com.sun.xml.internal.messaging.saaj.soap.impl.LocalStrings");
-
-    public SOAPTextImpl(SOAPDocumentImpl ownerDoc, String text) {
-        super(ownerDoc, text);
-    }
-
-    public String getValue() {
-        String nodeValue = getNodeValue();
-        return (nodeValue.equals("") ? null : nodeValue);
-    }
-
-    public void setValue(String text) {
-        setNodeValue(text);
-    }
-
-    public void setParentElement(SOAPElement parent) throws SOAPException {
-        if (parent == null) {
-            log.severe("SAAJ0126.impl.cannot.locate.ns");
-            throw new SOAPException("Cannot pass NULL to setParentElement");
-        }
-        ((ElementImpl) parent).addNode(this);
-    }
-
-    public SOAPElement getParentElement() {
-        return (SOAPElement) getParentNode();
-    }
-
-
-    public void detachNode() {
-        org.w3c.dom.Node parent = getParentNode();
-        if (parent != null) {
-            parent.removeChild(this);
-        }
-    }
-
-    public void recycleNode() {
-        detachNode();
-        // TBD
-        //  - add this to the factory so subsequent
-        //    creations can reuse this object.
-    }
-
-    public boolean isComment() {
-        String txt = getNodeValue();
-        if (txt == null) {
-            return false;
-        }
-        return txt.startsWith("<!--") && txt.endsWith("-->");
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/TreeException.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap.impl;
-
-public class TreeException extends RuntimeException {
-    public TreeException(String reason) {
-        super(reason);
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for name pkg
-# Error messages
-SAAJ0201.name.not.created.from.null.tag=SAAJ0201: Cannot create a name from a null tag
-SAAJ0202.name.invalid.arg.format=SAAJ0202: Argument "{0}" must be of the form: prefix:localName
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_de.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for name pkg
-# Error messages
-SAAJ0201.name.not.created.from.null.tag=SAAJ0201: Name kann nicht aus einem Null-Tag erstellt werden
-SAAJ0202.name.invalid.arg.format=SAAJ0202: Argument "{0}" muss folgende Form aufweisen: prefix:localName
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_es.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for name pkg
-# Error messages
-SAAJ0201.name.not.created.from.null.tag=SAAJ0201: no se puede crear un nombre desde una etiqueta nula
-SAAJ0202.name.invalid.arg.format=SAAJ0202: El argumento "{0}" debe tener el formato: prefix:localName
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_fr.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for name pkg
-# Error messages
-SAAJ0201.name.not.created.from.null.tag=SAAJ0201 : impossible de cr\u00E9er un nom \u00E0 partir d'une balise NULL
-SAAJ0202.name.invalid.arg.format=SAAJ0202 : l''argument "{0}" doit avoir le format suivant : prefix:localName
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_it.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for name pkg
-# Error messages
-SAAJ0201.name.not.created.from.null.tag=SAAJ0201: Impossibile creare un nome da una tag nulla
-SAAJ0202.name.invalid.arg.format=SAAJ0202: L''argomento "{0}" deve avere il formato: prefix:localName
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_ja.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for name pkg
-# Error messages
-SAAJ0201.name.not.created.from.null.tag=SAAJ0201: null\u306E\u30BF\u30B0\u304B\u3089\u540D\u524D\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093
-SAAJ0202.name.invalid.arg.format=SAAJ0202: \u5F15\u6570"{0}"\u306Fprefix:localName\u306E\u5F62\u5F0F\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_ko.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for name pkg
-# Error messages
-SAAJ0201.name.not.created.from.null.tag=SAAJ0201: \uB110 \uD0DC\uADF8\uC5D0\uC11C \uC774\uB984\uC744 \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0202.name.invalid.arg.format=SAAJ0202: "{0}" \uC778\uC218\uB294 prefix:localName \uD615\uC2DD\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_pt_BR.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for name pkg
-# Error messages
-SAAJ0201.name.not.created.from.null.tag=SAAJ0201: n\u00E3o \u00E9 poss\u00EDvel criar um nome a partir de uma tag nula
-SAAJ0202.name.invalid.arg.format=SAAJ0202: o argumento "{0}" deve estar no formato: prefix.localName
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_zh_CN.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for name pkg
-# Error messages
-SAAJ0201.name.not.created.from.null.tag=SAAJ0201: \u65E0\u6CD5\u4ECE\u7A7A\u503C\u6807\u8BB0\u521B\u5EFA\u540D\u79F0
-SAAJ0202.name.invalid.arg.format=SAAJ0202: \u53C2\u6570 "{0}" \u5FC5\u987B\u91C7\u7528\u4EE5\u4E0B\u5F62\u5F0F: prefix:localName
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_zh_TW.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for name pkg
-# Error messages
-SAAJ0201.name.not.created.from.null.tag=SAAJ0201: \u7121\u6CD5\u5F9E\u7A7A\u503C\u6A19\u8A18\u5EFA\u7ACB\u540D\u7A31
-SAAJ0202.name.invalid.arg.format=SAAJ0202: \u5F15\u6578 "{0}" \u7684\u683C\u5F0F\u5FC5\u9808\u662F: prefix:localName
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/NameImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,561 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.soap.name;
-
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.Name;
-import javax.xml.soap.SOAPConstants;
-
-//import com.sun.org.apache.xerces.internal.xni.NamespaceContext;
-import org.w3c.dom.Element;
-import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
-
-public class NameImpl implements Name {
-    public static final String XML_NAMESPACE_PREFIX = "xml";
-    public static final String XML_SCHEMA_NAMESPACE_PREFIX = "xs";
-    public static final String SOAP_ENVELOPE_PREFIX = "SOAP-ENV";
-
-    public static final String XML_NAMESPACE =
-        "http://www.w3.org/XML/1998/namespace";
-    public static final String SOAP11_NAMESPACE =
-        SOAPConstants.URI_NS_SOAP_ENVELOPE;
-    public static final String SOAP12_NAMESPACE =
-        SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE;
-    public static final String XML_SCHEMA_NAMESPACE =
-        "http://www.w3.org/2001/XMLSchema";
-
-    protected String uri = "";
-    protected String localName = "";
-    protected String prefix = "";
-    private String qualifiedName = null;
-
-    protected static final Logger log =
-        Logger.getLogger(LogDomainConstants.NAMING_DOMAIN,
-                         "com.sun.xml.internal.messaging.saaj.soap.name.LocalStrings");
-
-    /**
-     * XML Information Set REC
-     * all namespace attributes (including those named xmlns,
-     * whose [prefix] property has no value) have a namespace URI of http://www.w3.org/2000/xmlns/
-     */
-    public final static String XMLNS_URI = "http://www.w3.org/2000/xmlns/".intern();
-
-    protected NameImpl(String name) {
-        this.localName = name == null ? "" : name;
-    }
-
-    protected NameImpl(String name, String prefix, String uri) {
-        this.uri = uri == null ? "" : uri;
-        this.localName = name == null ? "" : name;
-        this.prefix = prefix == null ? "" : prefix;
-
-        if (this.prefix.equals("xmlns") && this.uri.equals("")) {
-            this.uri = XMLNS_URI;
-        }
-        if (this.uri.equals(XMLNS_URI) && this.prefix.equals("")) {
-            this.prefix = "xmlns";
-        }
-    }
-
-    public static Name convertToName(QName qname) {
-        return new NameImpl(qname.getLocalPart(),
-                            qname.getPrefix(),
-                            qname.getNamespaceURI());
-    }
-
-    public static QName convertToQName(Name name) {
-        return new QName(name.getURI(),
-                         name.getLocalName(),
-                         name.getPrefix());
-    }
-
-    public static NameImpl createFromUnqualifiedName(String name) {
-        return new NameImpl(name);
-    }
-
-    public static Name createFromTagName(String tagName) {
-        return createFromTagAndUri(tagName, "");
-    }
-
-    public static Name createFromQualifiedName(
-        String qualifiedName,
-        String uri) {
-        return createFromTagAndUri(qualifiedName, uri);
-    }
-
-    protected static Name createFromTagAndUri(String tagName, String uri) {
-        if (tagName == null) {
-            log.severe("SAAJ0201.name.not.created.from.null.tag");
-            throw new IllegalArgumentException("Cannot create a name from a null tag.");
-        }
-        int index = tagName.indexOf(':');
-        if (index < 0) {
-            return new NameImpl(tagName, "", uri);
-        } else {
-            return new NameImpl(
-                tagName.substring(index + 1),
-                tagName.substring(0, index),
-                uri);
-        }
-    }
-
-    protected static int getPrefixSeparatorIndex(String qualifiedName) {
-        int index = qualifiedName.indexOf(':');
-        if (index < 0) {
-            log.log(
-                Level.SEVERE,
-                "SAAJ0202.name.invalid.arg.format",
-                new String[] { qualifiedName });
-            throw new IllegalArgumentException(
-                "Argument \""
-                    + qualifiedName
-                    + "\" must be of the form: \"prefix:localName\"");
-        }
-        return index;
-    }
-
-    public static String getPrefixFromQualifiedName(String qualifiedName) {
-        return qualifiedName.substring(
-            0,
-            getPrefixSeparatorIndex(qualifiedName));
-    }
-
-    public static String getLocalNameFromQualifiedName(String qualifiedName) {
-        return qualifiedName.substring(
-            getPrefixSeparatorIndex(qualifiedName) + 1);
-    }
-
-    public static String getPrefixFromTagName(String tagName) {
-        if (isQualified(tagName)) {
-            return getPrefixFromQualifiedName(tagName);
-        }
-        return "";
-    }
-
-    public static String getLocalNameFromTagName(String tagName) {
-        if (isQualified(tagName)) {
-            return getLocalNameFromQualifiedName(tagName);
-        }
-        return tagName;
-    }
-
-    public static boolean isQualified(String tagName) {
-        return tagName.indexOf(':') >= 0;
-    }
-
-    public static NameImpl create(String name, String prefix, String uri) {
-        if (prefix == null)
-            prefix = "";
-        if (uri == null)
-            uri = "";
-        if (name == null)
-            name = "";
-
-        if (!uri.equals("") && !name.equals("")) {
-            if (uri.equals(NameImpl.SOAP11_NAMESPACE)) {
-                if (name.equalsIgnoreCase("Envelope"))
-                    return createEnvelope1_1Name(prefix);
-                else if (name.equalsIgnoreCase("Header"))
-                    return createHeader1_1Name(prefix);
-                else if (name.equalsIgnoreCase("Body"))
-                    return createBody1_1Name(prefix);
-                else if (name.equalsIgnoreCase("Fault"))
-                    return createFault1_1Name(prefix);
-                else
-                    return new SOAP1_1Name(name, prefix);
-            } else if (uri.equals(SOAP12_NAMESPACE)) {
-                if (name.equalsIgnoreCase("Envelope"))
-                    return createEnvelope1_2Name(prefix);
-                else if (name.equalsIgnoreCase("Header"))
-                    return createHeader1_2Name(prefix);
-                else if (name.equalsIgnoreCase("Body"))
-                    return createBody1_2Name(prefix);
-                else if (
-                    name.equals("Fault")
-                        || name.equals("Reason")
-                        || name.equals("Detail"))
-                    return createFault1_2Name(name, prefix);
-                else if (name.equals("Code") || name.equals("Subcode"))
-                    return createCodeSubcode1_2Name(prefix, name);
-                else
-                    return new SOAP1_2Name(name, prefix);
-            }
-
-        }
-        return new NameImpl(name, prefix, uri);
-    }
-
-    public static String createQName(String prefix, String localName) {
-        if (prefix == null || prefix.equals("")) {
-            return localName;
-        }
-        return prefix + ":" + localName;
-    }
-
-    public boolean equals(Object obj) {
-        if (!(obj instanceof Name)) {
-            return false;
-        }
-
-        Name otherName = (Name) obj;
-
-        if (!uri.equals(otherName.getURI())) {
-            return false;
-        }
-
-        if (!localName.equals(otherName.getLocalName())) {
-            return false;
-        }
-
-        return true;
-    }
-
-    public int hashCode() {
-        return localName.hashCode();
-    }
-
-    /**
-     * Get the local name part of this XML Name.
-     *
-     * @return a string for the local name.
-     */
-    public String getLocalName() {
-        return localName;
-    }
-
-    /* getQualifiedName is inherited from QName */
-
-    /**
-     * Returns the prefix associated with the namespace of the name.
-     *
-     * @return the prefix as a string.
-     */
-    public String getPrefix() {
-        return prefix;
-    }
-
-    /**
-     * Returns the URI associated of the namespace.
-     *
-     * @return the uri as a string.
-     */
-    public String getURI() {
-        return uri;
-    }
-
-    /**
-     * Returns a String version of the name suitable for use in an XML document.
-     */
-    public String getQualifiedName() {
-        if (qualifiedName == null) {
-            if (prefix != null && prefix.length() > 0) {
-                qualifiedName = prefix + ":" + localName;
-            } else {
-                qualifiedName = localName;
-            }
-        }
-        return qualifiedName;
-    }
-
-    /**
-     * Create a name object for a SOAP1.1 Envelope.
-     */
-    public static NameImpl createEnvelope1_1Name(String prefix) {
-        return new Envelope1_1Name(prefix);
-    }
-
-    /**
-     * Create a name object for a SOAP1.2 Envelope.
-     */
-    public static NameImpl createEnvelope1_2Name(String prefix) {
-        return new Envelope1_2Name(prefix);
-    }
-
-    /**
-     * Create a name object for a SOAP1.1 Header.
-     */
-    public static NameImpl createHeader1_1Name(String prefix) {
-        return new Header1_1Name(prefix);
-    }
-
-    /**
-     * Create a name object for a SOAP1.2 Header.
-     */
-    public static NameImpl createHeader1_2Name(String prefix) {
-        return new Header1_2Name(prefix);
-    }
-
-    /**
-     * Create a name object for a SOAP1.1 Body.
-     */
-    public static NameImpl createBody1_1Name(String prefix) {
-        return new Body1_1Name(prefix);
-    }
-
-    /**
-     * Create a name object for a SOAP1.2 Body.
-     */
-    public static NameImpl createBody1_2Name(String prefix) {
-        return new Body1_2Name(prefix);
-    }
-
-    /**
-     * Create a name object for a SOAP1.1 Fault.
-     */
-    public static NameImpl createFault1_1Name(String prefix) {
-        return new Fault1_1Name(prefix);
-    }
-
-    /**
-      * Create a name object for a SOAP1.2 NotUnderstood element.
-      */
-    public static NameImpl createNotUnderstood1_2Name(String prefix) {
-        return new NotUnderstood1_2Name(prefix);
-    }
-
-    /**
-     * Create a name object for a SOAP1.2 Upgrade element.
-     */
-    public static NameImpl createUpgrade1_2Name(String prefix) {
-        return new Upgrade1_2Name(prefix);
-    }
-
-    /**
-     * Create a name object for a SOAP1.2 SupportedEnvelope Upgrade element.
-     */
-    public static NameImpl createSupportedEnvelope1_2Name(String prefix) {
-        return new SupportedEnvelope1_2Name(prefix);
-    }
-
-    /**
-     * Create a name object for a SOAP1.2
-     * Fault, Reason or Detail.
-     *
-     * @param localName Local Name of element
-     */
-    public static NameImpl createFault1_2Name(
-        String localName,
-        String prefix) {
-        return new Fault1_2Name(localName, prefix);
-    }
-
-    /**
-     * Create a name object for a SOAP1.2 Fault/Code or Subcode.
-     *
-     * @param localName Either "Code" or "Subcode"
-     */
-    public static NameImpl createCodeSubcode1_2Name(
-        String prefix,
-        String localName) {
-        return new CodeSubcode1_2Name(localName, prefix);
-    }
-
-    /**
-     * Create a name object for a SOAP1.1 Fault Detail.
-     */
-    public static NameImpl createDetail1_1Name() {
-        return new Detail1_1Name();
-    }
-
-    public static NameImpl createDetail1_1Name(String prefix) {
-        return new Detail1_1Name(prefix);
-    }
-
-    public static NameImpl createFaultElement1_1Name(String localName) {
-        return new FaultElement1_1Name(localName);
-    }
-
-    public static NameImpl createFaultElement1_1Name(String localName,
-                                                     String prefix) {
-        return new FaultElement1_1Name(localName, prefix);
-    }
-
-    public static NameImpl createSOAP11Name(String string) {
-        return new SOAP1_1Name(string, null);
-    }
-    public static NameImpl createSOAP12Name(String string) {
-        return new SOAP1_2Name(string, null);
-    }
-
-    public static NameImpl createSOAP12Name(String localName, String prefix) {
-        return new SOAP1_2Name(localName, prefix);
-    }
-
-    public static NameImpl createXmlName(String localName) {
-        return new NameImpl(localName, XML_NAMESPACE_PREFIX, XML_NAMESPACE);
-    }
-
-    public static Name copyElementName(Element element) {
-        String localName = element.getLocalName();
-        String prefix = element.getPrefix();
-        String uri = element.getNamespaceURI();
-        return create(localName, prefix, uri);
-    }
-
-
-static class SOAP1_1Name extends NameImpl {
-    SOAP1_1Name(String name, String prefix) {
-        super(
-            name,
-            (prefix == null || prefix.equals(""))
-                ? NameImpl.SOAP_ENVELOPE_PREFIX
-                : prefix,
-            NameImpl.SOAP11_NAMESPACE);
-    }
-}
-
-static class Envelope1_1Name extends SOAP1_1Name {
-    Envelope1_1Name(String prefix) {
-        super("Envelope", prefix);
-    }
-}
-
-static class Header1_1Name extends SOAP1_1Name {
-    Header1_1Name(String prefix) {
-        super("Header", prefix);
-    }
-}
-
-static class Body1_1Name extends SOAP1_1Name {
-    Body1_1Name(String prefix) {
-        super("Body", prefix);
-    }
-}
-
-static class Fault1_1Name extends NameImpl {
-    Fault1_1Name(String prefix) {
-        super(
-            "Fault",
-            (prefix == null || prefix.equals(""))
-                ? SOAP_ENVELOPE_PREFIX
-                : prefix,
-            SOAP11_NAMESPACE);
-    }
-}
-
-static class Detail1_1Name extends NameImpl {
-    Detail1_1Name() {
-        super("detail");
-    }
-
-    Detail1_1Name(String prefix) {
-        super("detail", prefix, "");
-    }
-}
-
-static class FaultElement1_1Name extends NameImpl {
-    FaultElement1_1Name(String localName) {
-        super(localName);
-    }
-
-    FaultElement1_1Name(String localName, String prefix) {
-        super(localName, prefix, "");
-    }
-}
-
-static class SOAP1_2Name extends NameImpl {
-    SOAP1_2Name(String name, String prefix) {
-        super(
-            name,
-            (prefix == null || prefix.equals(""))
-                ? SOAPConstants.SOAP_ENV_PREFIX
-                : prefix,
-            SOAP12_NAMESPACE);
-    }
-}
-
-static class Envelope1_2Name extends SOAP1_2Name {
-    Envelope1_2Name(String prefix) {
-        super("Envelope", prefix);
-    }
-}
-
-static class Header1_2Name extends SOAP1_2Name {
-    Header1_2Name(String prefix) {
-        super("Header", prefix);
-    }
-}
-
-static class Body1_2Name extends SOAP1_2Name {
-    Body1_2Name(String prefix) {
-        super("Body", prefix);
-    }
-}
-
-static class Fault1_2Name extends NameImpl {
-    Fault1_2Name(String name, String prefix) {
-        super(
-            (name == null || name.equals("")) ? "Fault" : name,
-            (prefix == null || prefix.equals(""))
-                ? SOAPConstants.SOAP_ENV_PREFIX
-                : prefix,
-            SOAP12_NAMESPACE);
-    }
-}
-
-static class NotUnderstood1_2Name extends NameImpl {
-    NotUnderstood1_2Name(String prefix) {
-        super(
-            "NotUnderstood",
-            (prefix == null || prefix.equals(""))
-                ? SOAPConstants.SOAP_ENV_PREFIX
-                : prefix,
-            SOAP12_NAMESPACE);
-    }
-}
-
-static class Upgrade1_2Name extends NameImpl {
-    Upgrade1_2Name(String prefix) {
-        super(
-            "Upgrade",
-            (prefix == null || prefix.equals(""))
-                ? SOAPConstants.SOAP_ENV_PREFIX
-                : prefix,
-            SOAP12_NAMESPACE);
-    }
-}
-
-static class SupportedEnvelope1_2Name extends NameImpl {
-    SupportedEnvelope1_2Name(String prefix) {
-        super(
-            "SupportedEnvelope",
-            (prefix == null || prefix.equals(""))
-                ? SOAPConstants.SOAP_ENV_PREFIX
-                : prefix,
-            SOAP12_NAMESPACE);
-    }
-}
-
-static class CodeSubcode1_2Name extends SOAP1_2Name {
-    CodeSubcode1_2Name(String prefix, String localName) {
-        super(prefix, localName);
-    }
-}
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Body1_1Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
-
-import java.util.Locale;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.*;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.BodyImpl;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-
-public class Body1_1Impl extends BodyImpl {
-    public Body1_1Impl(SOAPDocumentImpl ownerDocument, String prefix) {
-            super(ownerDocument, NameImpl.createBody1_1Name(prefix));
-    }
-
-    public SOAPFault addSOAP12Fault(QName faultCode, String faultReason, Locale locale) {
-        // log message here
-        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
-    }
-
-    protected NameImpl getFaultName(String name) {
-        // Ignore name
-        return NameImpl.createFault1_1Name(null);
-    }
-
-    protected SOAPBodyElement createBodyElement(Name name) {
-        return new BodyElement1_1Impl(
-            ((SOAPDocument) getOwnerDocument()).getDocument(),
-            name);
-    }
-
-    protected SOAPBodyElement createBodyElement(QName name) {
-        return new BodyElement1_1Impl(
-            ((SOAPDocument) getOwnerDocument()).getDocument(),
-            name);
-    }
-
-    protected QName getDefaultFaultCode() {
-        return new QName(SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE, "Server");
-    }
-
-    protected boolean isFault(SOAPElement child) {
-        // SOAP 1.1 faults always use the default name
-        return child.getElementName().equals(getFaultName(null));
-    }
-
-    protected SOAPFault createFaultElement() {
-        return new Fault1_1Impl(
-            ((SOAPDocument) getOwnerDocument()).getDocument(), getPrefix());
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/BodyElement1_1Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.Name;
-import javax.xml.soap.SOAPElement;
-import javax.xml.soap.SOAPException;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.BodyElementImpl;
-
-public class BodyElement1_1Impl extends BodyElementImpl {
-
-    public BodyElement1_1Impl(SOAPDocumentImpl ownerDoc, Name qname) {
-        super(ownerDoc, qname);
-    }
-    public BodyElement1_1Impl(SOAPDocumentImpl ownerDoc, QName qname) {
-        super(ownerDoc, qname);
-    }
-    public SOAPElement setElementQName(QName newName) throws SOAPException {
-        BodyElementImpl copy =
-            new BodyElement1_1Impl((SOAPDocumentImpl) getOwnerDocument(), newName);
-        return replaceElementWithSOAPElement(this,copy);
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Detail1_1Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.DetailEntry;
-import javax.xml.soap.Name;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.DetailImpl;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-
-public class Detail1_1Impl extends DetailImpl {
-
-    public Detail1_1Impl(SOAPDocumentImpl ownerDoc, String prefix) {
-        super(ownerDoc, NameImpl.createDetail1_1Name(prefix));
-    }
-    public Detail1_1Impl(SOAPDocumentImpl ownerDoc) {
-        super(ownerDoc, NameImpl.createDetail1_1Name());
-    }
-    protected DetailEntry createDetailEntry(Name name) {
-        return new DetailEntry1_1Impl(
-            (SOAPDocumentImpl) getOwnerDocument(),
-            name);
-    }
-    protected DetailEntry createDetailEntry(QName name) {
-        return new DetailEntry1_1Impl(
-            (SOAPDocumentImpl) getOwnerDocument(),
-            name);
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/DetailEntry1_1Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.Name;
-import javax.xml.soap.SOAPElement;
-import javax.xml.soap.SOAPException;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.DetailEntryImpl;
-
-public class DetailEntry1_1Impl extends DetailEntryImpl {
-
-    public DetailEntry1_1Impl(SOAPDocumentImpl ownerDoc, Name qname) {
-        super(ownerDoc, qname);
-    }
-    public DetailEntry1_1Impl(SOAPDocumentImpl ownerDoc, QName qname) {
-        super(ownerDoc, qname);
-    }
-    public SOAPElement setElementQName(QName newName) throws SOAPException {
-        DetailEntryImpl copy =
-            new DetailEntry1_1Impl((SOAPDocumentImpl) getOwnerDocument(), newName);
-        return replaceElementWithSOAPElement(this,copy);
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Envelope1_1Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
-
-import javax.xml.soap.SOAPException;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-
-public class Envelope1_1Impl extends EnvelopeImpl {
-
-    public Envelope1_1Impl(SOAPDocumentImpl ownerDoc, String prefix){
-        super(ownerDoc, NameImpl.createEnvelope1_1Name(prefix));
-    }
-    Envelope1_1Impl(
-        SOAPDocumentImpl ownerDoc,
-        String prefix,
-        boolean createHeader,
-        boolean createBody)
-        throws SOAPException {
-        super(
-            ownerDoc,
-            NameImpl.createEnvelope1_1Name(prefix),
-            createHeader,
-            createBody);
-    }
-    protected NameImpl getBodyName(String prefix) {
-        return NameImpl.createBody1_1Name(prefix);
-    }
-
-    protected NameImpl getHeaderName(String prefix) {
-        return NameImpl.createHeader1_1Name(prefix);
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Fault1_1Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,387 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
-
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.logging.Logger;
-import java.util.logging.Level;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.SOAPElement;
-import javax.xml.soap.SOAPFaultElement;
-import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPConstants;
-import javax.xml.soap.Name;
-import javax.xml.soap.Name;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.*;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-
-
-public class Fault1_1Impl extends FaultImpl {
-
-    protected static final Logger log =
-        Logger.getLogger(
-            LogDomainConstants.SOAP_VER1_1_DOMAIN,
-            "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings");
-
-    public Fault1_1Impl(SOAPDocumentImpl ownerDocument, String prefix) {
-       super(ownerDocument, NameImpl.createFault1_1Name(prefix));
-    }
-
-    protected NameImpl getDetailName() {
-        return NameImpl.createDetail1_1Name();
-    }
-
-    protected NameImpl getFaultCodeName() {
-        return NameImpl.createFromUnqualifiedName("faultcode");
-    }
-
-    protected NameImpl getFaultStringName() {
-        return NameImpl.createFromUnqualifiedName("faultstring");
-    }
-
-    protected NameImpl getFaultActorName() {
-        return NameImpl.createFromUnqualifiedName("faultactor");
-    }
-
-    protected DetailImpl createDetail() {
-        return new Detail1_1Impl(
-                       ((SOAPDocument) getOwnerDocument()).getDocument());
-    }
-
-    protected FaultElementImpl createSOAPFaultElement(String localName) {
-        return new FaultElement1_1Impl(
-                       ((SOAPDocument) getOwnerDocument()).getDocument(),
-                       localName);
-    }
-
-    protected void checkIfStandardFaultCode(String faultCode, String uri)
-        throws SOAPException {
-        // SOAP 1.1 doesn't seem to mandate using faultcode from a particular
-        // set of values.
-        // Also need to be backward compatible.
-    }
-
-    protected void finallySetFaultCode(String faultcode) throws SOAPException {
-        this.faultCodeElement.addTextNode(faultcode);
-    }
-
-    public String getFaultCode() {
-        if (this.faultCodeElement == null)
-            findFaultCodeElement();
-        return this.faultCodeElement.getValue();
-    }
-
-    public Name getFaultCodeAsName() {
-
-        String faultcodeString = getFaultCode();
-        if (faultcodeString == null) {
-            return null;
-        }
-        int prefixIndex = faultcodeString.indexOf(':');
-        if (prefixIndex == -1) {
-            // Not a valid SOAP message, but we return the unqualified name
-            // anyway since some apps do not strictly conform to SOAP
-            // specs.  A message that does not contain a <faultcode>
-            // element itself is also not valid in which case we return
-            // null instead of throwing an exception so this is consistent.
-            return NameImpl.createFromUnqualifiedName(faultcodeString);
-        }
-
-        // Get the prefix and map it to a namespace name (AKA namespace URI)
-        String prefix = faultcodeString.substring(0, prefixIndex);
-        if (this.faultCodeElement == null)
-            findFaultCodeElement();
-        String nsName = this.faultCodeElement.getNamespaceURI(prefix);
-        return NameImpl.createFromQualifiedName(faultcodeString, nsName);
-    }
-
-    public QName getFaultCodeAsQName() {
-        String faultcodeString = getFaultCode();
-        if (faultcodeString == null) {
-            return null;
-        }
-        if (this.faultCodeElement == null)
-            findFaultCodeElement();
-        return convertCodeToQName(faultcodeString, this.faultCodeElement);
-    }
-
-    public void setFaultString(String faultString) throws SOAPException {
-
-        if (this.faultStringElement == null)
-            findFaultStringElement();
-
-        if (this.faultStringElement == null)
-            this.faultStringElement = addSOAPFaultElement("faultstring");
-        else {
-            this.faultStringElement.removeContents();
-            //this.faultStringElement.removeAttributeNS("http://www.w3.org/XML/1998/namespace", "lang");
-            this.faultStringElement.removeAttribute("xml:lang");
-        }
-
-        this.faultStringElement.addTextNode(faultString);
-    }
-
-    public String getFaultString() {
-        if (this.faultStringElement == null)
-            findFaultStringElement();
-        return this.faultStringElement.getValue();
-
-    }
-
-    public Locale getFaultStringLocale() {
-        if (this.faultStringElement == null)
-            findFaultStringElement();
-        if (this.faultStringElement != null) {
-            String xmlLangAttr =
-                this.faultStringElement.getAttributeValue(
-                    NameImpl.createFromUnqualifiedName("xml:lang"));
-            if (xmlLangAttr != null)
-                return xmlLangToLocale(xmlLangAttr);
-        }
-        return null;
-    }
-
-    public void setFaultString(String faultString, Locale locale)
-        throws SOAPException {
-        setFaultString(faultString);
-        this.faultStringElement.addAttribute(
-            NameImpl.createFromTagName("xml:lang"),
-            localeToXmlLang(locale));
-    }
-
-    protected boolean isStandardFaultElement(String localName) {
-        if (localName.equalsIgnoreCase("detail") ||
-            localName.equalsIgnoreCase("faultcode") ||
-            localName.equalsIgnoreCase("faultstring") ||
-            localName.equalsIgnoreCase("faultactor")) {
-            return true;
-        }
-        return false;
-    }
-
-    public void appendFaultSubcode(QName subcode) {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
-            "appendFaultSubcode");
-        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
-    }
-
-    public void removeAllFaultSubcodes() {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
-            "removeAllFaultSubcodes");
-        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
-    }
-
-    public Iterator getFaultSubcodes() {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
-            "getFaultSubcodes");
-        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
-    }
-
-    public String getFaultReasonText(Locale locale) {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
-            "getFaultReasonText");
-        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
-    }
-
-    public Iterator getFaultReasonTexts() {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
-            "getFaultReasonTexts");
-        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
-    }
-
-    public Iterator getFaultReasonLocales() {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
-            "getFaultReasonLocales");
-        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
-    }
-
-    public void addFaultReasonText(String text, java.util.Locale locale)
-        throws SOAPException {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
-            "addFaultReasonText");
-        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
-    }
-
-    public String getFaultRole() {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
-            "getFaultRole");
-        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
-    }
-
-    public void setFaultRole(String uri) {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
-            "setFaultRole");
-        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
-    }
-
-    public String getFaultNode() {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
-            "getFaultNode");
-        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
-    }
-
-    public void setFaultNode(String uri) {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
-            "setFaultNode");
-        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
-    }
-
-    protected QName getDefaultFaultCode() {
-        return new QName(SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE, "Server");
-    }
-
-    public SOAPElement addChildElement(SOAPElement element)
-        throws SOAPException {
-        String localName = element.getLocalName();
-        if ("Detail".equalsIgnoreCase(localName)) {
-            if (hasDetail()) {
-                log.severe("SAAJ0305.ver1_2.detail.exists.error");
-                throw new SOAPExceptionImpl("Cannot add Detail, Detail already exists");
-            }
-        }
-        return super.addChildElement(element);
-    }
-
-    protected FaultElementImpl createSOAPFaultElement(QName qname) {
-         return new FaultElement1_1Impl(
-                       ((SOAPDocument) getOwnerDocument()).getDocument(),
-                       qname);
-    }
-
-    protected FaultElementImpl createSOAPFaultElement(Name qname) {
-         return new FaultElement1_1Impl(
-                       ((SOAPDocument) getOwnerDocument()).getDocument(),
-                       (NameImpl)qname);
-    }
-
-    public void setFaultCode(String faultCode, String prefix, String uri)
-        throws SOAPException {
-        if (prefix == null || "".equals(prefix)) {
-            if (uri != null && !"".equals(uri)) {
-                prefix = getNamespacePrefix(uri);
-                if (prefix == null || "".equals(prefix)) {
-                    prefix = "ns0";
-                }
-            }
-        }
-
-        if (this.faultCodeElement == null)
-            findFaultCodeElement();
-
-        if (this.faultCodeElement == null)
-            this.faultCodeElement = addFaultCodeElement();
-        else
-            this.faultCodeElement.removeContents();
-
-        if (uri == null || "".equals(uri)) {
-            if (prefix != null && !"".equals("prefix")) {
-                uri = this.faultCodeElement.getNamespaceURI(prefix);
-            }
-        }
-
-        if (uri == null || "".equals(uri)) {
-            if (prefix != null && !"".equals(prefix)) {
-                //cannot allow an empty URI for a non-Empty prefix
-                log.log(Level.SEVERE, "SAAJ0307.impl.no.ns.URI", new Object[]{prefix + ":" + faultCode});
-                throw new SOAPExceptionImpl("Empty/Null NamespaceURI specified for faultCode \"" + prefix + ":" + faultCode + "\"");
-            } else {
-                uri = "";
-            }
-        }
-
-        checkIfStandardFaultCode(faultCode, uri);
-        ((FaultElementImpl) this.faultCodeElement).ensureNamespaceIsDeclared(prefix, uri);
-
-        if (prefix == null || "".equals(prefix)) {
-            finallySetFaultCode(faultCode);
-        } else {
-            finallySetFaultCode(prefix + ":" + faultCode);
-        }
-    }
-
-    private boolean standardFaultCode(String faultCode) {
-        if (faultCode.equals("VersionMismatch") || faultCode.equals("MustUnderstand")
-            || faultCode.equals("Client") || faultCode.equals("Server")) {
-            return true;
-        }
-        if (faultCode.startsWith("VersionMismatch.") || faultCode.startsWith("MustUnderstand.")
-            || faultCode.startsWith("Client.") || faultCode.startsWith("Server.")) {
-            return true;
-        }
-        return false;
-    }
-
-     public void setFaultActor(String faultActor) throws SOAPException {
-        if (this.faultActorElement == null)
-            findFaultActorElement();
-        if (this.faultActorElement != null)
-            this.faultActorElement.detachNode();
-        if (faultActor == null)
-            return;
-        this.faultActorElement =
-            createSOAPFaultElement(getFaultActorName());
-        this.faultActorElement.addTextNode(faultActor);
-        if (hasDetail()) {
-            insertBefore(this.faultActorElement, this.detail);
-            return;
-        }
-        addNode(this.faultActorElement);
-
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/FaultElement1_1Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.SOAPElement;
-import javax.xml.soap.SOAPException;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.FaultElementImpl;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-
-public class FaultElement1_1Impl extends FaultElementImpl {
-
-    public FaultElement1_1Impl(SOAPDocumentImpl ownerDoc, NameImpl qname) {
-        super(ownerDoc, qname);
-    }
-
-    public FaultElement1_1Impl(SOAPDocumentImpl ownerDoc, QName qname) {
-        super(ownerDoc, qname);
-    }
-
-    public FaultElement1_1Impl(SOAPDocumentImpl ownerDoc,
-                               String localName) {
-        super(ownerDoc, NameImpl.createFaultElement1_1Name(localName));
-    }
-
-    public FaultElement1_1Impl(SOAPDocumentImpl ownerDoc,
-                               String localName,
-                               String prefix) {
-        super(ownerDoc,
-              NameImpl.createFaultElement1_1Name(localName, prefix));
-    }
-
-    protected boolean isStandardFaultElement() {
-        String localName = elementQName.getLocalPart();
-        if (localName.equalsIgnoreCase("faultcode") ||
-            localName.equalsIgnoreCase("faultstring") ||
-            localName.equalsIgnoreCase("faultactor")) {
-            return true;
-        }
-        return false;
-    }
-
-    public SOAPElement setElementQName(QName newName) throws SOAPException {
-        if (!isStandardFaultElement()) {
-            FaultElement1_1Impl copy =
-                new FaultElement1_1Impl((SOAPDocumentImpl) getOwnerDocument(), newName);
-            return replaceElementWithSOAPElement(this,copy);
-        } else {
-            return super.setElementQName(newName);
-        }
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Header1_1Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
-
-import java.util.List;
-import java.util.Iterator;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.*;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.HeaderImpl;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
-
-public class Header1_1Impl extends HeaderImpl {
-
-    protected static final Logger log =
-        Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN,
-                         "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings");
-
-    public Header1_1Impl(SOAPDocumentImpl ownerDocument, String prefix) {
-            super(ownerDocument, NameImpl.createHeader1_1Name(prefix));
-    }
-
-    protected NameImpl getNotUnderstoodName() {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1",
-            new String[] { "getNotUnderstoodName" });
-        throw new UnsupportedOperationException("Not supported by SOAP 1.1");
-    }
-
-    protected NameImpl getUpgradeName() {
-        return NameImpl.create(
-            "Upgrade",
-            getPrefix(),
-            SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE);
-    }
-
-    protected NameImpl getSupportedEnvelopeName() {
-        return NameImpl.create(
-            "SupportedEnvelope",
-            getPrefix(),
-            SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE);
-    }
-
-    public SOAPHeaderElement addNotUnderstoodHeaderElement(QName name)
-        throws SOAPException {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1",
-            new String[] { "addNotUnderstoodHeaderElement" });
-        throw new UnsupportedOperationException("Not supported by SOAP 1.1");
-    }
-
-    protected SOAPHeaderElement createHeaderElement(Name name) {
-        return new HeaderElement1_1Impl(
-            ((SOAPDocument) getOwnerDocument()).getDocument(),
-            name);
-    }
-    protected SOAPHeaderElement createHeaderElement(QName name) {
-        return new HeaderElement1_1Impl(
-            ((SOAPDocument) getOwnerDocument()).getDocument(),
-            name);
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/HeaderElement1_1Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
-
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.Name;
-import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPElement;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.HeaderElementImpl;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
-
-public class HeaderElement1_1Impl extends HeaderElementImpl {
-
-    protected static final Logger log =
-        Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN,
-                         "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings");
-
-    public HeaderElement1_1Impl(SOAPDocumentImpl ownerDoc, Name qname) {
-        super(ownerDoc, qname);
-    }
-    public HeaderElement1_1Impl(SOAPDocumentImpl ownerDoc, QName qname) {
-        super(ownerDoc, qname);
-    }
-
-    public SOAPElement setElementQName(QName newName) throws SOAPException {
-        HeaderElementImpl copy =
-            new HeaderElement1_1Impl((SOAPDocumentImpl) getOwnerDocument(), newName);
-        return replaceElementWithSOAPElement(this,copy);
-    }
-
-    protected NameImpl getActorAttributeName() {
-        return NameImpl.create("actor", null, NameImpl.SOAP11_NAMESPACE);
-    }
-
-    // role not supported by SOAP 1.1
-    protected NameImpl getRoleAttributeName() {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1",
-            new String[] { "Role" });
-        throw new UnsupportedOperationException("Role not supported by SOAP 1.1");
-    }
-
-    protected NameImpl getMustunderstandAttributeName() {
-        return NameImpl.create("mustUnderstand", null, NameImpl.SOAP11_NAMESPACE);
-    }
-
-    // mustUnderstand attribute has literal value "1" or "0"
-    protected String getMustunderstandLiteralValue(boolean mustUnderstand) {
-        return (mustUnderstand == true ? "1" : "0");
-    }
-
-    protected boolean getMustunderstandAttributeValue(String mu) {
-        if ("1".equals(mu) || "true".equalsIgnoreCase(mu))
-            return true;
-        return false;
-    }
-
-    // relay not supported by SOAP 1.1
-    protected NameImpl getRelayAttributeName() {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1",
-            new String[] { "Relay" });
-        throw new UnsupportedOperationException("Relay not supported by SOAP 1.1");
-    }
-
-    protected String getRelayLiteralValue(boolean relayAttr) {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1",
-            new String[] { "Relay" });
-        throw new UnsupportedOperationException("Relay not supported by SOAP 1.1");
-    }
-
-    protected boolean getRelayAttributeValue(String mu) {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1",
-            new String[] { "Relay" });
-        throw new UnsupportedOperationException("Relay not supported by SOAP 1.1");
-    }
-
-    protected String getActorOrRole() {
-        return getActor();
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for ver1_1 pkg
-
-# Error messages
-SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: Operation {0} not supported by SOAP 1.1
-SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: Attribute {0} not supported by SOAP 1.1
-SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: Operation {0} not supported by SOAP 1.1
-SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream does not represent a valid SOAP 1.1 Message
-SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: Cannot add Detail, Detail already exists
-SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: Namespace Warning, Standard Faultcode {0}, should ideally be in SOAP 1.1 Namespace
-SAAJ0307.impl.no.ns.URI=SAAJ0307: Empty/Null NamespaceURI specified for faultCode {0}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_de.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for ver1_1 pkg
-
-# Error messages
-SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: Vorgang {0} von SOAP 1.1 nicht unterst\u00FCtzt
-SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: Attribut {0} von SOAP 1.1 nicht unterst\u00FCtzt
-SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: Vorgang {0} von SOAP 1.1 nicht unterst\u00FCtzt
-SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream stellt keine g\u00FCltige SOAP 1.1-Nachricht dar
-SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: Detail kann nicht hinzugef\u00FCgt werden, Detail ist bereits vorhanden
-SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: Namespace-Warnung, Standard-Faultcode {0}, sollte im Idealfall in SOAP 1.1 Namespace enthalten sein
-SAAJ0307.impl.no.ns.URI=SAAJ0307: Leerer/Null-NamespaceURI f\u00FCr faultCode {0} angegeben
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_es.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for ver1_1 pkg
-
-# Error messages
-SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: la operaci\u00F3n {0} no est\u00E1 soportada en SOAP 1.1
-SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: el atributo {0} no est\u00E1 soportado en SOAP 1.1
-SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: la operaci\u00F3n {0} no est\u00E1 soportada en SOAP 1.1
-SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream no representa un mensaje de SOAP 1.1 v\u00E1lido
-SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: no se puede agregar el detalle. El detalle ya existe
-SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: advertencia de espacio de nombres; lo recomendable es que el c\u00F3digo de fallo est\u00E1ndar {0} est\u00E9 en un espacio de nombres de SOAP 1.1
-SAAJ0307.impl.no.ns.URI=SAAJ0307: se ha especificado un URI de espacio de nombres vac\u00EDo o nulo para el c\u00F3digo de fallo {0}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_fr.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for ver1_1 pkg
-
-# Error messages
-SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301 : op\u00E9ration {0} non prise en charge par SOAP 1.1
-SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302 : attribut {0} non pris en charge par SOAP 1.1
-SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303 : op\u00E9ration {0} non prise en charge par SOAP 1.1
-SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304 : InputStream ne repr\u00E9sente pas un message SOAP 1.1 valide
-SAAJ0305.ver1_2.detail.exists.error=SAAJ0157 : impossible d'ajouter l'\u00E9l\u00E9ment Detail, il existe d\u00E9j\u00E0
-SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306 : avertissement d''espace de noms, Faultcode standard {0}, doit id\u00E9alement \u00EAtre dans l''espace de noms SOAP 1.1
-SAAJ0307.impl.no.ns.URI=SAAJ0307 : NamespaceURI vide/NULL indiqu\u00E9 pour faultCode {0}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_it.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for ver1_1 pkg
-
-# Error messages
-SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: Operazione {0} non supportata da SOAP 1.1
-SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: Attributo {0} non supportato da SOAP 1.1
-SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: Operazione {0} non supportata da SOAP 1.1
-SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream non rappresenta un messaggio SOAP 1.1 valido
-SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: Impossibile aggiungere Detail. Detail esiste gi\u00E0.
-SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: L''avvertenza dello spazio di nomi, codice di errore standard {0}, dovrebbe trovarsi nello spazio di nomi SOAP 1.1
-SAAJ0307.impl.no.ns.URI=SAAJ0307: NamespaceURI nomi vuoto/nullo specificato per faultCode {0}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_ja.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for ver1_1 pkg
-
-# Error messages
-SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: \u64CD\u4F5C{0}\u306FSOAP 1.1\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: \u5C5E\u6027{0}\u306FSOAP 1.1\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: \u64CD\u4F5C{0}\u306FSOAP 1.1\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream\u306F\u6709\u52B9\u306ASOAP 1.1\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u3057\u3066\u3044\u307E\u305B\u3093
-SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: Detail\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002Detail\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059
-SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: \u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u8B66\u544A\u3001\u6A19\u6E96\u306EFaultcode {0}\u3001SOAP 1.1\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u306B\u5B58\u5728\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
-SAAJ0307.impl.no.ns.URI=SAAJ0307: faultCode {0}\u306B\u6307\u5B9A\u3055\u308C\u305FNamespaceURI\u304C\u7A7A/Null\u3067\u3059
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_ko.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for ver1_1 pkg
-
-# Error messages
-SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: SOAP 1.1\uC5D0\uC11C\uB294 {0} \uC791\uC5C5\uC744 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: SOAP 1.1\uC5D0\uC11C\uB294 {0} \uC18D\uC131\uC744 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: SOAP 1.1\uC5D0\uC11C\uB294 {0} \uC791\uC5C5\uC744 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream\uC774 \uC801\uD569\uD55C SOAP 1.1 \uBA54\uC2DC\uC9C0\uB97C \uB098\uD0C0\uB0B4\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: Detail\uC744 \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. Detail\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4.
-SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: \uB124\uC784\uC2A4\uD398\uC774\uC2A4 \uACBD\uACE0\uC785\uB2C8\uB2E4. \uD45C\uC900 Faultcode {0}\uC740(\uB294) SOAP 1.1 \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5D0 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4.
-SAAJ0307.impl.no.ns.URI=SAAJ0307: faultCode {0}\uC5D0 \uB300\uD574 \uBE48/\uB110 NamespaceURI\uAC00 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_pt_BR.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for ver1_1 pkg
-
-# Error messages
-SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: opera\u00E7\u00E3o {0} n\u00E3o suportada por SOAP 1.1
-SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: o atributo {0} n\u00E3o \u00E9 suportado por SOAP 1.1
-SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: opera\u00E7\u00E3o {0} n\u00E3o suportada por SOAP 1.1
-SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: o InputStream n\u00E3o representa uma Mensagem SOAP 1.2 v\u00E1lida
-SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: n\u00E3o \u00E9 poss\u00EDvel adicionar Detalhe, o Detalhe j\u00E1 existe
-SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: Advert\u00EAncia de Namespace, C\u00F3digo de falha Padr\u00E3o {0}, devem estar no Namespace SOAP 1.1
-SAAJ0307.impl.no.ns.URI=SAAJ0307: NamespaceURI Vazio/Nulo especificado para faultCode {0}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_zh_CN.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for ver1_1 pkg
-
-# Error messages
-SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: SOAP 1.1 \u4E0D\u652F\u6301\u64CD\u4F5C{0}
-SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: SOAP 1.1 \u4E0D\u652F\u6301\u5C5E\u6027{0}
-SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: SOAP 1.1 \u4E0D\u652F\u6301\u64CD\u4F5C{0}
-SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream \u4E0D\u8868\u793A\u6709\u6548\u7684 SOAP 1.1 \u6D88\u606F
-SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: \u65E0\u6CD5\u6DFB\u52A0\u8BE6\u7EC6\u4FE1\u606F, \u8BE6\u7EC6\u4FE1\u606F\u5DF2\u5B58\u5728
-SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: \u540D\u79F0\u7A7A\u95F4\u8B66\u544A, \u6807\u51C6\u6545\u969C\u4EE3\u7801 {0} \u6700\u9002\u5408\u5728 SOAP 1.1 \u540D\u79F0\u7A7A\u95F4\u4E2D\u4F7F\u7528
-SAAJ0307.impl.no.ns.URI=SAAJ0307: \u4E3A faultCode {0} \u6307\u5B9A\u7684 NamespaceURI \u5FC5\u987B\u4E3A\u7A7A/\u7A7A\u503C
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_zh_TW.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for ver1_1 pkg
-
-# Error messages
-SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: SOAP 1.1 \u4E0D\u652F\u63F4\u4F5C\u696D {0}
-SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: SOAP 1.1 \u4E0D\u652F\u63F4\u5C6C\u6027 {0}
-SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: SOAP 1.1 \u4E0D\u652F\u63F4\u4F5C\u696D {0}
-SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream \u4E0D\u4EE3\u8868\u6709\u6548\u7684 SOAP 1.1 \u8A0A\u606F
-SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: \u7121\u6CD5\u65B0\u589E Detail, Detail \u5DF2\u7D93\u5B58\u5728
-SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: \u547D\u540D\u7A7A\u9593\u8B66\u544A, \u6A19\u6E96 Faultcode {0}, \u61C9\u8A72\u4F4D\u65BC SOAP 1.1 \u547D\u540D\u7A7A\u9593\u4E2D
-SAAJ0307.impl.no.ns.URI=SAAJ0307: \u70BA faultCode {0} \u6307\u5B9A\u7684\u662F\u7A7A\u7684/\u7A7A\u503C NamespaceURI
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Message1_1Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,131 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.xml.soap.*;
-import javax.xml.stream.XMLStreamReader;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.ContentType;
-import com.sun.xml.internal.messaging.saaj.soap.MessageImpl;
-import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
-
-public class Message1_1Impl extends MessageImpl implements SOAPConstants {
-
-    protected static final Logger log =
-        Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN,
-                         "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings");
-
-    public Message1_1Impl() {
-        super();
-    }
-
-    public Message1_1Impl(boolean isFastInfoset, boolean acceptFastInfoset) {
-        super(isFastInfoset, acceptFastInfoset);
-    }
-
-    public Message1_1Impl(SOAPMessage msg) {
-        super(msg);
-    }
-
-    // unused. can we delete this? - Kohsuke
-    public Message1_1Impl(MimeHeaders headers, InputStream in)
-        throws IOException, SOAPExceptionImpl {
-        super(headers, in);
-    }
-
-    public Message1_1Impl(MimeHeaders headers, ContentType ct, int stat, InputStream in)
-        throws SOAPExceptionImpl {
-        super(headers,ct,stat,in);
-    }
-
-    public Message1_1Impl(MimeHeaders headers, ContentType ct, int stat, XMLStreamReader reader)
-            throws SOAPExceptionImpl {
-            super(headers,ct,stat,reader);
-    }
-
-    public SOAPPart getSOAPPart() {
-        if (soapPartImpl == null) {
-            soapPartImpl = new SOAPPart1_1Impl(this);
-        }
-        return soapPartImpl;
-    }
-
-    protected boolean isCorrectSoapVersion(int contentTypeId) {
-        return (contentTypeId & SOAP1_1_FLAG) != 0;
-    }
-
-    public String getAction() {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
-            new String[] { "Action" });
-        throw new UnsupportedOperationException("Operation not supported by SOAP 1.1");
-    }
-
-    public void setAction(String type) {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
-            new String[] { "Action" });
-        throw new UnsupportedOperationException("Operation not supported by SOAP 1.1");
-    }
-
-    public String getCharset() {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
-            new String[] { "Charset" });
-        throw new UnsupportedOperationException("Operation not supported by SOAP 1.1");
-    }
-
-    public void setCharset(String charset) {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
-            new String[] { "Charset" });
-        throw new UnsupportedOperationException("Operation not supported by SOAP 1.1");
-    }
-
-    protected String getExpectedContentType() {
-        return isFastInfoset ? "application/fastinfoset" : "text/xml";
-    }
-
-   protected String getExpectedAcceptHeader() {
-       String accept = "text/xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2";
-       return acceptFastInfoset ? ("application/fastinfoset, " + accept) : accept;
-   }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPFactory1_1Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
-
-import javax.xml.soap.Detail;
-import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPFault;
-
-import javax.xml.namespace.QName;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPFactoryImpl;
-
-public class SOAPFactory1_1Impl extends SOAPFactoryImpl {
-    protected SOAPDocumentImpl createDocument() {
-        return (new SOAPPart1_1Impl()).getDocument();
-    }
-
-    public Detail createDetail() throws SOAPException {
-        return new Detail1_1Impl(createDocument());
-    }
-
-    public SOAPFault createFault(String reasonText, QName faultCode)
-        throws SOAPException {
-        if (faultCode == null) {
-            throw new IllegalArgumentException("faultCode argument for createFault was passed NULL");
-        }
-        if (reasonText == null) {
-            throw new IllegalArgumentException("reasonText argument for createFault was passed NULL");
-        }
-        Fault1_1Impl fault = new Fault1_1Impl(createDocument(), null);
-        fault.setFaultCode(faultCode);
-        fault.setFaultString(reasonText);
-        return fault;
-    }
-
-    public SOAPFault createFault() throws SOAPException {
-        Fault1_1Impl fault = new Fault1_1Impl(createDocument(), null);
-        fault.setFaultCode(fault.getDefaultFaultCode());
-        fault.setFaultString("Fault string, and possibly fault code, not set");
-        return fault;
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPMessageFactory1_1Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import javax.xml.soap.*;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-import com.sun.xml.internal.messaging.saaj.soap.MessageFactoryImpl;
-import com.sun.xml.internal.messaging.saaj.soap.MessageImpl;
-
-public class SOAPMessageFactory1_1Impl extends MessageFactoryImpl {
-
-    public SOAPMessage createMessage() throws SOAPException {
-        return new Message1_1Impl();
-    }
-
-    public SOAPMessage createMessage(boolean isFastInfoset,
-        boolean acceptFastInfoset) throws SOAPException
-    {
-        return new Message1_1Impl(isFastInfoset, acceptFastInfoset);
-    }
-
-    public SOAPMessage createMessage(MimeHeaders headers, InputStream in) throws IOException, SOAPExceptionImpl {
-
-        if (headers == null) {
-            headers = new MimeHeaders();
-        }
-
-        if (getContentType(headers) == null) {
-            headers.setHeader("Content-Type", SOAPConstants.SOAP_1_1_CONTENT_TYPE);
-        }
-
-        MessageImpl msg = new Message1_1Impl(headers, in);
-        msg.setLazyAttachments(lazyAttachments);
-        return msg;
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPPart1_1Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
-
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.xml.soap.SOAPConstants;
-import javax.xml.soap.SOAPException;
-import javax.xml.transform.Source;
-
-import com.sun.xml.internal.messaging.saaj.soap.*;
-import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl;
-import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
-import com.sun.xml.internal.messaging.saaj.util.XMLDeclarationParser;
-
-public class SOAPPart1_1Impl extends SOAPPartImpl implements SOAPConstants {
-
-    protected static final Logger log =
-        Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN,
-                         "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings");
-
-    public SOAPPart1_1Impl() {
-        super();
-     }
-
-    public SOAPPart1_1Impl(MessageImpl message) {
-        super(message);
-    }
-
-    protected String getContentType() {
-        return isFastInfoset() ? "application/fastinfoset" : "text/xml";
-    }
-
-    protected Envelope createEnvelopeFromSource() throws SOAPException {
-        // Record the presence of xml declaration before the envelope gets
-        // created.
-        XMLDeclarationParser parser = lookForXmlDecl();
-        Source tmp = source;
-        source = null;
-        EnvelopeImpl envelope =
-            (EnvelopeImpl) EnvelopeFactory.createEnvelope(tmp, this);
-
-        if (!envelope.getNamespaceURI().equals(SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE)) {
-            log.severe("SAAJ0304.ver1_1.msg.invalid.SOAP1.1");
-            throw new SOAPException("InputStream does not represent a valid SOAP 1.1 Message");
-        }
-
-        if (parser != null && !omitXmlDecl) {
-            envelope.setOmitXmlDecl("no");
-            envelope.setXmlDecl(parser.getXmlDeclaration());
-            envelope.setCharsetEncoding(parser.getEncoding());
-        }
-        return envelope;
-    }
-
-    protected Envelope createEmptyEnvelope(String prefix)
-        throws SOAPException {
-        return new Envelope1_1Impl(getDocument(), prefix, true, true);
-    }
-
-    protected SOAPPartImpl duplicateType() {
-        return new SOAPPart1_1Impl();
-    }
-
-    @Override
-    public String getSOAPNamespace() {
-        return SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE;
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Body1_2Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,197 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
-
-import java.util.logging.Logger;
-import java.util.Locale;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.*;
-
-import org.w3c.dom.Node;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.BodyImpl;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-
-public class Body1_2Impl extends BodyImpl {
-
-    protected static final Logger log =
-        Logger.getLogger(Body1_2Impl.class.getName(),
-                         "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
-
-    public Body1_2Impl(SOAPDocumentImpl ownerDocument, String prefix) {
-            super(ownerDocument, NameImpl.createBody1_2Name(prefix));
-    }
-
-    protected NameImpl getFaultName(String name) {
-        return NameImpl.createFault1_2Name(name, null);
-    }
-
-    protected SOAPBodyElement createBodyElement(Name name) {
-        return new BodyElement1_2Impl(
-            ((SOAPDocument) getOwnerDocument()).getDocument(),
-            name);
-    }
-    protected SOAPBodyElement createBodyElement(QName name) {
-        return new BodyElement1_2Impl(
-            ((SOAPDocument) getOwnerDocument()).getDocument(),
-            name);
-    }
-
-    protected QName getDefaultFaultCode() {
-        return SOAPConstants.SOAP_RECEIVER_FAULT;
-    }
-
-    public SOAPFault addFault() throws SOAPException {
-        if (hasAnyChildElement()) {
-            log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body");
-            throw new SOAPExceptionImpl(
-                "No other element except Fault allowed in SOAPBody");
-        }
-        return super.addFault();
-    }
-
-    /*
-     * Override setEncodingStyle of ElementImpl to restrict adding encodingStyle
-     * attribute to SOAP Body (SOAP 1.2 spec, part 1, section 5.1.1)
-     */
-    public void setEncodingStyle(String encodingStyle) throws SOAPException {
-        log.severe("SAAJ0401.ver1_2.no.encodingstyle.in.body");
-        throw new SOAPExceptionImpl("encodingStyle attribute cannot appear on Body");
-    }
-
-    /*
-     * Override addAttribute of ElementImpl to restrict adding encodingStyle
-     * attribute to SOAP Body (SOAP 1.2 spec, part 1, section 5.1.1)
-     */
-    public SOAPElement addAttribute(Name name, String value)
-        throws SOAPException {
-        if (name.getLocalName().equals("encodingStyle")
-            && name.getURI().equals(NameImpl.SOAP12_NAMESPACE)) {
-
-            setEncodingStyle(value);
-        }
-        return super.addAttribute(name, value);
-    }
-
-    public SOAPElement addAttribute(QName name, String value)
-        throws SOAPException {
-        if (name.getLocalPart().equals("encodingStyle")
-            && name.getNamespaceURI().equals(NameImpl.SOAP12_NAMESPACE)) {
-
-            setEncodingStyle(value);
-        }
-        return super.addAttribute(name, value);
-    }
-
-    protected boolean isFault(SOAPElement child) {
-        return (child.getElementName().getURI().equals(
-                    SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE) &&
-                child.getElementName().getLocalName().equals(
-                    "Fault"));
-    }
-
-    protected SOAPFault createFaultElement() {
-        return new Fault1_2Impl(
-            ((SOAPDocument) getOwnerDocument()).getDocument(), getPrefix());
-    }
-
-    /*
-     * section 5.4 of SOAP1.2 candidate recommendation says that a
-     * SOAP message MUST contain a single Fault element as the only
-     * child element of the SOAP Body.
-     */
-    public SOAPBodyElement addBodyElement(Name name) throws SOAPException {
-        if (hasFault()) {
-            log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body");
-            throw new SOAPExceptionImpl(
-                "No other element except Fault allowed in SOAPBody");
-        }
-        return super.addBodyElement(name);
-    }
-
-    public SOAPBodyElement addBodyElement(QName name) throws SOAPException {
-        if (hasFault()) {
-            log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body");
-            throw new SOAPExceptionImpl(
-                "No other element except Fault allowed in SOAPBody");
-        }
-        return super.addBodyElement(name);
-    }
-
-    protected SOAPElement addElement(Name name) throws SOAPException {
-        if (hasFault()) {
-            log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body");
-            throw new SOAPExceptionImpl(
-                "No other element except Fault allowed in SOAPBody");
-        }
-        return super.addElement(name);
-    }
-
-    protected SOAPElement addElement(QName name) throws SOAPException {
-        if (hasFault()) {
-            log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body");
-            throw new SOAPExceptionImpl(
-                "No other element except Fault allowed in SOAPBody");
-        }
-        return super.addElement(name);
-    }
-
-    public SOAPElement addChildElement(Name name) throws SOAPException {
-        if (hasFault()) {
-            log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body");
-            throw new SOAPExceptionImpl(
-                "No other element except Fault allowed in SOAPBody");
-        }
-        return super.addChildElement(name);
-    }
-
-    public SOAPElement addChildElement(QName name) throws SOAPException {
-        if (hasFault()) {
-            log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body");
-            throw new SOAPExceptionImpl(
-                "No other element except Fault allowed in SOAPBody");
-        }
-        return super.addChildElement(name);
-    }
-
-    private boolean hasAnyChildElement() {
-        Node currentNode = getFirstChild();
-        while (currentNode != null) {
-            if (currentNode.getNodeType() == Node.ELEMENT_NODE)
-                return true;
-            currentNode = currentNode.getNextSibling();
-        }
-        return false;
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/BodyElement1_2Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.Name;
-import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPElement;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.BodyElementImpl;
-
-public class BodyElement1_2Impl extends BodyElementImpl {
-
-    public BodyElement1_2Impl(SOAPDocumentImpl ownerDoc, Name qname) {
-        super(ownerDoc, qname);
-    }
-
-    public BodyElement1_2Impl(SOAPDocumentImpl ownerDoc, QName qname) {
-        super(ownerDoc, qname);
-    }
-
-    public SOAPElement setElementQName(QName newName) throws SOAPException {
-        BodyElementImpl copy =
-            new BodyElement1_2Impl((SOAPDocumentImpl) getOwnerDocument(), newName);
-        return replaceElementWithSOAPElement(this,copy);
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Detail1_2Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
-
-import java.util.logging.Logger;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.*;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.DetailImpl;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-
-public class Detail1_2Impl extends DetailImpl {
-
-    protected static final Logger log =
-        Logger.getLogger(Detail1_2Impl.class.getName(),
-                         "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
-
-    public Detail1_2Impl(SOAPDocumentImpl ownerDocument, String prefix) {
-        super(ownerDocument, NameImpl.createSOAP12Name("Detail", prefix));
-    }
-
-    public Detail1_2Impl(SOAPDocumentImpl ownerDocument) {
-        super(ownerDocument, NameImpl.createSOAP12Name("Detail"));
-    }
-
-    protected DetailEntry createDetailEntry(Name name) {
-        return new DetailEntry1_2Impl(
-            ((SOAPDocument) getOwnerDocument()).getDocument(),
-            name);
-    }
-
-    protected DetailEntry createDetailEntry(QName name) {
-        return new DetailEntry1_2Impl(
-            ((SOAPDocument) getOwnerDocument()).getDocument(),
-            name);
-    }
-
-    /*
-     * Override setEncodingStyle of ElementImpl to restrict adding encodingStyle
-     * attribute to SOAP Detail (SOAP 1.2 spec, part 1, section 5.1.1)
-     */
-    public void setEncodingStyle(String encodingStyle) throws SOAPException {
-        log.severe("SAAJ0403.ver1_2.no.encodingStyle.in.detail");
-        throw new SOAPExceptionImpl("EncodingStyle attribute cannot appear in Detail");
-    }
-
-    public SOAPElement addAttribute(Name name, String value)
-        throws SOAPException {
-        if (name.getLocalName().equals("encodingStyle")
-            && name.getURI().equals(NameImpl.SOAP12_NAMESPACE)) {
-            setEncodingStyle(value);
-        }
-        return super.addAttribute(name, value);
-    }
-
-    public SOAPElement addAttribute(QName name, String value)
-        throws SOAPException {
-        if (name.getLocalPart().equals("encodingStyle")
-            && name.getNamespaceURI().equals(NameImpl.SOAP12_NAMESPACE)) {
-            setEncodingStyle(value);
-        }
-        return super.addAttribute(name, value);
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/DetailEntry1_2Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.Name;
-import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPElement;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.DetailEntryImpl;
-
-public class DetailEntry1_2Impl extends DetailEntryImpl {
-
-    public DetailEntry1_2Impl(SOAPDocumentImpl ownerDoc, Name qname) {
-        super(ownerDoc, qname);
-    }
-
-    public DetailEntry1_2Impl(SOAPDocumentImpl ownerDoc, QName qname) {
-        super(ownerDoc, qname);
-    }
-
-    public SOAPElement setElementQName(QName newName) throws SOAPException {
-        DetailEntryImpl copy =
-            new DetailEntry1_2Impl((SOAPDocumentImpl) getOwnerDocument(), newName);
-        return replaceElementWithSOAPElement(this,copy);
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Envelope1_2Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
-
-import java.util.logging.Logger;
-import java.util.logging.Level;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.*;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-
-public class Envelope1_2Impl extends EnvelopeImpl {
-
-    protected static final Logger log =
-        Logger.getLogger(Envelope1_2Impl.class.getName(),
-                         "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
-
-    public Envelope1_2Impl(SOAPDocumentImpl ownerDoc, String prefix) {
-        super(ownerDoc, NameImpl.createEnvelope1_2Name(prefix));
-    }
-
-    public Envelope1_2Impl(
-        SOAPDocumentImpl ownerDoc,
-        String prefix,
-        boolean createHeader,
-        boolean createBody)
-        throws SOAPException {
-        super(
-            ownerDoc,
-            NameImpl.createEnvelope1_2Name(prefix),
-            createHeader,
-            createBody);
-    }
-
-    protected NameImpl getBodyName(String prefix) {
-        return NameImpl.createBody1_2Name(prefix);
-    }
-
-    protected NameImpl getHeaderName(String prefix) {
-        return NameImpl.createHeader1_2Name(prefix);
-    }
-
-    /*
-     * Override setEncodingStyle of ElementImpl to restrict adding encodingStyle
-     * attribute to SOAP Envelope (SOAP 1.2 spec, part 1, section 5.1.1)
-     */
-    public void setEncodingStyle(String encodingStyle) throws SOAPException {
-        log.severe("SAAJ0404.ver1_2.no.encodingStyle.in.envelope");
-        throw new SOAPExceptionImpl("encodingStyle attribute cannot appear on Envelope");
-    }
-
-    /*
-     * Override addAttribute of ElementImpl to restrict adding encodingStyle
-     * attribute to SOAP Envelope (SOAP 1.2 spec, part 1, section 5.1.1)
-     */
-    public SOAPElement addAttribute(Name name, String value)
-        throws SOAPException {
-        if (name.getLocalName().equals("encodingStyle")
-            && name.getURI().equals(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE)) {
-            setEncodingStyle(value);
-        }
-        return super.addAttribute(name, value);
-    }
-
-    public SOAPElement addAttribute(QName name, String value)
-        throws SOAPException {
-        if (name.getLocalPart().equals("encodingStyle")
-            && name.getNamespaceURI().equals(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE)) {
-            setEncodingStyle(value);
-        }
-        return super.addAttribute(name, value);
-    }
-
-
-    /*
-     * Override addChildElement method to ensure that no element
-     * is added after body in SOAP 1.2.
-     */
-    public SOAPElement addChildElement(Name name) throws SOAPException {
-        // check if body already exists
-        if (getBody() != null) {
-            log.severe("SAAJ0405.ver1_2.body.must.last.in.envelope");
-            throw new SOAPExceptionImpl(
-                "Body must be the last element in" + " SOAP Envelope");
-        }
-        return super.addChildElement(name);
-    }
-
-    public SOAPElement addChildElement(QName name) throws SOAPException {
-        // check if body already exists
-        if (getBody() != null) {
-            log.severe("SAAJ0405.ver1_2.body.must.last.in.envelope");
-            throw new SOAPExceptionImpl(
-                "Body must be the last element in" + " SOAP Envelope");
-        }
-        return super.addChildElement(name);
-    }
-
-
-    /*
-     * Ideally we should be overriding other addChildElement() methods as well
-     * but we are not adding them here since internally all those call the
-     * method addChildElement(Name name).
-     * In future, if this behaviour changes, then we would need to override
-     * all the rest of them as well.
-     *
-     */
-
-    public SOAPElement addTextNode(String text) throws SOAPException {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0416.ver1_2.adding.text.not.legal",
-            getElementQName());
-        throw new SOAPExceptionImpl("Adding text to SOAP 1.2 Envelope is not legal");
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Fault1_2Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,562 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
-
-import java.util.*;
-import java.util.logging.Logger;
-import java.util.logging.Level;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.*;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.*;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
-
-
-public class Fault1_2Impl extends FaultImpl {
-
-    protected static final Logger log =
-        Logger.getLogger(
-            LogDomainConstants.SOAP_VER1_2_DOMAIN,
-            "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
-
-    private static final QName textName =
-        new QName(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE, "Text");
-    private final QName valueName =
-        new QName(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE, "Value", getPrefix());
-    private final QName subcodeName =
-        new QName(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE, "Subcode", getPrefix());
-
-    private SOAPElement innermostSubCodeElement = null;
-
-    public Fault1_2Impl(SOAPDocumentImpl ownerDoc, String name, String prefix) {
-        super(ownerDoc, NameImpl.createFault1_2Name(name, prefix));
-    }
-
-    public Fault1_2Impl(SOAPDocumentImpl ownerDocument, String prefix) {
-        super(ownerDocument, NameImpl.createFault1_2Name(null, prefix));
-    }
-
-    protected NameImpl getDetailName() {
-        return NameImpl.createSOAP12Name("Detail", getPrefix());
-    }
-
-    protected NameImpl getFaultCodeName() {
-        return NameImpl.createSOAP12Name("Code", getPrefix());
-    }
-
-    protected NameImpl getFaultStringName() {
-        return getFaultReasonName();
-    }
-
-    protected NameImpl getFaultActorName() {
-        return getFaultRoleName();
-    }
-
-    private  NameImpl getFaultRoleName() {
-        return NameImpl.createSOAP12Name("Role", getPrefix());
-    }
-
-    private  NameImpl getFaultReasonName() {
-        return NameImpl.createSOAP12Name("Reason", getPrefix());
-    }
-
-    private  NameImpl getFaultReasonTextName() {
-        return NameImpl.createSOAP12Name("Text", getPrefix());
-    }
-
-    private  NameImpl getFaultNodeName() {
-        return NameImpl.createSOAP12Name("Node", getPrefix());
-    }
-
-    private static NameImpl getXmlLangName() {
-        return NameImpl.createXmlName("lang");
-    }
-
-    protected DetailImpl createDetail() {
-        return new Detail1_2Impl(
-                       ((SOAPDocument) getOwnerDocument()).getDocument());
-    }
-
-    protected FaultElementImpl createSOAPFaultElement(String localName) {
-        return new FaultElement1_2Impl(
-                       ((SOAPDocument) getOwnerDocument()).getDocument(),
-                       localName);
-    }
-
-    protected void checkIfStandardFaultCode(String faultCode, String uri)
-        throws SOAPException {
-        QName qname = new QName(uri, faultCode);
-        if (SOAPConstants.SOAP_DATAENCODINGUNKNOWN_FAULT.equals(qname) ||
-            SOAPConstants.SOAP_MUSTUNDERSTAND_FAULT.equals(qname) ||
-            SOAPConstants.SOAP_RECEIVER_FAULT.equals(qname) ||
-            SOAPConstants.SOAP_SENDER_FAULT.equals(qname) ||
-            SOAPConstants.SOAP_VERSIONMISMATCH_FAULT.equals(qname))
-            return;
-        log.log(
-            Level.SEVERE,
-            "SAAJ0435.ver1_2.code.not.standard",
-            qname);
-        throw new SOAPExceptionImpl(qname + " is not a standard Code value");
-    }
-
-    protected void finallySetFaultCode(String faultcode) throws SOAPException {
-        SOAPElement value = this.faultCodeElement.addChildElement(valueName);
-        value.addTextNode(faultcode);
-    }
-
-    private void findReasonElement() {
-        findFaultStringElement();
-    }
-
-    public Iterator getFaultReasonTexts() throws SOAPException {
-        // Fault Reason has similar semantics as faultstring
-        if (this.faultStringElement == null)
-            findReasonElement();
-        Iterator eachTextElement =
-            this.faultStringElement.getChildElements(textName);
-        List texts = new ArrayList();
-        while (eachTextElement.hasNext()) {
-            SOAPElement textElement = (SOAPElement) eachTextElement.next();
-            Locale thisLocale = getLocale(textElement);
-            if (thisLocale == null) {
-                log.severe("SAAJ0431.ver1_2.xml.lang.missing");
-                throw new SOAPExceptionImpl("\"xml:lang\" attribute is not present on the Text element");
-            }
-            texts.add(textElement.getValue());
-        }
-        if (texts.isEmpty()) {
-            log.severe("SAAJ0434.ver1_2.text.element.not.present");
-            throw new SOAPExceptionImpl("env:Text must be present inside env:Reason");
-        }
-        return texts.iterator();
-    }
-
-    public void addFaultReasonText(String text, java.util.Locale locale)
-        throws SOAPException {
-
-        if (locale == null) {
-            log.severe("SAAJ0430.ver1_2.locale.required");
-            throw new SOAPException("locale is required and must not be null");
-        }
-
-        // Fault Reason has similar semantics as faultstring
-        if (this.faultStringElement == null)
-            findReasonElement();
-        SOAPElement reasonText;
-
-        if (this.faultStringElement == null) {
-            this.faultStringElement = addSOAPFaultElement("Reason");
-            reasonText =
-                this.faultStringElement.addChildElement(
-                    getFaultReasonTextName());
-        } else {
-            removeDefaultFaultString();
-            reasonText = getFaultReasonTextElement(locale);
-            if (reasonText != null) {
-                reasonText.removeContents();
-            } else {
-                reasonText =
-                    this.faultStringElement.addChildElement(
-                        getFaultReasonTextName());
-            }
-        }
-
-        String xmlLang = localeToXmlLang(locale);
-        reasonText.addAttribute(getXmlLangName(), xmlLang);
-        reasonText.addTextNode(text);
-    }
-
-    private void removeDefaultFaultString() throws SOAPException {
-        SOAPElement reasonText = getFaultReasonTextElement(Locale.getDefault());
-        if (reasonText != null) {
-            String defaultFaultString =
-                "Fault string, and possibly fault code, not set";
-            if (defaultFaultString.equals(reasonText.getValue())) {
-                reasonText.detachNode();
-            }
-        }
-    }
-
-    public String getFaultReasonText(Locale locale) throws SOAPException {
-
-        if (locale == null)
-            return null;
-
-        // Fault Reason has similar semantics as faultstring
-        if (this.faultStringElement == null)
-            findReasonElement();
-
-        if (this.faultStringElement != null) {
-            SOAPElement textElement = getFaultReasonTextElement(locale);
-            if (textElement != null) {
-                textElement.normalize();
-                return textElement.getFirstChild().getNodeValue();
-            }
-        }
-
-        return null;
-    }
-
-    public Iterator getFaultReasonLocales() throws SOAPException {
-        // Fault Reason has similar semantics as faultstring
-        if (this.faultStringElement == null)
-            findReasonElement();
-        Iterator eachTextElement =
-            this.faultStringElement.getChildElements(textName);
-        List localeSet = new ArrayList();
-        while (eachTextElement.hasNext()) {
-            SOAPElement textElement = (SOAPElement) eachTextElement.next();
-            Locale thisLocale = getLocale(textElement);
-            if (thisLocale == null) {
-                log.severe("SAAJ0431.ver1_2.xml.lang.missing");
-                throw new SOAPExceptionImpl("\"xml:lang\" attribute is not present on the Text element");
-            }
-            localeSet.add(thisLocale);
-        }
-        if (localeSet.isEmpty()) {
-            log.severe("SAAJ0434.ver1_2.text.element.not.present");
-            throw new SOAPExceptionImpl("env:Text elements with mandatory xml:lang attributes must be present inside env:Reason");
-        }
-        return localeSet.iterator();
-    }
-
-    public Locale getFaultStringLocale() {
-        Locale locale = null;
-        try {
-            locale = (Locale) getFaultReasonLocales().next();
-        } catch (SOAPException e) {}
-        return locale;
-    }
-
-    /*
-     * This method assumes that locale and faultStringElement are non-null
-     */
-    private SOAPElement getFaultReasonTextElement(Locale locale)
-        throws SOAPException {
-
-        // Fault Reason has similar semantics as faultstring
-        Iterator eachTextElement =
-            this.faultStringElement.getChildElements(textName);
-        while (eachTextElement.hasNext()) {
-            SOAPElement textElement = (SOAPElement) eachTextElement.next();
-            Locale thisLocale = getLocale(textElement);
-            if (thisLocale == null) {
-                log.severe("SAAJ0431.ver1_2.xml.lang.missing");
-                throw new SOAPExceptionImpl("\"xml:lang\" attribute is not present on the Text element");
-            }
-            if (thisLocale.equals(locale)) {
-                return textElement;
-            }
-        }
-        return null;
-    }
-
-    public String getFaultNode() {
-        SOAPElement faultNode = findAndConvertChildElement(getFaultNodeName());
-        if (faultNode == null) {
-            return null;
-        }
-        return faultNode.getValue();
-    }
-
-    public void setFaultNode(String uri) throws SOAPException {
-        SOAPElement faultNode = findAndConvertChildElement(getFaultNodeName());
-        if (faultNode != null) {
-            faultNode.detachNode();
-        }
-        faultNode = createSOAPFaultElement(getFaultNodeName());
-        faultNode = faultNode.addTextNode(uri);
-        if (getFaultRole() != null) {
-            insertBefore(faultNode, this.faultActorElement);
-            return;
-        }
-        if (hasDetail()) {
-            insertBefore(faultNode, this.detail);
-            return;
-        }
-        addNode(faultNode);
-    }
-
-    public String getFaultRole() {
-        return getFaultActor();
-    }
-
-    public void setFaultRole(String uri) throws SOAPException {
-        if (this.faultActorElement == null)
-            findFaultActorElement();
-        if (this.faultActorElement != null)
-            this.faultActorElement.detachNode();
-        this.faultActorElement =
-            createSOAPFaultElement(getFaultActorName());
-        this.faultActorElement.addTextNode(uri);
-        if (hasDetail()) {
-            insertBefore(this.faultActorElement, this.detail);
-            return;
-        }
-        addNode(this.faultActorElement);
-    }
-
-    public String getFaultCode() {
-        if (this.faultCodeElement == null)
-            findFaultCodeElement();
-        Iterator codeValues =
-            this.faultCodeElement.getChildElements(valueName);
-        return ((SOAPElement) codeValues.next()).getValue();
-    }
-
-    public QName getFaultCodeAsQName() {
-        String faultcode = getFaultCode();
-        if (faultcode == null) {
-            return null;
-        }
-        if (this.faultCodeElement == null)
-            findFaultCodeElement();
-        Iterator valueElements =
-            this.faultCodeElement.getChildElements(valueName);
-        return convertCodeToQName(
-            faultcode,
-            (SOAPElement) valueElements.next());
-    }
-
-    public Name getFaultCodeAsName() {
-        String faultcode = getFaultCode();
-        if (faultcode == null) {
-            return null;
-        }
-        if (this.faultCodeElement == null)
-            findFaultCodeElement();
-        Iterator valueElements =
-            this.faultCodeElement.getChildElements(valueName);
-        return NameImpl.convertToName(
-            convertCodeToQName(
-                faultcode,
-                (SOAPElement) valueElements.next()));
-    }
-
-    public String getFaultString() {
-        String reason = null;
-        try {
-            //reason = getFaultReasonText(Locale.getDefault());
-            //if (reason == null)
-            reason = (String) getFaultReasonTexts().next();
-        } catch (SOAPException e) {}
-        return reason;
-    }
-
-    public void setFaultString(String faultString) throws SOAPException {
-        addFaultReasonText(faultString, Locale.getDefault());
-    }
-
-    public void setFaultString(
-        String faultString,
-        Locale locale)
-        throws SOAPException {
-        addFaultReasonText(faultString, locale);
-    }
-
-    public void appendFaultSubcode(QName subcode) throws SOAPException {
-        if (subcode == null) {
-            return;
-        }
-        if (subcode.getNamespaceURI() == null ||
-            "".equals(subcode.getNamespaceURI())) {
-
-            log.severe("SAAJ0432.ver1_2.subcode.not.ns.qualified");
-            throw new SOAPExceptionImpl("A Subcode must be namespace-qualified");
-        }
-        if (innermostSubCodeElement == null) {
-            if (faultCodeElement == null)
-                findFaultCodeElement();
-            innermostSubCodeElement = faultCodeElement;
-        }
-        String prefix = null;
-        if (subcode.getPrefix() == null || "".equals(subcode.getPrefix())) {
-            prefix =
-                ((ElementImpl) innermostSubCodeElement).getNamespacePrefix(
-                    subcode.getNamespaceURI());
-        } else
-            prefix = subcode.getPrefix();
-        if (prefix == null || "".equals(prefix)) {
-            prefix = "ns1";
-        }
-        innermostSubCodeElement =
-            innermostSubCodeElement.addChildElement(subcodeName);
-        SOAPElement subcodeValueElement =
-            innermostSubCodeElement.addChildElement(valueName);
-        ((ElementImpl) subcodeValueElement).ensureNamespaceIsDeclared(
-            prefix,
-            subcode.getNamespaceURI());
-        subcodeValueElement.addTextNode(prefix + ":" + subcode.getLocalPart());
-    }
-
-    public void removeAllFaultSubcodes() {
-        if (this.faultCodeElement == null)
-            findFaultCodeElement();
-        Iterator subcodeElements =
-            this.faultCodeElement.getChildElements(subcodeName);
-        if (subcodeElements.hasNext()) {
-            SOAPElement subcode = (SOAPElement) subcodeElements.next();
-            subcode.detachNode();
-        }
-    }
-
-    public Iterator getFaultSubcodes() {
-        if (this.faultCodeElement == null)
-            findFaultCodeElement();
-        final List subcodeList = new ArrayList();
-        SOAPElement currentCodeElement = this.faultCodeElement;
-        Iterator subcodeElements =
-            currentCodeElement.getChildElements(subcodeName);
-        while (subcodeElements.hasNext()) {
-            currentCodeElement = (ElementImpl) subcodeElements.next();
-            Iterator valueElements =
-                currentCodeElement.getChildElements(valueName);
-            SOAPElement valueElement = (SOAPElement) valueElements.next();
-            String code = valueElement.getValue();
-            subcodeList.add(convertCodeToQName(code, valueElement));
-            subcodeElements = currentCodeElement.getChildElements(subcodeName);
-        }
-        //return subcodeList.iterator();
-        return new Iterator() {
-            Iterator subCodeIter = subcodeList.iterator();
-
-            public boolean hasNext() {
-                return subCodeIter.hasNext();
-            }
-
-            public Object next() {
-                return subCodeIter.next();
-            }
-
-            public void remove() {
-                throw new UnsupportedOperationException(
-                    "Method remove() not supported on SubCodes Iterator");
-            }
-        };
-    }
-
-    private static Locale getLocale(SOAPElement reasonText) {
-        return xmlLangToLocale(reasonText.getAttributeValue(getXmlLangName()));
-    }
-
-    /*
-     * Override setEncodingStyle of ElementImpl to restrict adding encodingStyle
-     * attribute to SOAP Fault (SOAP 1.2 spec, part 1, section 5.1.1)
-     */
-    public void setEncodingStyle(String encodingStyle) throws SOAPException {
-        log.severe("SAAJ0407.ver1_2.no.encodingStyle.in.fault");
-        throw new SOAPExceptionImpl("encodingStyle attribute cannot appear on Fault");
-    }
-
-    public SOAPElement addAttribute(Name name, String value)
-        throws SOAPException {
-        if (name.getLocalName().equals("encodingStyle")
-            && name.getURI().equals(NameImpl.SOAP12_NAMESPACE)) {
-            setEncodingStyle(value);
-        }
-        return super.addAttribute(name, value);
-    }
-
-    public SOAPElement addAttribute(QName name, String value)
-        throws SOAPException {
-        if (name.getLocalPart().equals("encodingStyle")
-            && name.getNamespaceURI().equals(NameImpl.SOAP12_NAMESPACE)) {
-            setEncodingStyle(value);
-        }
-        return super.addAttribute(name, value);
-    }
-
-    public SOAPElement addTextNode(String text) throws SOAPException {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0416.ver1_2.adding.text.not.legal",
-            getElementQName());
-        throw new SOAPExceptionImpl("Adding text to SOAP 1.2 Fault is not legal");
-    }
-
-    public SOAPElement addChildElement(SOAPElement element)
-        throws SOAPException {
-        String localName = element.getLocalName();
-        if ("Detail".equalsIgnoreCase(localName)) {
-            if (hasDetail()) {
-                log.severe("SAAJ0436.ver1_2.detail.exists.error");
-                throw new SOAPExceptionImpl("Cannot add Detail, Detail already exists");
-            }
-            String uri = element.getElementQName().getNamespaceURI();
-            if (!uri.equals(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE)) {
-                log.severe("SAAJ0437.ver1_2.version.mismatch.error");
-                throw new SOAPExceptionImpl("Cannot add Detail, Incorrect SOAP version specified for Detail element");
-            }
-        }
-        if (element instanceof Detail1_2Impl) {
-            ElementImpl importedElement = (ElementImpl) importElement(element);
-            addNode(importedElement);
-            return convertToSoapElement(importedElement);
-        } else
-            return super.addChildElement(element);
-    }
-
-    protected boolean isStandardFaultElement(String localName) {
-        if (localName.equalsIgnoreCase("code") ||
-            localName.equalsIgnoreCase("reason") ||
-            localName.equalsIgnoreCase("node") ||
-            localName.equalsIgnoreCase("role") ||
-            localName.equalsIgnoreCase("detail")) {
-            return true;
-        }
-        return false;
-    }
-
-    protected QName getDefaultFaultCode() {
-        return SOAPConstants.SOAP_SENDER_FAULT;
-    }
-
-     protected FaultElementImpl createSOAPFaultElement(QName qname) {
-         return new FaultElement1_2Impl(
-                       ((SOAPDocument) getOwnerDocument()).getDocument(),
-                       qname);
-    }
-
-    protected FaultElementImpl createSOAPFaultElement(Name qname) {
-         return new FaultElement1_2Impl(
-                       ((SOAPDocument) getOwnerDocument()).getDocument(),
-                       (NameImpl)qname);
-    }
-
-     public void setFaultActor(String faultActor) throws SOAPException {
-        this.setFaultRole(faultActor);
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/FaultElement1_2Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPElement;
-import javax.xml.soap.Name;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.FaultElementImpl;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-
-public class FaultElement1_2Impl extends FaultElementImpl {
-
-    public FaultElement1_2Impl(SOAPDocumentImpl ownerDoc, NameImpl qname) {
-        super(ownerDoc, qname);
-    }
-
-    public FaultElement1_2Impl(SOAPDocumentImpl ownerDoc, QName qname) {
-        super(ownerDoc, qname);
-    }
-
-    public FaultElement1_2Impl(SOAPDocumentImpl ownerDoc, String localName) {
-        super(ownerDoc, NameImpl.createSOAP12Name(localName));
-    }
-
-    protected boolean isStandardFaultElement() {
-        String localName = elementQName.getLocalPart();
-        if (localName.equalsIgnoreCase("code") ||
-            localName.equalsIgnoreCase("reason") ||
-            localName.equalsIgnoreCase("node") ||
-            localName.equalsIgnoreCase("role")) {
-            return true;
-        }
-        return false;
-    }
-
-    public SOAPElement setElementQName(QName newName) throws SOAPException {
-        if (!isStandardFaultElement()) {
-            FaultElement1_2Impl copy =
-                new FaultElement1_2Impl((SOAPDocumentImpl) getOwnerDocument(), newName);
-            return replaceElementWithSOAPElement(this,copy);
-        } else {
-            return super.setElementQName(newName);
-        }
-    }
-
-    public void setEncodingStyle(String encodingStyle) throws SOAPException {
-        log.severe("SAAJ0408.ver1_2.no.encodingStyle.in.fault.child");
-        throw new SOAPExceptionImpl("encodingStyle attribute cannot appear on a Fault child element");
-    }
-
-    public SOAPElement addAttribute(Name name, String value)
-        throws SOAPException {
-        if (name.getLocalName().equals("encodingStyle")
-            && name.getURI().equals(NameImpl.SOAP12_NAMESPACE)) {
-            setEncodingStyle(value);
-        }
-        return super.addAttribute(name, value);
-    }
-
-    public SOAPElement addAttribute(QName name, String value)
-        throws SOAPException {
-        if (name.getLocalPart().equals("encodingStyle")
-            && name.getNamespaceURI().equals(NameImpl.SOAP12_NAMESPACE)) {
-            setEncodingStyle(value);
-        }
-        return super.addAttribute(name, value);
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Header1_2Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,159 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
-
-import java.util.List;
-import java.util.Iterator;
-import java.util.logging.Logger;
-import java.util.logging.Level;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.*;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.HeaderElementImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.HeaderImpl;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
-
-
-public class Header1_2Impl extends HeaderImpl {
-
-    protected static final Logger log =
-        Logger.getLogger(
-            LogDomainConstants.SOAP_VER1_2_DOMAIN,
-            "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
-
-    public Header1_2Impl(SOAPDocumentImpl ownerDocument, String prefix) {
-        super(ownerDocument, NameImpl.createHeader1_2Name(prefix));
-    }
-
-    protected NameImpl getNotUnderstoodName() {
-        return NameImpl.createNotUnderstood1_2Name(null);
-    }
-
-    protected NameImpl getUpgradeName() {
-        return NameImpl.createUpgrade1_2Name(null);
-    }
-
-    protected NameImpl getSupportedEnvelopeName() {
-        return NameImpl.createSupportedEnvelope1_2Name(null);
-    }
-
-    public SOAPHeaderElement addNotUnderstoodHeaderElement(final QName sourceName)
-        throws SOAPException {
-
-        if (sourceName == null) {
-            log.severe("SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader");
-            throw new SOAPException("Cannot pass NULL to addNotUnderstoodHeaderElement");
-        }
-        if ("".equals(sourceName.getNamespaceURI())) {
-            log.severe("SAAJ0417.ver1_2.qname.not.ns.qualified");
-            throw new SOAPException("The qname passed to addNotUnderstoodHeaderElement must be namespace-qualified");
-        }
-        String prefix = sourceName.getPrefix();
-        if ("".equals(prefix)) {
-            prefix = "ns1";
-        }
-        Name notunderstoodName = getNotUnderstoodName();
-        SOAPHeaderElement notunderstoodHeaderElement =
-            (SOAPHeaderElement) addChildElement(notunderstoodName);
-        notunderstoodHeaderElement.addAttribute(
-            NameImpl.createFromUnqualifiedName("qname"),
-            getQualifiedName(
-                new QName(
-                    sourceName.getNamespaceURI(),
-                    sourceName.getLocalPart(),
-                    prefix)));
-        notunderstoodHeaderElement.addNamespaceDeclaration(
-            prefix,
-            sourceName.getNamespaceURI());
-        return notunderstoodHeaderElement;
-    }
-
-    public SOAPElement addTextNode(String text) throws SOAPException {
-        log.log(
-            Level.SEVERE,
-            "SAAJ0416.ver1_2.adding.text.not.legal",
-            getElementQName());
-        throw new SOAPExceptionImpl("Adding text to SOAP 1.2 Header is not legal");
-    }
-
-    protected SOAPHeaderElement createHeaderElement(Name name)
-        throws SOAPException {
-        String uri = name.getURI();
-        if (uri == null || uri.equals("")) {
-            log.severe("SAAJ0413.ver1_2.header.elems.must.be.ns.qualified");
-            throw new SOAPExceptionImpl("SOAP 1.2 header elements must be namespace qualified");
-        }
-        return new HeaderElement1_2Impl(
-            ((SOAPDocument) getOwnerDocument()).getDocument(),
-            name);
-    }
-
-    protected SOAPHeaderElement createHeaderElement(QName name)
-        throws SOAPException {
-        String uri = name.getNamespaceURI();
-        if (uri == null || uri.equals("")) {
-            log.severe("SAAJ0413.ver1_2.header.elems.must.be.ns.qualified");
-            throw new SOAPExceptionImpl("SOAP 1.2 header elements must be namespace qualified");
-        }
-        return new HeaderElement1_2Impl(
-            ((SOAPDocument) getOwnerDocument()).getDocument(),
-            name);
-    }
-
-    public void setEncodingStyle(String encodingStyle) throws SOAPException {
-        log.severe("SAAJ0409.ver1_2.no.encodingstyle.in.header");
-        throw new SOAPExceptionImpl("encodingStyle attribute cannot appear on Header");
-    }
-
-    public SOAPElement addAttribute(Name name, String value)
-        throws SOAPException {
-        if (name.getLocalName().equals("encodingStyle")
-            && name.getURI().equals(NameImpl.SOAP12_NAMESPACE)) {
-
-            setEncodingStyle(value);
-        }
-        return super.addAttribute(name, value);
-    }
-
-    public SOAPElement addAttribute(QName name, String value)
-        throws SOAPException {
-        if (name.getLocalPart().equals("encodingStyle")
-            && name.getNamespaceURI().equals(NameImpl.SOAP12_NAMESPACE)) {
-
-            setEncodingStyle(value);
-        }
-        return super.addAttribute(name, value);
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/HeaderElement1_2Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
-
-import java.util.logging.Logger;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.Name;
-import javax.xml.soap.SOAPElement;
-import javax.xml.soap.SOAPException;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.HeaderElementImpl;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-
-public class HeaderElement1_2Impl extends HeaderElementImpl {
-
-    private static final Logger log =
-        Logger.getLogger(HeaderElement1_2Impl.class.getName(),
-                         "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
-
-    public HeaderElement1_2Impl(SOAPDocumentImpl ownerDoc, Name qname) {
-        super(ownerDoc, qname);
-    }
-    public HeaderElement1_2Impl(SOAPDocumentImpl ownerDoc, QName qname) {
-        super(ownerDoc, qname);
-    }
-
-    public SOAPElement setElementQName(QName newName) throws SOAPException {
-        HeaderElementImpl copy =
-            new HeaderElement1_2Impl((SOAPDocumentImpl)getOwnerDocument(), newName);
-        return replaceElementWithSOAPElement(this,copy);
-    }
-
-    protected NameImpl getRoleAttributeName() {
-        return NameImpl.create("role", null, NameImpl.SOAP12_NAMESPACE);
-    }
-
-    // Actor equivalent to Role in SOAP 1.2
-    protected NameImpl getActorAttributeName() {
-        return getRoleAttributeName();
-    }
-
-    protected NameImpl getMustunderstandAttributeName() {
-        return NameImpl.create("mustUnderstand", null, NameImpl.SOAP12_NAMESPACE);
-    }
-
-    // mustUnderstand attribute has literal value "true" or "false"
-    protected String getMustunderstandLiteralValue(boolean mustUnderstand) {
-        return (mustUnderstand == true ? "true" : "false");
-    }
-
-    protected boolean getMustunderstandAttributeValue(String mu) {
-        if (mu.equals("true") || mu.equals("1"))
-            return true;
-        return false;
-    }
-
-   protected NameImpl getRelayAttributeName() {
-        return NameImpl.create("relay", null, NameImpl.SOAP12_NAMESPACE);
-    }
-
-    //relay attribute has literal value "true" or "false"
-    protected String getRelayLiteralValue(boolean relay) {
-        return (relay == true ? "true" : "false");
-    }
-
-    protected boolean getRelayAttributeValue(String relay) {
-        if (relay.equals("true") || relay.equals("1"))
-            return true;
-        return false;
-    }
-
-    protected String getActorOrRole() {
-        return getRole();
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for ver1_2 pkg
-
-SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: encodingStyle attribute cannot appear on Body
-SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: No other element except Fault allowed in SOAPBody
-SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: encodingStyle attribute cannot appear on Detail
-SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: encodingStyle attribute cannot appear on Envelope
-SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: Body must be last element in SOAPEnvelope
-SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope cannot contain anything other than Header and Body
-SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: encodingStyle attribute cannot appear on Fault
-SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: encodingStyle attribute cannot appear on a Fault child element
-SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: encodingStyle attribute cannot appear on Header
-SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: Cannot pass NULL to addNotUnderstoodHeaderElement
-SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: Argument cannot be null; supportedURIs cannot be null
-SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: List of supported URIs cannot be empty
-SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2 header elements must be namespace qualified
-#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2
-SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream does not represent a valid SOAP 1.2 Message
-# {0} - element qname
-SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: Adding text to {0} is not legal
-SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: The QName passed to addNotUnderstoodHeaderElement must be namespace-qualified
-
-#SOAPFault related errors
-SAAJ0430.ver1_2.locale.required=SAAJ0430: locale is required and must not be null
-SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: "xml:lang" attribute is not present on the Text element
-SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: A Subcode must be namespace-qualified
-#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0}
-SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text must be present inside env:Reason
-SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} is not a standard Code value
-SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: Cannot add Detail, Detail already exists
-SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Incorrect SOAP version for Detail element, expected SOAP 1.2
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_de.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for ver1_2 pkg
-
-SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: encodingStyle-Attribut darf nicht in Nachrichtentext enthalten sein
-SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: Kein anderes Element au\u00DFer Fault in SOAPBody zul\u00E4ssig
-SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: encodingStyle-Attribut darf nicht in Detail enthalten sein
-SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: encodingStyle-Attribut darf nicht in Envelope enthalten sein
-SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: "Body" muss letztes Element in SOAPEnvelope sein
-SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope darf nur "Header" und "Body" enthalten
-SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: encodingStyle-Attribut darf nicht in Fault enthalten sein
-SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: encodingStyle-Attribut darf nicht in einem untergeordneten "Fault"-Element enthalten sein
-SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: encodingStyle-Attribut darf nicht in "Header" enthalten sein
-SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: NULL kann nicht an addNotUnderstoodHeaderElement \u00FCbergeben werden
-SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: Argument darf nicht null sein; supportedURIs d\u00FCrfen nicht null sein
-SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: Liste der unterst\u00FCtzten URIs darf nicht leer sein
-SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2 Header-Elemente m\u00FCssen namespace-f\u00E4hig sein
-#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2
-SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream stellt keine g\u00FCltige SOAP 1.2-Nachricht dar
-# {0} - element qname
-SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: Hinzuf\u00FCgen von Text zu {0} ist nicht zul\u00E4ssig
-SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: Der QName, der an addNotUnderstoodHeaderElement \u00FCbergeben wird, muss namespace-f\u00E4hig sein
-
-#SOAPFault related errors
-SAAJ0430.ver1_2.locale.required=SAAJ0430: Gebietsschema ist erforderlich und darf nicht null sein
-SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: "xml:lang"-Attribut ist in "Text"-Element nicht vorhanden
-SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: Ein Subcode muss namespace-f\u00E4hig sein
-#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0}
-SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text muss innerhalb von env:Reason vorhanden sein
-SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} ist kein Standardcodewert
-SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: Detail kann nicht hinzugef\u00FCgt werden, Detail ist bereits vorhanden
-SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Falsche SOAP-Version f\u00FCr Detail-Element, SOAP 1.2 erwartet
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_es.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for ver1_2 pkg
-
-SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: el atributo encodingStyle no puede aparecer en el cuerpo
-SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: no se permite ning\u00FAn otro elemento, aparte de Fault, en SOAPBody
-SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: el atributo encodingStyle no puede aparecer en Detail
-SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: el atributo encodingStyle no puede aparecer en Envelope
-SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: el cuerpo debe ser el \u00FAltimo elemento en SOAPEnvelope
-SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: el elemento Envelope no puede contener nada que no sea Header y Body
-SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: el atributo encodingStyle no puede aparecer en Fault
-SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: el atributo encodingStyle no puede aparecer en un elemento secundario Fault
-SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: el atributo encodingStyle no puede aparecer en Header
-SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: no se puede transferir NULL a addNotUnderstoodHeaderElement
-SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: el argumento no puede ser nulo y las URI soportadas no pueden ser nulas
-SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: la lista de URI soportadas no puede estar vac\u00EDa
-SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: los elementos de la cabecera de SOAP 1.2 deben estar cualificados por espacio de nombres
-#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2
-SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream no representa un mensaje de SOAP 1.2 v\u00E1lido
-# {0} - element qname
-SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: no es v\u00E1lido agregar texto a {0}
-SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: el QName que se ha transferido a addNotUnderstoodHeaderElement debe estar cualificado por espacio de nombres
-
-#SOAPFault related errors
-SAAJ0430.ver1_2.locale.required=SAAJ0430: la configuraci\u00F3n regional es necesaria y no debe ser nula
-SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: el atributo "xml:lang" no se encuentra en el elemento de texto
-SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: el subc\u00F3digo debe estar cualificado por espacio de nombres
-#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0}
-SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:text debe encontrarse dentro de env:Reason
-SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} no es un valor de c\u00F3digo est\u00E1ndar
-SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: no se puede agregar el detalle. El detalle ya existe
-SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: versi\u00F3n de SOAP incorrecta para el elemento Detail; se esperaba SOAP 1.2
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_fr.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for ver1_2 pkg
-
-SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur l'\u00E9l\u00E9ment Body
-SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402 : aucun autre \u00E9l\u00E9ment que Fault n'est autoris\u00E9 dans SOAPBody
-SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur l'\u00E9l\u00E9ment Detail
-SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur l'\u00E9l\u00E9ment Envelope
-SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405 : Body doit \u00EAtre le dernier \u00E9l\u00E9ment de SOAPEnvelope
-SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406 : Envelope peut contenir uniquement les \u00E9l\u00E9ments Header et Body
-SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur l'\u00E9l\u00E9ment Fault
-SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur un \u00E9l\u00E9ment enfant Fault
-SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur l'\u00E9l\u00E9ment Header
-SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410 : impossible de transmettre la valeur NULL \u00E0 addNotUnderstoodHeaderElement
-SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411 : l'argument ne peut pas \u00EAtre NULL, supportedURIs ne peut pas \u00EAtre NULL
-SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412 : la liste des URI pris en charge ne peut pas \u00EAtre vide
-SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413 : les \u00E9l\u00E9ments d'en-t\u00EAte SOAP 1.2 ne doivent pas \u00EAtre un espace de noms qualifi\u00E9
-#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2
-SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415 : InputStream ne repr\u00E9sente pas un message SOAP 1.2 valide
-# {0} - element qname
-SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416 : l''ajout de texte \u00E0 {0} est interdit
-SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417 : le QName transmis \u00E0 addNotUnderstoodHeaderElement doit \u00EAtre un espace de noms qualifi\u00E9
-
-#SOAPFault related errors
-SAAJ0430.ver1_2.locale.required=SAAJ0430 : l'environnement local est requis et ne doit pas \u00EAtre NULL
-SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431 : l'attribut "xml:lang" ne figure pas sur l'\u00E9l\u00E9ment Text
-SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432 : un sous-code doit \u00EAtre un espace de noms qualifi\u00E9
-#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0}
-SAAJ0434.ver1_2.text.element.not.present=SAAJ0434 : env:Text doit \u00EAtre pr\u00E9sent dans env:Reason
-SAAJ0435.ver1_2.code.not.standard=SAAJ0435 : {0} n''est pas une valeur Code standard
-SAAJ0436.ver1_2.detail.exists.error=SAAJ0436 : impossible d'ajouter l'\u00E9l\u00E9ment Detail, il existe d\u00E9j\u00E0
-SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437 : version SOAP incorrecte pour l'\u00E9l\u00E9ment Detail, SOAP 1.2 attendu
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_it.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for ver1_2 pkg
-
-SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: l'attributo encodingStyle non pu\u00F2 essere presente in Body
-SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: In SOAPBody non sono consentiti elementi diversi da Fault
-SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: l'attributo encodingStyle non pu\u00F2 essere presente in Detail
-SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: l'attributo encodingStyle non pu\u00F2 essere presente in Envelope
-SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: Body deve essere l'ultimo elemento in SOAPEnvelope
-SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope non pu\u00F2 contenere elementi diversi da Header e Body
-SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: l'attributo encodingStyle non pu\u00F2 essere presente in Fault
-SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: l'attributo encodingStyle non pu\u00F2 essere presente in un elemento figlio di Fault
-SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: l'attributo encodingStyle non pu\u00F2 essere presente in Header
-SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: Impossibile passare NULL a addNotUnderstoodHeaderElement
-SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: L'argomento non pu\u00F2 essere nullo. Gli URI supportati non possono essere nulli
-SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: La lista di URI supportati non pu\u00F2 essere vuota
-SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: Gli elementi dell'intestazione SOAP 1.2 devono essere qualificati per lo spazio di nomi
-#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2
-SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream non rappresenta un messaggio SOAP 1.2 valido
-# {0} - element qname
-SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: L''aggiunta di testo a {0} non \u00E8 valida
-SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: Il QName passato a addNotUnderstoodHeaderElement deve essere qualificato per lo spazio di nomi
-
-#SOAPFault related errors
-SAAJ0430.ver1_2.locale.required=SAAJ0430: Le impostazioni nazionali sono obbligatorie e non devono essere nulle
-SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: L'attributo "xml:lang" non \u00E8 presente nell'elemento Text
-SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: Un codice secondario deve essere qualificato per lo spazio di nomi
-#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0}
-SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text deve essere presente in env:Reason
-SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} non \u00E8 un valore di codice standard
-SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: Impossibile aggiungere Detail. Detail esiste gi\u00E0.
-SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Versione SOAP errata per l'elemento Detail. Prevista SOAP 1.2
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_ja.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for ver1_2 pkg
-
-SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: encodingStyle\u5C5E\u6027\u3092Body\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: Fault\u4EE5\u5916\u306E\u4ED6\u306E\u8981\u7D20\u306FSOAPBody\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
-SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: encodingStyle\u5C5E\u6027\u3092Detail\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: encodingStyle\u5C5E\u6027\u3092Envelope\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: Body\u306FSOAPEnvelope\u306E\u6700\u5F8C\u306E\u8981\u7D20\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
-SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope\u306BHeader\u304A\u3088\u3073Body\u4EE5\u5916\u306E\u3082\u306E\u3092\u542B\u3081\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: encodingStyle\u5C5E\u6027\u3092Fault\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: encodingStyle\u5C5E\u6027\u3092Fault\u5B50\u8981\u7D20\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: encodingStyle\u5C5E\u6027\u3092Header\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: NULL\u3092addNotUnderstoodHeaderElement\u306B\u6E21\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: \u5F15\u6570\u306Fnull\u306B\u3067\u304D\u307E\u305B\u3093\u3002supportedURIs\u306Fnull\u306B\u3067\u304D\u307E\u305B\u3093
-SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: \u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308BURI\u306E\u30EA\u30B9\u30C8\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093
-SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2\u306E\u30D8\u30C3\u30C0\u30FC\u8981\u7D20\u306F\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u3067\u4FEE\u98FE\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
-#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2
-SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream\u306F\u6709\u52B9\u306ASOAP 1.2\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u3057\u3066\u3044\u307E\u305B\u3093
-# {0} - element qname
-SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: {0}\u3078\u306E\u30C6\u30AD\u30B9\u30C8\u306E\u8FFD\u52A0\u306F\u6709\u52B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093
-SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: addNotUnderstoodHeaderElement\u306B\u6E21\u3055\u308C\u308BQName\u306F\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u3067\u4FEE\u98FE\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
-
-#SOAPFault related errors
-SAAJ0430.ver1_2.locale.required=SAAJ0430: \u30ED\u30B1\u30FC\u30EB\u306F\u5FC5\u9808\u3067\u3042\u308A\u3001null\u306B\u3067\u304D\u307E\u305B\u3093
-SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: "xml:lang"\u5C5E\u6027\u304CText\u8981\u7D20\u306B\u5B58\u5728\u3057\u307E\u305B\u3093
-SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: Subcode\u306F\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u3067\u4FEE\u98FE\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
-#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0}
-SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text\u306Fenv:Reason\u5185\u306B\u5B58\u5728\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
-SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0}\u306F\u6A19\u6E96\u306E\u30B3\u30FC\u30C9\u5024\u3067\u306F\u3042\u308A\u307E\u305B\u3093
-SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: Detail\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002Detail\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059
-SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Detail\u8981\u7D20\u306ESOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u7121\u52B9\u3067\u3059\u3002SOAP 1.2\u304C\u4E88\u671F\u3055\u308C\u307E\u3059
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_ko.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for ver1_2 pkg
-
-SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: encodingStyle \uC18D\uC131\uC740 Body\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: SOAPBody\uC5D0\uC11C\uB294 Fault\uB97C \uC81C\uC678\uD55C \uB2E4\uB978 \uC694\uC18C\uAC00 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: encodingStyle \uC18D\uC131\uC740 Detail\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: encodingStyle \uC18D\uC131\uC740 Envelope\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: Body\uB294 SOAPEnvelope\uC758 \uB9C8\uC9C0\uB9C9 \uC694\uC18C\uC5EC\uC57C \uD569\uB2C8\uB2E4.
-SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope\uC5D0\uB294 Header\uC640 Body \uC774\uC678\uC758 \uB2E4\uB978 \uC694\uC18C\uAC00 \uD3EC\uD568\uB420 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: encodingStyle \uC18D\uC131\uC740 Fault\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: encodingStyle \uC18D\uC131\uC740 Fault \uD558\uC704 \uC694\uC18C\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: encodingStyle \uC18D\uC131\uC740 Header\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: addNotUnderstoodHeaderElement\uC5D0 NULL\uC744 \uC804\uB2EC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: \uC778\uC218\uB294 \uB110\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. supportedURIs\uB294 \uB110\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: \uC9C0\uC6D0\uB418\uB294 URI \uBAA9\uB85D\uC740 \uBE44\uC6CC \uB458 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2 Header \uC694\uC18C\uB294 \uC815\uADDC\uD654\uB41C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5EC\uC57C \uD569\uB2C8\uB2E4.
-#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2
-SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream\uC774 \uC801\uD569\uD55C SOAP 1.2 \uBA54\uC2DC\uC9C0\uB97C \uB098\uD0C0\uB0B4\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
-# {0} - element qname
-SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: {0}\uC5D0 \uD14D\uC2A4\uD2B8\uB97C \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: addNotUnderstoodHeaderElement\uC5D0 \uC804\uB2EC\uB41C QName\uC740 \uC815\uADDC\uD654\uB41C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5EC\uC57C \uD569\uB2C8\uB2E4.
-
-#SOAPFault related errors
-SAAJ0430.ver1_2.locale.required=SAAJ0430: \uB85C\uCF00\uC77C\uC774 \uD544\uC694\uD558\uBA70 \uB110\uC774 \uC544\uB2C8\uC5B4\uC57C \uD569\uB2C8\uB2E4.
-SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: "xml:lang" \uC18D\uC131\uC774 Text \uC694\uC18C\uC5D0 \uC5C6\uC2B5\uB2C8\uB2E4.
-SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: \uD558\uC704 \uCF54\uB4DC\uB294 \uC815\uADDC\uD654\uB41C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5EC\uC57C \uD569\uB2C8\uB2E4.
-#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0}
-SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text\uB294 env:Reason\uC5D0 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4.
-SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0}\uC740(\uB294) \uD45C\uC900 \uCF54\uB4DC \uAC12\uC774 \uC544\uB2D9\uB2C8\uB2E4.
-SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: Detail\uC744 \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. Detail\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4.
-SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Detail \uC694\uC18C\uC5D0 \uB300\uD55C SOAP \uBC84\uC804\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. SOAP 1.2\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4.
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_pt_BR.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for ver1_2 pkg
-
-SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: o atributo encodingStyle n\u00E3o pode aparecer no Corpo
-SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: nenhum outro elemento, exceto Falha permitido no SOAPBody
-SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: o atributo encodingStyle n\u00E3o pode aparecer no Detalhe
-SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: o atributo encodingStyle n\u00E3o pode aparecer no Envelope
-SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: o Corpo deve ser o \u00FAltimo elemento no SOAPEnvelope
-SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: o envelope n\u00E3o pode conter nada diferente de Cabe\u00E7alho e Corpo
-SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: o atributo encodingStyle n\u00E3o pode aparecer na Falha
-SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: o atributo encodingStyle n\u00E3o pode aparecer em um elemento-filho Falha
-SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: o atributo encodingStyle n\u00E3o pode aparecer no Cabe\u00E7alho
-SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: n\u00E3o \u00E9 poss\u00EDvel informar NULL para addNotUnderstoodHeaderElement
-SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: o argumento n\u00E3o pode ser nulo; supportedURIs n\u00E3o pode ser nulo
-SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: lista de URIs suportados n\u00E3o pode ficar vazia
-SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: os elementos do cabe\u00E7alho SOAP 1.2 devem ser namespace qualificado
-#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2
-SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: o InputStream n\u00E3o representa uma Mensagem SOAP 1.2 v\u00E1lida
-# {0} - element qname
-SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: adicionar texto a {0} n\u00E3o \u00E9 v\u00E1lido
-SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: o QName informado ao addNotUnderstoodHeaderElement deve ser qualificado por namespace
-
-#SOAPFault related errors
-SAAJ0430.ver1_2.locale.required=SAAJ0430: a localidade \u00E9 obrigat\u00F3rio e n\u00E3o deve ser nula
-SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: o atributo "xml:lang" n\u00E3o est\u00E1 presente no elemento Texto
-SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: um subc\u00F3digo deve ser qualificado por namespace
-#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0}
-SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text deve estar presente em env:Reason
-SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} n\u00E3o \u00E9 um valor de C\u00F3digo padr\u00E3o
-SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: n\u00E3o \u00E9 poss\u00EDvel adicionar Detalhe, o Detalhe j\u00E1 existe
-SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: vers\u00E3o de SOAP incorreta para o elemento Detalhe, esperava SOAP 1.2
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_zh_CN.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for ver1_2 pkg
-
-SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: \u6B63\u6587\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027
-SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: SOAPBody \u4E2D\u4E0D\u5141\u8BB8\u9664\u6545\u969C\u4E4B\u5916\u7684\u4EFB\u4F55\u5176\u4ED6\u5143\u7D20
-SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: \u8BE6\u7EC6\u4FE1\u606F\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027
-SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: \u4FE1\u5C01\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027
-SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: \u6B63\u6587\u5FC5\u987B\u662F SOAPEnvelope \u4E2D\u7684\u6700\u540E\u4E00\u4E2A\u5143\u7D20
-SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: \u4FE1\u5C01\u4E0D\u80FD\u5305\u542B\u9664\u6807\u5934\u548C\u6B63\u6587\u5916\u7684\u5176\u4ED6\u5185\u5BB9
-SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: \u6545\u969C\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027
-SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: \u6545\u969C\u5B50\u5143\u7D20\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027
-SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: \u6807\u5934\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027
-SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: \u4E0D\u80FD\u5C06\u7A7A\u503C\u4F20\u9012\u7ED9 addNotUnderstoodHeaderElement
-SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: \u53C2\u6570\u4E0D\u80FD\u4E3A\u7A7A\u503C; supportedURIs \u4E0D\u80FD\u4E3A\u7A7A\u503C
-SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: \u652F\u6301\u7684 URI \u7684\u5217\u8868\u4E0D\u80FD\u4E3A\u7A7A
-SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2 \u6807\u5934\u5143\u7D20\u5FC5\u987B\u9650\u5B9A\u540D\u79F0\u7A7A\u95F4
-#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2
-SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream \u4E0D\u8868\u793A\u6709\u6548\u7684 SOAP 1.2 \u6D88\u606F
-# {0} - element qname
-SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: \u5C06\u6587\u672C\u6DFB\u52A0\u5230{0}\u7684\u64CD\u4F5C\u662F\u975E\u6CD5\u7684
-SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: \u4F20\u9012\u5230 addNotUnderstoodHeaderElement \u7684 QName \u5FC5\u987B\u9650\u5B9A\u540D\u79F0\u7A7A\u95F4
-
-#SOAPFault related errors
-SAAJ0430.ver1_2.locale.required=SAAJ0430: \u533A\u57DF\u8BBE\u7F6E\u662F\u5FC5\u9700\u7684, \u4E0D\u80FD\u4E3A\u7A7A\u503C
-SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: \u6587\u672C\u5143\u7D20\u4E0D\u5B58\u5728 "xml:lang" \u5C5E\u6027
-SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: \u5B50\u4EE3\u7801\u5FC5\u987B\u9650\u5B9A\u540D\u79F0\u7A7A\u95F4
-#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0}
-SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Reason \u5185\u90E8\u5FC5\u987B\u5B58\u5728 env:Text
-SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0}\u4E0D\u662F\u6807\u51C6\u4EE3\u7801\u503C
-SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: \u65E0\u6CD5\u6DFB\u52A0\u8BE6\u7EC6\u4FE1\u606F, \u8BE6\u7EC6\u4FE1\u606F\u5DF2\u5B58\u5728
-SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: \u8BE6\u7EC6\u4FE1\u606F\u5143\u7D20\u7684 SOAP \u7248\u672C\u4E0D\u6B63\u786E, \u5E94\u4E3A SOAP 1.2
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_zh_TW.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for ver1_2 pkg
-
-SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Body \u4E2D
-SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: SOAPBody \u4E2D\u9664\u4E86 Fault \u4EE5\u5916\u4E0D\u5141\u8A31\u5176\u4ED6\u5143\u7D20
-SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Detail \u4E2D
-SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Envelope \u4E2D
-SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: Body \u5FC5\u9808\u662F SOAPEnvelope \u4E2D\u7684\u6700\u5F8C\u4E00\u500B\u5143\u7D20
-SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope \u4E0D\u80FD\u5305\u542B Header \u548C Body \u4EE5\u5916\u7684\u4EFB\u4F55\u5167\u5BB9
-SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Fault \u4E2D
-SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Fault \u5B50\u5143\u7D20\u4E2D
-SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Header \u4E2D
-SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: \u4E0D\u80FD\u50B3\u9001 NULL \u81F3 addNotUnderstoodHeaderElement
-SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: \u5F15\u6578\u4E0D\u80FD\u662F\u7A7A\u503C; supportedURIs \u4E0D\u80FD\u662F\u7A7A\u503C
-SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: \u652F\u63F4\u7684 URI \u6E05\u55AE\u4E0D\u80FD\u7A7A\u767D
-SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2 \u6A19\u982D\u5143\u7D20\u5FC5\u9808\u662F\u9650\u5B9A\u7684\u547D\u540D\u7A7A\u9593
-#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2
-SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream \u4E0D\u4EE3\u8868\u6709\u6548\u7684 SOAP 1.2 \u8A0A\u606F
-# {0} - element qname
-SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: \u65B0\u589E\u6587\u5B57\u81F3 {0} \u7121\u6548
-SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: \u50B3\u9001\u81F3 addNotUnderstoodHeaderElement \u7684 QName \u5FC5\u9808\u662F\u9650\u5B9A\u7684\u547D\u540D\u7A7A\u9593
-
-#SOAPFault related errors
-SAAJ0430.ver1_2.locale.required=SAAJ0430: \u5FC5\u9808\u6709\u5730\u5340\u8A2D\u5B9A\u4E14\u4E0D\u5F97\u70BA\u7A7A\u503C
-SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: Text \u5143\u7D20\u4E0A\u6C92\u6709 "xml:lang" \u5C6C\u6027
-SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: Subcode \u5FC5\u9808\u662F\u9650\u5B9A\u7684\u547D\u540D\u7A7A\u9593
-#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0}
-SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text \u5FC5\u9808\u4F4D\u65BC env:Reason \u5167
-SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} \u4E0D\u662F\u6A19\u6E96 Code \u503C
-SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: \u7121\u6CD5\u65B0\u589E Detail, Detail \u5DF2\u7D93\u5B58\u5728
-SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Detail \u5143\u7D20\u7684 SOAP \u7248\u672C\u4E0D\u6B63\u78BA, \u61C9\u8A72\u662F SOAP 1.2
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Message1_2Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import javax.xml.soap.*;
-import javax.xml.stream.XMLStreamReader;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.ContentType;
-import com.sun.xml.internal.messaging.saaj.soap.MessageImpl;
-
-public class Message1_2Impl extends MessageImpl implements SOAPConstants{
-
-    public Message1_2Impl() {
-        super();
-    }
-
-    public Message1_2Impl(SOAPMessage msg) {
-        super(msg);
-    }
-
-    public Message1_2Impl(boolean isFastInfoset, boolean acceptFastInfoset) {
-        super(isFastInfoset, acceptFastInfoset);
-    }
-
-    // unused. can we delete this? - Kohsuke
-    public Message1_2Impl(MimeHeaders headers, InputStream in)
-        throws IOException, SOAPExceptionImpl {
-        super(headers, in);
-    }
-
-    public Message1_2Impl(MimeHeaders headers, ContentType ct, int stat, InputStream in)
-        throws SOAPExceptionImpl {
-        super(headers,ct,stat,in);
-    }
-
-    public Message1_2Impl(MimeHeaders headers, ContentType ct, int stat, XMLStreamReader reader)
-            throws SOAPExceptionImpl {
-            super(headers,ct,stat,reader);
-    }
-
-    public SOAPPart getSOAPPart()  {
-        if (soapPartImpl == null)
-            soapPartImpl = new SOAPPart1_2Impl(this);
-
-        return soapPartImpl;
-    }
-
-    protected boolean isCorrectSoapVersion(int contentTypeId) {
-        return (contentTypeId & SOAP1_2_FLAG) != 0;
-    }
-
-    protected String getExpectedContentType() {
-        return isFastInfoset ? "application/soap+fastinfoset" : "application/soap+xml";
-    }
-
-   protected String getExpectedAcceptHeader() {
-       String accept = "application/soap+xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2";
-       return acceptFastInfoset ? ("application/soap+fastinfoset, " + accept) : accept;
-   }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPFactory1_2Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
-
-import javax.xml.soap.Detail;
-import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPFault;
-
-import javax.xml.namespace.QName;
-
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPFactoryImpl;
-
-public class SOAPFactory1_2Impl extends SOAPFactoryImpl {
-    protected SOAPDocumentImpl createDocument() {
-        return (new SOAPPart1_2Impl()).getDocument();
-    }
-
-    public Detail createDetail() throws SOAPException {
-        return new Detail1_2Impl(createDocument());
-    }
-
-    public SOAPFault createFault(String reasonText, QName faultCode)
-        throws SOAPException {
-         if (faultCode == null) {
-            throw new IllegalArgumentException("faultCode argument for createFault was passed NULL");
-        }
-        if (reasonText == null) {
-            throw new IllegalArgumentException("reasonText argument for createFault was passed NULL");
-        }
-        Fault1_2Impl fault = new Fault1_2Impl(createDocument(), null);
-        fault.setFaultCode(faultCode);
-        fault.setFaultString(reasonText);
-        return fault;
-    }
-
-    public SOAPFault createFault() throws SOAPException {
-        Fault1_2Impl fault = new Fault1_2Impl(createDocument(), null);
-        fault.setFaultCode(fault.getDefaultFaultCode());
-        fault.setFaultString("Fault string, and possibly fault code, not set");
-        return fault;
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPMessageFactory1_2Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author JAX-RPC RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import javax.xml.soap.*;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-import com.sun.xml.internal.messaging.saaj.soap.MessageFactoryImpl;
-import com.sun.xml.internal.messaging.saaj.soap.MessageImpl;
-
-public class SOAPMessageFactory1_2Impl extends MessageFactoryImpl {
-
-    public SOAPMessage createMessage() throws SOAPException {
-        return new Message1_2Impl();
-    }
-
-    public SOAPMessage createMessage(boolean isFastInfoset,
-        boolean acceptFastInfoset) throws SOAPException
-    {
-        return new Message1_2Impl(isFastInfoset, acceptFastInfoset);
-    }
-
-    public SOAPMessage createMessage(MimeHeaders headers, InputStream in) throws IOException, SOAPExceptionImpl {
-
-        if (headers == null) {
-            headers = new MimeHeaders();
-        }
-
-        if (getContentType(headers) == null) {
-            headers.setHeader("Content-Type", SOAPConstants.SOAP_1_2_CONTENT_TYPE);
-        }
-
-        MessageImpl msg = new Message1_2Impl(headers, in);
-        msg.setLazyAttachments(lazyAttachments);
-        return msg;
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPPart1_2Impl.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
-
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.xml.soap.SOAPConstants;
-import javax.xml.soap.SOAPException;
-import javax.xml.transform.Source;
-
-import com.sun.xml.internal.messaging.saaj.soap.*;
-import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl;
-import com.sun.xml.internal.messaging.saaj.util.XMLDeclarationParser;
-
-public class SOAPPart1_2Impl extends SOAPPartImpl implements SOAPConstants{
-
-    protected static final Logger log =
-        Logger.getLogger(SOAPPart1_2Impl.class.getName(),
-                         "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
-
-    public SOAPPart1_2Impl() {
-        super();
-    }
-
-    public SOAPPart1_2Impl(MessageImpl message) {
-        super(message);
-    }
-
-    protected String getContentType() {
-        return "application/soap+xml";
-    }
-
-    protected Envelope createEmptyEnvelope(String prefix) throws SOAPException {
-        return new Envelope1_2Impl(getDocument(), prefix, true, true);
-    }
-
-    protected Envelope createEnvelopeFromSource() throws SOAPException {
-        XMLDeclarationParser parser = lookForXmlDecl();
-        Source tmp = source;
-        source = null;
-        EnvelopeImpl envelope = (EnvelopeImpl)EnvelopeFactory.createEnvelope(tmp, this);
-        if (!envelope.getNamespaceURI().equals(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE)) {
-            log.severe("SAAJ0415.ver1_2.msg.invalid.soap1.2");
-            throw new SOAPException("InputStream does not represent a valid SOAP 1.2 Message");
-        }
-
-        if (parser != null) { //can be null if source was a DomSource and not StreamSource
-            if (!omitXmlDecl) {
-                envelope.setOmitXmlDecl("no");
-                envelope.setXmlDecl(parser.getXmlDeclaration());
-                envelope.setCharsetEncoding(parser.getEncoding());
-            }
-        }
-        return envelope;
-
-    }
-
-    protected SOAPPartImpl duplicateType() {
-        return new SOAPPart1_2Impl();
-    }
-
-    @Override
-    public String getSOAPNamespace() {
-        return SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE;
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/Base64.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,272 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.util;
-
-
-// Cut & paste from tomcat
-
-/**
- * This class provides encode/decode for RFC 2045 Base64 as
- * defined by RFC 2045, N. Freed and N. Borenstein.
- * RFC 2045: Multipurpose Internet Mail Extensions (MIME)
- * Part One: Format of Internet Message Bodies. Reference
- * 1996 Available at: http://www.ietf.org/rfc/rfc2045.txt
- * This class is used by XML Schema binary format validation
- *
- * @author Jeffrey Rodriguez
- * @version
- */
-public final class Base64 {
-
-
-    static private final int  BASELENGTH         = 255;
-    static private final int  LOOKUPLENGTH       = 63;
-    static private final int  TWENTYFOURBITGROUP = 24;
-    static private final int  EIGHTBIT           = 8;
-    static private final int  SIXTEENBIT         = 16;
-    static private final int  SIXBIT             = 6;
-    static private final int  FOURBYTE           = 4;
-
-
-    static private final byte PAD               = ( byte ) '=';
-    static private byte [] base64Alphabet       = new byte[BASELENGTH];
-    static private byte [] lookUpBase64Alphabet = new byte[LOOKUPLENGTH];
-
-    static {
-
-        for (int i = 0; i<BASELENGTH; i++ ) {
-            base64Alphabet[i] = -1;
-        }
-        for ( int i = 'Z'; i >= 'A'; i-- ) {
-            base64Alphabet[i] = (byte) (i-'A');
-        }
-        for ( int i = 'z'; i>= 'a'; i--) {
-            base64Alphabet[i] = (byte) ( i-'a' + 26);
-        }
-
-        for ( int i = '9'; i >= '0'; i--) {
-            base64Alphabet[i] = (byte) (i-'0' + 52);
-        }
-
-        base64Alphabet['+']  = 62;
-        base64Alphabet['/']  = 63;
-
-       for (int i = 0; i<=25; i++ )
-            lookUpBase64Alphabet[i] = (byte) ('A'+i );
-
-        for (int i = 26,  j = 0; i<=51; i++, j++ )
-            lookUpBase64Alphabet[i] = (byte) ('a'+ j );
-
-        for (int i = 52,  j = 0; i<=61; i++, j++ )
-            lookUpBase64Alphabet[i] = (byte) ('0' + j );
-
-    }
-
-
-    static boolean isBase64( byte octect ) {
-        //shall we ignore white space? JEFF??
-        return(octect == PAD || base64Alphabet[octect] != -1 );
-    }
-
-
-    static boolean isArrayByteBase64( byte[] arrayOctect ) {
-        int length = arrayOctect.length;
-        if ( length == 0 )
-            return false;
-        for ( int i=0; i < length; i++ ) {
-            if ( Base64.isBase64( arrayOctect[i] ) == false)
-                return false;
-        }
-        return true;
-    }
-
-    /**
-     * Encodes hex octects into Base64
-     *
-     * @param binaryData Array containing binaryData
-     * @return Encoded Base64 array
-     */
-    public static byte[] encode( byte[] binaryData ) {
-        int      lengthDataBits    = binaryData.length*EIGHTBIT;
-        int      fewerThan24bits   = lengthDataBits%TWENTYFOURBITGROUP;
-        int      numberTriplets    = lengthDataBits/TWENTYFOURBITGROUP;
-        byte     encodedData[]     = null;
-
-
-        if ( fewerThan24bits != 0 ) //data not divisible by 24 bit
-            encodedData = new byte[ (numberTriplets + 1 )*4  ];
-        else // 16 or 8 bit
-            encodedData = new byte[ numberTriplets*4 ];
-
-        byte k=0, l=0, b1=0,b2=0,b3=0;
-
-        int encodedIndex = 0;
-        int dataIndex   = 0;
-        int i           = 0;
-        for ( i = 0; i<numberTriplets; i++ ) {
-
-            dataIndex = i*3;
-            b1 = binaryData[dataIndex];
-            b2 = binaryData[dataIndex + 1];
-            b3 = binaryData[dataIndex + 2];
-
-            l  = (byte)(b2 & 0x0f);
-            k  = (byte)(b1 & 0x03);
-
-            encodedIndex = i*4;
-            encodedData[encodedIndex]   = lookUpBase64Alphabet[ b1 >>2 ];
-            encodedData[encodedIndex+1] = lookUpBase64Alphabet[(b2 >>4 ) |
-( k<<4 )];
-            encodedData[encodedIndex+2] = lookUpBase64Alphabet[ (l <<2 ) |
-( b3>>6)];
-            encodedData[encodedIndex+3] = lookUpBase64Alphabet[ b3 & 0x3f ];
-        }
-
-        // form integral number of 6-bit groups
-        dataIndex    = i*3;
-        encodedIndex = i*4;
-        if (fewerThan24bits == EIGHTBIT ) {
-            b1 = binaryData[dataIndex];
-            k = (byte) ( b1 &0x03 );
-            encodedData[encodedIndex]     = lookUpBase64Alphabet[ b1 >>2 ];
-            encodedData[encodedIndex + 1] = lookUpBase64Alphabet[ k<<4 ];
-            encodedData[encodedIndex + 2] = PAD;
-            encodedData[encodedIndex + 3] = PAD;
-        } else if ( fewerThan24bits == SIXTEENBIT ) {
-
-            b1 = binaryData[dataIndex];
-            b2 = binaryData[dataIndex +1 ];
-            l = ( byte ) ( b2 &0x0f );
-            k = ( byte ) ( b1 &0x03 );
-            encodedData[encodedIndex]     = lookUpBase64Alphabet[ b1 >>2 ];
-            encodedData[encodedIndex + 1] = lookUpBase64Alphabet[ (b2 >>4 )
-| ( k<<4 )];
-            encodedData[encodedIndex + 2] = lookUpBase64Alphabet[ l<<2 ];
-            encodedData[encodedIndex + 3] = PAD;
-        }
-        return encodedData;
-    }
-
-
-    /**
-     * Decodes Base64 data into octects
-     *
-     * @param binaryData Byte array containing Base64 data
-     * @return Array containind decoded data.
-     */
-    public byte[] decode( byte[] base64Data ) {
-        int      numberQuadruple    = base64Data.length/FOURBYTE;
-        byte     decodedData[]      = null;
-        byte     b1=0,b2=0,b3=0, b4=0, marker0=0, marker1=0;
-
-        // Throw away anything not in base64Data
-        // Adjust size
-
-        int encodedIndex = 0;
-        int dataIndex    = 0;
-        decodedData      = new byte[ numberQuadruple*3 + 1 ];
-
-        for (int i = 0; i<numberQuadruple; i++ ) {
-            dataIndex = i*4;
-            marker0   = base64Data[dataIndex +2];
-            marker1   = base64Data[dataIndex +3];
-
-            b1 = base64Alphabet[base64Data[dataIndex]];
-            b2 = base64Alphabet[base64Data[dataIndex +1]];
-
-            if ( marker0 != PAD && marker1 != PAD ) {     //No PAD e.g 3cQl
-                b3 = base64Alphabet[ marker0 ];
-                b4 = base64Alphabet[ marker1 ];
-
-                decodedData[encodedIndex]   = (byte)(  b1 <<2 | b2>>4 ) ;
-                decodedData[encodedIndex+1] = (byte)(((b2 & 0xf)<<4 ) |(
-(b3>>2) & 0xf) );
-                decodedData[encodedIndex+2] = (byte)( b3<<6 | b4 );
-            } else if ( marker0 == PAD ) {               //Two PAD e.g. 3c[Pad][Pad]
-                decodedData[encodedIndex]   = (byte)(  b1 <<2 | b2>>4 ) ;
-                decodedData[encodedIndex+1] = (byte)((b2 & 0xf)<<4 );
-                decodedData[encodedIndex+2] = (byte) 0;
-            } else if ( marker1 == PAD ) {              //One PAD e.g. 3cQ[Pad]
-                b3 = base64Alphabet[ marker0 ];
-
-                decodedData[encodedIndex]   = (byte)(  b1 <<2 | b2>>4 );
-                decodedData[encodedIndex+1] = (byte)(((b2 & 0xf)<<4 ) |(
-(b3>>2) & 0xf) );
-                decodedData[encodedIndex+2] = (byte)( b3<<6);
-            }
-            encodedIndex += 3;
-        }
-        return decodedData;
-
-    }
-
-    static final int base64[]= {
-        64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
-            64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
-            64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, 64, 63,
-            52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64,
-            64,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
-            15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 64,
-            64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
-            41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64,
-            64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
-            64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
-            64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
-            64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
-            64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
-            64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
-            64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
-            64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64
-    };
-
-    public static String base64Decode( String orig ) {
-        char chars[]=orig.toCharArray();
-        StringBuffer sb=new StringBuffer();
-        int i=0;
-
-        int shift = 0;   // # of excess bits stored in accum
-        int acc = 0;
-
-        for (i=0; i<chars.length; i++) {
-            int v = base64[ chars[i] & 0xFF ];
-
-            if ( v >= 64 ) {
-                if( chars[i] != '=' )
-                    System.out.println("Wrong char in base64: " + chars[i]);
-            } else {
-                acc= ( acc << 6 ) | v;
-                shift += 6;
-                if ( shift >= 8 ) {
-                    shift -= 8;
-                    sb.append( (char) ((acc >> shift) & 0xff));
-                }
-            }
-        }
-        return sb.toString();
-    }
-
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/ByteInputStream.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.util;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-
-// This class just gives access to the underlying buffer without copying.
-
-public class ByteInputStream extends ByteArrayInputStream {
-    private static final byte[] EMPTY_ARRAY = new byte[0];
-
-    public ByteInputStream() {
-        this(EMPTY_ARRAY, 0);
-    }
-
-    public ByteInputStream(byte buf[], int length) {
-        super(buf, 0, length);
-    }
-
-    public ByteInputStream(byte buf[], int offset, int length) {
-        super(buf, offset, length);
-    }
-
-    public byte[] getBytes() {
-        return buf;
-    }
-
-    public int getCount() {
-        return count;
-    }
-
-    public void close() throws IOException {
-        reset();
-    }
-
-    public void setBuf(byte[] buf) {
-        this.buf = buf;
-        this.pos = 0;
-        this.count = buf.length;
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/ByteOutputStream.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,180 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.util;
-
-import java.io.BufferedOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.InputStream;
-import java.io.ByteArrayInputStream;
-
-/**
- * Customized {@link BufferedOutputStream}.
- *
- * <p>
- * Compared to {@link BufferedOutputStream},
- * this class:
- *
- * <ol>
- * <li>doesn't do synchronization
- * <li>allows access to the raw buffer
- * <li>almost no parameter check
- */
-public final class ByteOutputStream extends OutputStream {
-    /**
-     * The buffer where data is stored.
-     */
-    protected byte[] buf;
-
-    /**
-     * The number of valid bytes in the buffer.
-     */
-    protected int count = 0;
-
-    public ByteOutputStream() {
-        this(1024);
-    }
-
-    public ByteOutputStream(int size) {
-        buf = new byte[size];
-    }
-
-    /**
-     * Copies all the bytes from this input into this buffer.
-     */
-    public void write(InputStream in) throws IOException {
-        if (in instanceof ByteArrayInputStream) {
-            int size = in.available();
-            ensureCapacity(size);
-            count += in.read(buf,count,size);
-            return;
-        }
-        while(true) {
-            int cap = buf.length-count;
-            int sz = in.read(buf,count,cap);
-            if(sz<0)    return;     // hit EOS
-
-            count += sz;
-            if(cap==sz)
-                // the buffer filled up. double the buffer
-                ensureCapacity(count);
-        }
-    }
-
-    public void write(int b) {
-        ensureCapacity(1);
-        buf[count] = (byte) b;
-        count++;
-    }
-
-    /**
-     * Ensure that the buffer has at least this much space.
-     */
-    private void ensureCapacity(int space) {
-        int newcount = space + count;
-        if (newcount > buf.length) {
-            byte[] newbuf = new byte[Math.max(buf.length << 1, newcount)];
-            System.arraycopy(buf, 0, newbuf, 0, count);
-            buf = newbuf;
-        }
-    }
-
-    public void write(byte[] b, int off, int len) {
-        ensureCapacity(len);
-        System.arraycopy(b, off, buf, count, len);
-        count += len;
-    }
-
-    public void write(byte[] b) {
-        write(b, 0, b.length);
-    }
-
-    /**
-     * Writes a string as ASCII string.
-     */
-    public void writeAsAscii(String s) {
-        int len = s.length();
-
-        ensureCapacity(len);
-
-        int ptr = count;
-        for( int i=0; i<len; i++ )
-            buf[ptr++] = (byte)s.charAt(i);
-        count = ptr;
-    }
-
-    public void writeTo(OutputStream out) throws IOException {
-        out.write(buf, 0, count);
-    }
-
-    public void reset() {
-        count = 0;
-    }
-
-    /**
-     * Evil buffer reallocation method.
-     * Don't use it unless you absolutely have to.
-     *
-     * @deprecated
-     *      because this is evil!
-     */
-    public byte toByteArray()[] {
-        byte[] newbuf = new byte[count];
-        System.arraycopy(buf, 0, newbuf, 0, count);
-        return newbuf;
-    }
-
-    public int size() {
-        return count;
-    }
-
-    public ByteInputStream newInputStream() {
-        return new ByteInputStream(buf,count);
-    }
-
-    /**
-     * Converts the buffer's contents into a string, translating bytes into
-     * characters according to the platform's default character encoding.
-     *
-     * @return String translated from the buffer's contents.
-     * @since JDK1.1
-     */
-    public String toString() {
-        return new String(buf, 0, count);
-    }
-
-    public void close() {
-    }
-
-    public byte[] getBytes() {
-        return buf;
-    }
-
-
-    public int getCount() {
-        return count;
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/CharReader.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.util;
-
-import java.io.CharArrayReader;
-
-// This class just gives access to the underlying buffer without copying.
-
-public class CharReader extends CharArrayReader {
-    public CharReader(char buf[], int length) {
-        super(buf, 0, length);
-    }
-
-    public CharReader(char buf[], int offset, int length) {
-        super(buf, offset, length);
-    }
-
-    public char[] getChars() {
-        return buf;
-    }
-
-    public int getCount() {
-        return count;
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/CharWriter.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.util;
-
-import java.io.CharArrayWriter;
-
-// This class just gives access to the underlying buffer without copying.
-
-public class CharWriter extends CharArrayWriter {
-    public CharWriter () {
-        super();
-    }
-
-    public CharWriter(int size) {
-        super(size);
-    }
-
-    public char[] getChars() {
-        return buf;
-    }
-
-    public int getCount() {
-        return count;
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/FastInfosetReflection.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,240 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.util;
-
-import java.lang.reflect.*;
-import javax.xml.transform.Source;
-import javax.xml.transform.Result;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-
-/**
- *
- * @author Santiago.PericasGeertsen@sun.com
- * @author Paul.Sandoz@sun.com
- */
-public class FastInfosetReflection {
-
-    /**
-     * FI DOMDocumentParser constructor using reflection.
-     */
-    static Constructor fiDOMDocumentParser_new;
-
-    /**
-     * FI <code>DOMDocumentParser.parse()</code> method via reflection.
-     */
-    static Method fiDOMDocumentParser_parse;
-
-    /**
-     * FI DOMDocumentSerializer constructor using reflection.
-     */
-    static Constructor fiDOMDocumentSerializer_new;
-
-    /**
-     * FI <code>FastInfosetSource.serialize(Document)</code> method via reflection.
-     */
-    static Method fiDOMDocumentSerializer_serialize;
-
-    /**
-     * FI <code>FastInfosetSource.setOutputStream(OutputStream)</code> method via reflection.
-     */
-    static Method fiDOMDocumentSerializer_setOutputStream;
-
-    /**
-     * FI FastInfosetSource constructor using reflection.
-     */
-    static Class fiFastInfosetSource_class;
-
-    /**
-     * FI FastInfosetSource constructor using reflection.
-     */
-    static Constructor fiFastInfosetSource_new;
-
-    /**
-     * FI <code>FastInfosetSource.getInputStream()</code> method via reflection.
-     */
-    static Method fiFastInfosetSource_getInputStream;
-
-    /**
-     * FI <code>FastInfosetSource.setInputSTream()</code> method via reflection.
-     */
-    static Method fiFastInfosetSource_setInputStream;
-
-    /**
-     * FI FastInfosetResult constructor using reflection.
-     */
-    static Constructor fiFastInfosetResult_new;
-
-    /**
-     * FI <code>FastInfosetResult.getOutputSTream()</code> method via reflection.
-     */
-    static Method fiFastInfosetResult_getOutputStream;
-
-    static {
-        try {
-            Class clazz = Class.forName("com.sun.xml.internal.fastinfoset.dom.DOMDocumentParser");
-            fiDOMDocumentParser_new = clazz.getConstructor((Class[]) null);
-            fiDOMDocumentParser_parse = clazz.getMethod("parse",
-                new Class[] { org.w3c.dom.Document.class, java.io.InputStream.class });
-
-            clazz = Class.forName("com.sun.xml.internal.fastinfoset.dom.DOMDocumentSerializer");
-            fiDOMDocumentSerializer_new = clazz.getConstructor((Class[])null);
-            fiDOMDocumentSerializer_serialize = clazz.getMethod("serialize",
-                new Class[] { org.w3c.dom.Node.class });
-            fiDOMDocumentSerializer_setOutputStream = clazz.getMethod("setOutputStream",
-                new Class[] { java.io.OutputStream.class });
-
-            fiFastInfosetSource_class = clazz = Class.forName("com.sun.xml.internal.org.jvnet.fastinfoset.FastInfosetSource");
-            fiFastInfosetSource_new = clazz.getConstructor(
-                new Class[] { java.io.InputStream.class });
-            fiFastInfosetSource_getInputStream = clazz.getMethod("getInputStream", (Class[]) null);
-            fiFastInfosetSource_setInputStream = clazz.getMethod("setInputStream",
-                new Class[] { java.io.InputStream.class });
-
-            clazz = Class.forName("com.sun.xml.internal.org.jvnet.fastinfoset.FastInfosetResult");
-            fiFastInfosetResult_new = clazz.getConstructor(
-                new Class[] { java.io.OutputStream.class });
-            fiFastInfosetResult_getOutputStream = clazz.getMethod("getOutputStream", (Class[]) null);
-        }
-        catch (Exception e) {
-            // falls through
-        }
-    }
-
-    // -- DOMDocumentParser ----------------------------------------------
-
-    public static Object DOMDocumentParser_new() throws Exception {
-        if (fiDOMDocumentParser_new == null) {
-            throw new RuntimeException("Unable to locate Fast Infoset implementation");
-        }
-        return fiDOMDocumentParser_new.newInstance((Object[])null);
-    }
-
-    public static void DOMDocumentParser_parse(Object parser,
-        Document d, InputStream s) throws Exception
-    {
-        if (fiDOMDocumentParser_parse == null) {
-            throw new RuntimeException("Unable to locate Fast Infoset implementation");
-        }
-        fiDOMDocumentParser_parse.invoke(parser, new Object[] { d, s });
-    }
-
-    // -- DOMDocumentSerializer-------------------------------------------
-
-    public static Object DOMDocumentSerializer_new() throws Exception {
-        if (fiDOMDocumentSerializer_new == null) {
-            throw new RuntimeException("Unable to locate Fast Infoset implementation");
-        }
-        return fiDOMDocumentSerializer_new.newInstance((Object[])null);
-    }
-
-    public static void DOMDocumentSerializer_serialize(Object serializer, Node node)
-        throws Exception
-    {
-        if (fiDOMDocumentSerializer_serialize == null) {
-            throw new RuntimeException("Unable to locate Fast Infoset implementation");
-        }
-        fiDOMDocumentSerializer_serialize.invoke(serializer, new Object[] { node });
-    }
-
-    public static void DOMDocumentSerializer_setOutputStream(Object serializer,
-        OutputStream os) throws Exception
-    {
-        if (fiDOMDocumentSerializer_setOutputStream == null) {
-            throw new RuntimeException("Unable to locate Fast Infoset implementation");
-        }
-        fiDOMDocumentSerializer_setOutputStream.invoke(serializer, new Object[] { os });
-    }
-
-    // -- FastInfosetSource ----------------------------------------------
-
-    public static boolean isFastInfosetSource(Source source) {
-        return source.getClass().getName().equals(
-            "com.sun.xml.internal.org.jvnet.fastinfoset.FastInfosetSource");
-    }
-
-    public static Class getFastInfosetSource_class() {
-        if (fiFastInfosetSource_class == null) {
-            throw new RuntimeException("Unable to locate Fast Infoset implementation");
-        }
-
-        return fiFastInfosetSource_class;
-    }
-    public static Source FastInfosetSource_new(InputStream is)
-        throws Exception
-    {
-        if (fiFastInfosetSource_new == null) {
-            throw new RuntimeException("Unable to locate Fast Infoset implementation");
-        }
-        return (Source) fiFastInfosetSource_new.newInstance(new Object[] { is });
-    }
-
-    public static InputStream FastInfosetSource_getInputStream(Source source)
-        throws Exception
-    {
-        if (fiFastInfosetSource_getInputStream == null) {
-            throw new RuntimeException("Unable to locate Fast Infoset implementation");
-        }
-        return (InputStream) fiFastInfosetSource_getInputStream.invoke(source, (Object[])null);
-    }
-
-    public static void FastInfosetSource_setInputStream(Source source,
-        InputStream is) throws Exception
-    {
-        if (fiFastInfosetSource_setInputStream == null) {
-            throw new RuntimeException("Unable to locate Fast Infoset implementation");
-        }
-        fiFastInfosetSource_setInputStream.invoke(source, new Object[] { is });
-    }
-
-    // -- FastInfosetResult ----------------------------------------------
-
-    public static boolean isFastInfosetResult(Result result) {
-        return result.getClass().getName().equals(
-            "com.sun.xml.internal.org.jvnet.fastinfoset.FastInfosetResult");
-    }
-
-    public static Result FastInfosetResult_new(OutputStream os)
-        throws Exception
-    {
-        if (fiFastInfosetResult_new == null) {
-            throw new RuntimeException("Unable to locate Fast Infoset implementation");
-        }
-        return (Result) fiFastInfosetResult_new.newInstance(new Object[] { os });
-    }
-
-    public static OutputStream FastInfosetResult_getOutputStream(Result result)
-        throws Exception
-    {
-        if (fiFastInfosetResult_getOutputStream == null) {
-            throw new RuntimeException("Unable to locate Fast Infoset implementation");
-        }
-        return (OutputStream) fiFastInfosetResult_getOutputStream.invoke(result, (Object[])null);
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/FinalArrayList.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.util;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-/**
- * {@link ArrayList} with a final marker to help JIT.
- * @author Kohsuke Kawaguchi
- */
-public final class FinalArrayList extends ArrayList {
-    public FinalArrayList(int initialCapacity) {
-        super(initialCapacity);
-    }
-
-    public FinalArrayList() {
-    }
-
-    public FinalArrayList(Collection collection) {
-        super(collection);
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/JAXMStreamSource.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.util;
-
-import java.io.*;
-
-import javax.xml.transform.stream.StreamSource;
-
-
-/**
- *
- * @author Anil Vijendran
- */
-public class JAXMStreamSource extends StreamSource {
-    InputStream in;
-    Reader reader;
-    private static final boolean lazyContentLength;
-    static {
-        lazyContentLength = SAAJUtil.getSystemBoolean("saaj.lazy.contentlength");
-    }
-    public JAXMStreamSource(InputStream is) throws IOException {
-        if (lazyContentLength) {
-            in = is;
-        } else if (is instanceof ByteInputStream) {
-            this.in = (ByteInputStream) is;
-        } else {
-            ByteOutputStream bout = null;
-            try {
-                bout = new ByteOutputStream();
-                bout.write(is);
-                this.in = bout.newInputStream();
-            } finally {
-                if (bout != null)
-                    bout.close();
-            }
-        }
-    }
-
-    public JAXMStreamSource(Reader rdr) throws IOException {
-
-        if (lazyContentLength) {
-            this.reader = rdr;
-            return;
-        }
-        CharWriter cout = new CharWriter();
-        char[] temp = new char[1024];
-        int len;
-
-        while (-1 != (len = rdr.read(temp)))
-            cout.write(temp, 0, len);
-
-        this.reader = new CharReader(cout.getChars(), cout.getCount());
-    }
-
-    public InputStream getInputStream() {
-        return in;
-    }
-
-    public Reader getReader() {
-        return reader;
-    }
-
-    public void reset() throws IOException {
-            if (in != null)
-                in.reset();
-            if (reader != null)
-                reader.reset();
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/JaxmURI.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1380 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.util;
-
-// Imported from: org.apache.xerces.util
-// Needed to work around differences in JDK1.2 and 1.3 and deal with userInfo
-
-import java.io.IOException;
-import java.io.Serializable;
-
-
-/**********************************************************************
-* A class to represent a Uniform Resource Identifier (URI). This class
-* is designed to handle the parsing of URIs and provide access to
-* the various components (scheme, host, port, userinfo, path, query
-* string and fragment) that may constitute a URI.
-* <p>
-* Parsing of a URI specification is done according to the URI
-* syntax described in RFC 2396
-* <http://www.ietf.org/rfc/rfc2396.txt?number=2396>. Every URI consists
-* of a scheme, followed by a colon (':'), followed by a scheme-specific
-* part. For URIs that follow the "generic URI" syntax, the scheme-
-* specific part begins with two slashes ("//") and may be followed
-* by an authority segment (comprised of user information, host, and
-* port), path segment, query segment and fragment. Note that RFC 2396
-* no longer specifies the use of the parameters segment and excludes
-* the "user:password" syntax as part of the authority segment. If
-* "user:password" appears in a URI, the entire user/password string
-* is stored as userinfo.
-* <p>
-* For URIs that do not follow the "generic URI" syntax (e.g. mailto),
-* the entire scheme-specific part is treated as the "path" portion
-* of the URI.
-* <p>
-* Note that, unlike the java.net.URL class, this class does not provide
-* any built-in network access functionality nor does it provide any
-* scheme-specific functionality (for example, it does not know a
-* default port for a specific scheme). Rather, it only knows the
-* grammar and basic set of operations that can be applied to a URI.
-*
-* @version
-*
-**********************************************************************/
- public class JaxmURI implements Serializable {
-
-  /*******************************************************************
-  * MalformedURIExceptions are thrown in the process of building a URI
-  * or setting fields on a URI when an operation would result in an
-  * invalid URI specification.
-  *
-  ********************************************************************/
-  public static class MalformedURIException extends IOException {
-
-   /******************************************************************
-    * Constructs a <code>MalformedURIException</code> with no specified
-    * detail message.
-    ******************************************************************/
-    public MalformedURIException() {
-      super();
-    }
-
-    /*****************************************************************
-    * Constructs a <code>MalformedURIException</code> with the
-    * specified detail message.
-    *
-    * @param p_msg the detail message.
-    ******************************************************************/
-    public MalformedURIException(String p_msg) {
-      super(p_msg);
-    }
-  }
-
-  /** reserved characters */
-  private static final String RESERVED_CHARACTERS = ";/?:@&=+$,";
-
-  /** URI punctuation mark characters - these, combined with
-      alphanumerics, constitute the "unreserved" characters */
-  private static final String MARK_CHARACTERS = "-_.!~*'() ";
-
-  /** scheme can be composed of alphanumerics and these characters */
-  private static final String SCHEME_CHARACTERS = "+-.";
-
-  /** userinfo can be composed of unreserved, escaped and these
-      characters */
-  private static final String USERINFO_CHARACTERS = ";:&=+$,";
-
-  /** Stores the scheme (usually the protocol) for this URI. */
-  private String m_scheme = null;
-
-  /** If specified, stores the userinfo for this URI; otherwise null */
-  private String m_userinfo = null;
-
-  /** If specified, stores the host for this URI; otherwise null */
-  private String m_host = null;
-
-  /** If specified, stores the port for this URI; otherwise -1 */
-  private int m_port = -1;
-
-  /** If specified, stores the path for this URI; otherwise null */
-  private String m_path = null;
-
-  /** If specified, stores the query string for this URI; otherwise
-      null.  */
-  private String m_queryString = null;
-
-  /** If specified, stores the fragment for this URI; otherwise null */
-  private String m_fragment = null;
-
-  private static boolean DEBUG = false;
-
-  /**
-  * Construct a new and uninitialized URI.
-  */
-  public JaxmURI() {
-  }
-
- /**
-  * Construct a new URI from another URI. All fields for this URI are
-  * set equal to the fields of the URI passed in.
-  *
-  * @param p_other the URI to copy (cannot be null)
-  */
-  public JaxmURI(JaxmURI p_other) {
-    initialize(p_other);
-  }
-
- /**
-  * Construct a new URI from a URI specification string. If the
-  * specification follows the "generic URI" syntax, (two slashes
-  * following the first colon), the specification will be parsed
-  * accordingly - setting the scheme, userinfo, host,port, path, query
-  * string and fragment fields as necessary. If the specification does
-  * not follow the "generic URI" syntax, the specification is parsed
-  * into a scheme and scheme-specific part (stored as the path) only.
-  *
-  * @param p_uriSpec the URI specification string (cannot be null or
-  *                  empty)
-  *
-  * @exception MalformedURIException if p_uriSpec violates any syntax
-  *                                   rules
-  */
-  public JaxmURI(String p_uriSpec) throws MalformedURIException {
-    this((JaxmURI)null, p_uriSpec);
-  }
-
- /**
-  * Construct a new URI from a base URI and a URI specification string.
-  * The URI specification string may be a relative URI.
-  *
-  * @param p_base the base URI (cannot be null if p_uriSpec is null or
-  *               empty)
-  * @param p_uriSpec the URI specification string (cannot be null or
-  *                  empty if p_base is null)
-  *
-  * @exception MalformedURIException if p_uriSpec violates any syntax
-  *                                  rules
-  */
-  public JaxmURI(JaxmURI p_base, String p_uriSpec) throws MalformedURIException {
-    initialize(p_base, p_uriSpec);
-  }
-
- /**
-  * Construct a new URI that does not follow the generic URI syntax.
-  * Only the scheme and scheme-specific part (stored as the path) are
-  * initialized.
-  *
-  * @param p_scheme the URI scheme (cannot be null or empty)
-  * @param p_schemeSpecificPart the scheme-specific part (cannot be
-  *                             null or empty)
-  *
-  * @exception MalformedURIException if p_scheme violates any
-  *                                  syntax rules
-  */
-  public JaxmURI(String p_scheme, String p_schemeSpecificPart)
-             throws MalformedURIException {
-    if (p_scheme == null || p_scheme.trim().length() == 0) {
-      throw new MalformedURIException(
-            "Cannot construct URI with null/empty scheme!");
-    }
-    if (p_schemeSpecificPart == null ||
-        p_schemeSpecificPart.trim().length() == 0) {
-      throw new MalformedURIException(
-          "Cannot construct URI with null/empty scheme-specific part!");
-    }
-    setScheme(p_scheme);
-    setPath(p_schemeSpecificPart);
-  }
-
- /**
-  * Construct a new URI that follows the generic URI syntax from its
-  * component parts. Each component is validated for syntax and some
-  * basic semantic checks are performed as well.  See the individual
-  * setter methods for specifics.
-  *
-  * @param p_scheme the URI scheme (cannot be null or empty)
-  * @param p_host the hostname or IPv4 address for the URI
-  * @param p_path the URI path - if the path contains '?' or '#',
-  *               then the query string and/or fragment will be
-  *               set from the path; however, if the query and
-  *               fragment are specified both in the path and as
-  *               separate parameters, an exception is thrown
-  * @param p_queryString the URI query string (cannot be specified
-  *                      if path is null)
-  * @param p_fragment the URI fragment (cannot be specified if path
-  *                   is null)
-  *
-  * @exception MalformedURIException if any of the parameters violates
-  *                                  syntax rules or semantic rules
-  */
-  public JaxmURI(String p_scheme, String p_host, String p_path,
-             String p_queryString, String p_fragment)
-         throws MalformedURIException {
-    this(p_scheme, null, p_host, -1, p_path, p_queryString, p_fragment);
-  }
-
- /**
-  * Construct a new URI that follows the generic URI syntax from its
-  * component parts. Each component is validated for syntax and some
-  * basic semantic checks are performed as well.  See the individual
-  * setter methods for specifics.
-  *
-  * @param p_scheme the URI scheme (cannot be null or empty)
-  * @param p_userinfo the URI userinfo (cannot be specified if host
-  *                   is null)
-  * @param p_host the hostname or IPv4 address for the URI
-  * @param p_port the URI port (may be -1 for "unspecified"; cannot
-  *               be specified if host is null)
-  * @param p_path the URI path - if the path contains '?' or '#',
-  *               then the query string and/or fragment will be
-  *               set from the path; however, if the query and
-  *               fragment are specified both in the path and as
-  *               separate parameters, an exception is thrown
-  * @param p_queryString the URI query string (cannot be specified
-  *                      if path is null)
-  * @param p_fragment the URI fragment (cannot be specified if path
-  *                   is null)
-  *
-  * @exception MalformedURIException if any of the parameters violates
-  *                                  syntax rules or semantic rules
-  */
-  public JaxmURI(String p_scheme, String p_userinfo,
-             String p_host, int p_port, String p_path,
-             String p_queryString, String p_fragment)
-         throws MalformedURIException {
-    if (p_scheme == null || p_scheme.trim().length() == 0) {
-      throw new MalformedURIException("Scheme is required!");
-    }
-
-    if (p_host == null) {
-      if (p_userinfo != null) {
-        throw new MalformedURIException(
-             "Userinfo may not be specified if host is not specified!");
-      }
-      if (p_port != -1) {
-        throw new MalformedURIException(
-             "Port may not be specified if host is not specified!");
-      }
-    }
-
-    if (p_path != null) {
-      if (p_path.indexOf('?') != -1 && p_queryString != null) {
-        throw new MalformedURIException(
-          "Query string cannot be specified in path and query string!");
-      }
-
-      if (p_path.indexOf('#') != -1 && p_fragment != null) {
-        throw new MalformedURIException(
-          "Fragment cannot be specified in both the path and fragment!");
-      }
-    }
-
-    setScheme(p_scheme);
-    setHost(p_host);
-    setPort(p_port);
-    setUserinfo(p_userinfo);
-    setPath(p_path);
-    setQueryString(p_queryString);
-    setFragment(p_fragment);
-  }
-
- /**
-  * Initialize all fields of this URI from another URI.
-  *
-  * @param p_other the URI to copy (cannot be null)
-  */
-  private void initialize(JaxmURI p_other) {
-    m_scheme = p_other.getScheme();
-    m_userinfo = p_other.getUserinfo();
-    m_host = p_other.getHost();
-    m_port = p_other.getPort();
-    m_path = p_other.getPath();
-    m_queryString = p_other.getQueryString();
-    m_fragment = p_other.getFragment();
-  }
-
- /**
-  * Initializes this URI from a base URI and a URI specification string.
-  * See RFC 2396 Section 4 and Appendix B for specifications on parsing
-  * the URI and Section 5 for specifications on resolving relative URIs
-  * and relative paths.
-  *
-  * @param p_base the base URI (may be null if p_uriSpec is an absolute
-  *               URI)
-  * @param p_uriSpec the URI spec string which may be an absolute or
-  *                  relative URI (can only be null/empty if p_base
-  *                  is not null)
-  *
-  * @exception MalformedURIException if p_base is null and p_uriSpec
-  *                                  is not an absolute URI or if
-  *                                  p_uriSpec violates syntax rules
-  */
-  private void initialize(JaxmURI p_base, String p_uriSpec)
-                         throws MalformedURIException {
-    if (p_base == null &&
-        (p_uriSpec == null || p_uriSpec.trim().length() == 0)) {
-      throw new MalformedURIException(
-                  "Cannot initialize URI with empty parameters.");
-      }
-
-    // just make a copy of the base if spec is empty
-    if (p_uriSpec == null || p_uriSpec.trim().length() == 0) {
-      initialize(p_base);
-      return;
-    }
-
-    String uriSpec = p_uriSpec.trim();
-    int uriSpecLen = uriSpec.length();
-    int index = 0;
-
-    // Check for scheme, which must be before `/'. Also handle names with
-    // DOS drive letters ('D:'), so 1-character schemes are not allowed.
-    int colonIdx = uriSpec.indexOf(':');
-    int slashIdx = uriSpec.indexOf('/');
-    if ((colonIdx < 2) || (colonIdx > slashIdx && slashIdx != -1)) {
-      int fragmentIdx = uriSpec.indexOf('#');
-      // A standalone base is a valid URI according to spec
-      if (p_base == null && fragmentIdx != 0 ) {
-        throw new MalformedURIException("No scheme found in URI.");
-      }
-    }
-    else {
-      initializeScheme(uriSpec);
-      index = m_scheme.length()+1;
-    }
-
-    // two slashes means generic URI syntax, so we get the authority
-    if (((index+1) < uriSpecLen) &&
-        (uriSpec.substring(index).startsWith("//"))) {
-      index += 2;
-      int startPos = index;
-
-      // get authority - everything up to path, query or fragment
-      char testChar = '\0';
-      while (index < uriSpecLen) {
-        testChar = uriSpec.charAt(index);
-        if (testChar == '/' || testChar == '?' || testChar == '#') {
-          break;
-        }
-        index++;
-      }
-
-      // if we found authority, parse it out, otherwise we set the
-      // host to empty string
-      if (index > startPos) {
-        initializeAuthority(uriSpec.substring(startPos, index));
-      }
-      else {
-        m_host = "";
-      }
-    }
-
-    initializePath(uriSpec.substring(index));
-
-    // Resolve relative URI to base URI - see RFC 2396 Section 5.2
-    // In some cases, it might make more sense to throw an exception
-    // (when scheme is specified is the string spec and the base URI
-    // is also specified, for example), but we're just following the
-    // RFC specifications
-    if (p_base != null) {
-
-      // check to see if this is the current doc - RFC 2396 5.2 #2
-      // note that this is slightly different from the RFC spec in that
-      // we don't include the check for query string being null
-      // - this handles cases where the urispec is just a query
-      // string or a fragment (e.g. "?y" or "#s") -
-      // see <http://www.ics.uci.edu/~fielding/url/test1.html> which
-      // identified this as a bug in the RFC
-      if (m_path.length() == 0 && m_scheme == null &&
-          m_host == null) {
-        m_scheme = p_base.getScheme();
-        m_userinfo = p_base.getUserinfo();
-        m_host = p_base.getHost();
-        m_port = p_base.getPort();
-        m_path = p_base.getPath();
-
-        if (m_queryString == null) {
-          m_queryString = p_base.getQueryString();
-        }
-        return;
-      }
-
-      // check for scheme - RFC 2396 5.2 #3
-      // if we found a scheme, it means absolute URI, so we're done
-      if (m_scheme == null) {
-        m_scheme = p_base.getScheme();
-      }
-      else {
-        return;
-      }
-
-      // check for authority - RFC 2396 5.2 #4
-      // if we found a host, then we've got a network path, so we're done
-      if (m_host == null) {
-        m_userinfo = p_base.getUserinfo();
-        m_host = p_base.getHost();
-        m_port = p_base.getPort();
-      }
-      else {
-        return;
-      }
-
-      // check for absolute path - RFC 2396 5.2 #5
-      if (m_path.length() > 0 &&
-          m_path.startsWith("/")) {
-        return;
-      }
-
-      // if we get to this point, we need to resolve relative path
-      // RFC 2396 5.2 #6
-      String path = "";
-      String basePath = p_base.getPath();
-
-      // 6a - get all but the last segment of the base URI path
-      if (basePath != null) {
-        int lastSlash = basePath.lastIndexOf('/');
-        if (lastSlash != -1) {
-          path = basePath.substring(0, lastSlash+1);
-        }
-      }
-
-      // 6b - append the relative URI path
-      path = path.concat(m_path);
-
-      // 6c - remove all "./" where "." is a complete path segment
-      index = -1;
-      while ((index = path.indexOf("/./")) != -1) {
-        path = path.substring(0, index+1).concat(path.substring(index+3));
-      }
-
-      // 6d - remove "." if path ends with "." as a complete path segment
-      if (path.endsWith("/.")) {
-        path = path.substring(0, path.length()-1);
-      }
-
-      // 6e - remove all "<segment>/../" where "<segment>" is a complete
-      // path segment not equal to ".."
-      index = 1;
-      int segIndex = -1;
-      String tempString = null;
-
-      while ((index = path.indexOf("/../", index)) > 0) {
-        tempString = path.substring(0, path.indexOf("/../"));
-        segIndex = tempString.lastIndexOf('/');
-        if (segIndex != -1) {
-          if (!tempString.substring(segIndex++).equals("..")) {
-            path = path.substring(0, segIndex).concat(path.substring(index+4));
-          }
-          else
-            index += 4;
-        }
-        else
-          index += 4;
-      }
-
-      // 6f - remove ending "<segment>/.." where "<segment>" is a
-      // complete path segment
-      if (path.endsWith("/..")) {
-        tempString = path.substring(0, path.length()-3);
-        segIndex = tempString.lastIndexOf('/');
-        if (segIndex != -1) {
-          path = path.substring(0, segIndex+1);
-        }
-      }
-      m_path = path;
-    }
-  }
-
- /**
-  * Initialize the scheme for this URI from a URI string spec.
-  *
-  * @param p_uriSpec the URI specification (cannot be null)
-  *
-  * @exception MalformedURIException if URI does not have a conformant
-  *                                  scheme
-  */
-  private void initializeScheme(String p_uriSpec)
-                 throws MalformedURIException {
-    int uriSpecLen = p_uriSpec.length();
-    int index = 0;
-    String scheme = null;
-    char testChar = '\0';
-
-    while (index < uriSpecLen) {
-      testChar = p_uriSpec.charAt(index);
-      if (testChar == ':' || testChar == '/' ||
-          testChar == '?' || testChar == '#') {
-        break;
-      }
-      index++;
-    }
-    scheme = p_uriSpec.substring(0, index);
-
-    if (scheme.length() == 0) {
-      throw new MalformedURIException("No scheme found in URI.");
-    }
-    else {
-      setScheme(scheme);
-    }
-  }
-
- /**
-  * Initialize the authority (userinfo, host and port) for this
-  * URI from a URI string spec.
-  *
-  * @param p_uriSpec the URI specification (cannot be null)
-  *
-  * @exception MalformedURIException if p_uriSpec violates syntax rules
-  */
-  private void initializeAuthority(String p_uriSpec)
-                 throws MalformedURIException {
-    int index = 0;
-    int start = 0;
-    int end = p_uriSpec.length();
-    char testChar = '\0';
-    String userinfo = null;
-
-    // userinfo is everything up @
-    if (p_uriSpec.indexOf('@', start) != -1) {
-      while (index < end) {
-        testChar = p_uriSpec.charAt(index);
-        if (testChar == '@') {
-          break;
-        }
-        index++;
-      }
-      userinfo = p_uriSpec.substring(start, index);
-      index++;
-    }
-
-    // host is everything up to ':'
-    String host = null;
-    start = index;
-    while (index < end) {
-      testChar = p_uriSpec.charAt(index);
-      if (testChar == ':') {
-        break;
-      }
-      index++;
-    }
-    host = p_uriSpec.substring(start, index);
-    int port = -1;
-    if (host.length() > 0) {
-      // port
-      if (testChar == ':') {
-        index++;
-        start = index;
-        while (index < end) {
-          index++;
-        }
-        String portStr = p_uriSpec.substring(start, index);
-        if (portStr.length() > 0) {
-          for (int i = 0; i < portStr.length(); i++) {
-            if (!isDigit(portStr.charAt(i))) {
-              throw new MalformedURIException(
-                   portStr +
-                   " is invalid. Port should only contain digits!");
-            }
-          }
-          try {
-            port = Integer.parseInt(portStr);
-          }
-          catch (NumberFormatException nfe) {
-            // can't happen
-          }
-        }
-      }
-    }
-    setHost(host);
-    setPort(port);
-    setUserinfo(userinfo);
-  }
-
- /**
-  * Initialize the path for this URI from a URI string spec.
-  *
-  * @param p_uriSpec the URI specification (cannot be null)
-  *
-  * @exception MalformedURIException if p_uriSpec violates syntax rules
-  */
-  private void initializePath(String p_uriSpec)
-                 throws MalformedURIException {
-    if (p_uriSpec == null) {
-      throw new MalformedURIException(
-                "Cannot initialize path from null string!");
-    }
-
-    int index = 0;
-    int start = 0;
-    int end = p_uriSpec.length();
-    char testChar = '\0';
-
-    // path - everything up to query string or fragment
-    while (index < end) {
-      testChar = p_uriSpec.charAt(index);
-      if (testChar == '?' || testChar == '#') {
-        break;
-      }
-      // check for valid escape sequence
-      if (testChar == '%') {
-         if (index+2 >= end ||
-            !isHex(p_uriSpec.charAt(index+1)) ||
-            !isHex(p_uriSpec.charAt(index+2))) {
-          throw new MalformedURIException(
-                "Path contains invalid escape sequence!");
-         }
-      }
-      else if (!isReservedCharacter(testChar) &&
-               !isUnreservedCharacter(testChar)) {
-        throw new MalformedURIException(
-                  "Path contains invalid character: " + testChar);
-      }
-      index++;
-    }
-    m_path = p_uriSpec.substring(start, index);
-
-    // query - starts with ? and up to fragment or end
-    if (testChar == '?') {
-      index++;
-      start = index;
-      while (index < end) {
-        testChar = p_uriSpec.charAt(index);
-        if (testChar == '#') {
-          break;
-        }
-        if (testChar == '%') {
-           if (index+2 >= end ||
-              !isHex(p_uriSpec.charAt(index+1)) ||
-              !isHex(p_uriSpec.charAt(index+2))) {
-            throw new MalformedURIException(
-                    "Query string contains invalid escape sequence!");
-           }
-        }
-        else if (!isReservedCharacter(testChar) &&
-                 !isUnreservedCharacter(testChar)) {
-          throw new MalformedURIException(
-                "Query string contains invalid character:" + testChar);
-        }
-        index++;
-      }
-      m_queryString = p_uriSpec.substring(start, index);
-    }
-
-    // fragment - starts with #
-    if (testChar == '#') {
-      index++;
-      start = index;
-      while (index < end) {
-        testChar = p_uriSpec.charAt(index);
-
-        if (testChar == '%') {
-           if (index+2 >= end ||
-              !isHex(p_uriSpec.charAt(index+1)) ||
-              !isHex(p_uriSpec.charAt(index+2))) {
-            throw new MalformedURIException(
-                    "Fragment contains invalid escape sequence!");
-           }
-        }
-        else if (!isReservedCharacter(testChar) &&
-                 !isUnreservedCharacter(testChar)) {
-          throw new MalformedURIException(
-                "Fragment contains invalid character:"+testChar);
-        }
-        index++;
-      }
-      m_fragment = p_uriSpec.substring(start, index);
-    }
-  }
-
- /**
-  * Get the scheme for this URI.
-  *
-  * @return the scheme for this URI
-  */
-  public String getScheme() {
-    return m_scheme;
-  }
-
- /**
-  * Get the scheme-specific part for this URI (everything following the
-  * scheme and the first colon). See RFC 2396 Section 5.2 for spec.
-  *
-  * @return the scheme-specific part for this URI
-  */
-  public String getSchemeSpecificPart() {
-    StringBuffer schemespec = new StringBuffer();
-
-    if (m_userinfo != null || m_host != null || m_port != -1) {
-      schemespec.append("//");
-    }
-
-    if (m_userinfo != null) {
-      schemespec.append(m_userinfo);
-      schemespec.append('@');
-    }
-
-    if (m_host != null) {
-      schemespec.append(m_host);
-    }
-
-    if (m_port != -1) {
-      schemespec.append(':');
-      schemespec.append(m_port);
-    }
-
-    if (m_path != null) {
-      schemespec.append((m_path));
-    }
-
-    if (m_queryString != null) {
-      schemespec.append('?');
-      schemespec.append(m_queryString);
-    }
-
-    if (m_fragment != null) {
-      schemespec.append('#');
-      schemespec.append(m_fragment);
-    }
-
-    return schemespec.toString();
-  }
-
- /**
-  * Get the userinfo for this URI.
-  *
-  * @return the userinfo for this URI (null if not specified).
-  */
-  public String getUserinfo() {
-    return m_userinfo;
-  }
-
-  /**
-  * Get the host for this URI.
-  *
-  * @return the host for this URI (null if not specified).
-  */
-  public String getHost() {
-    return m_host;
-  }
-
- /**
-  * Get the port for this URI.
-  *
-  * @return the port for this URI (-1 if not specified).
-  */
-  public int getPort() {
-    return m_port;
-  }
-
- /**
-  * Get the path for this URI (optionally with the query string and
-  * fragment).
-  *
-  * @param p_includeQueryString if true (and query string is not null),
-  *                             then a "?" followed by the query string
-  *                             will be appended
-  * @param p_includeFragment if true (and fragment is not null),
-  *                             then a "#" followed by the fragment
-  *                             will be appended
-  *
-  * @return the path for this URI possibly including the query string
-  *         and fragment
-  */
-  public String getPath(boolean p_includeQueryString,
-                        boolean p_includeFragment) {
-    StringBuffer pathString = new StringBuffer(m_path);
-
-    if (p_includeQueryString && m_queryString != null) {
-      pathString.append('?');
-      pathString.append(m_queryString);
-    }
-
-    if (p_includeFragment && m_fragment != null) {
-      pathString.append('#');
-      pathString.append(m_fragment);
-    }
-    return pathString.toString();
-  }
-
- /**
-  * Get the path for this URI. Note that the value returned is the path
-  * only and does not include the query string or fragment.
-  *
-  * @return the path for this URI.
-  */
-  public String getPath() {
-    return m_path;
-  }
-
- /**
-  * Get the query string for this URI.
-  *
-  * @return the query string for this URI. Null is returned if there
-  *         was no "?" in the URI spec, empty string if there was a
-  *         "?" but no query string following it.
-  */
-  public String getQueryString() {
-    return m_queryString;
-  }
-
- /**
-  * Get the fragment for this URI.
-  *
-  * @return the fragment for this URI. Null is returned if there
-  *         was no "#" in the URI spec, empty string if there was a
-  *         "#" but no fragment following it.
-  */
-  public String getFragment() {
-    return m_fragment;
-  }
-
- /**
-  * Set the scheme for this URI. The scheme is converted to lowercase
-  * before it is set.
-  *
-  * @param p_scheme the scheme for this URI (cannot be null)
-  *
-  * @exception MalformedURIException if p_scheme is not a conformant
-  *                                  scheme name
-  */
-  public void setScheme(String p_scheme) throws MalformedURIException {
-    if (p_scheme == null) {
-      throw new MalformedURIException(
-                "Cannot set scheme from null string!");
-    }
-    if (!isConformantSchemeName(p_scheme)) {
-      throw new MalformedURIException("The scheme is not conformant.");
-    }
-
-    m_scheme = p_scheme.toLowerCase();
-  }
-
- /**
-  * Set the userinfo for this URI. If a non-null value is passed in and
-  * the host value is null, then an exception is thrown.
-  *
-  * @param p_userinfo the userinfo for this URI
-  *
-  * @exception MalformedURIException if p_userinfo contains invalid
-  *                                  characters
-  */
-  public void setUserinfo(String p_userinfo) throws MalformedURIException {
-    if (p_userinfo == null) {
-      m_userinfo = null;
-    }
-    else {
-      if (m_host == null) {
-        throw new MalformedURIException(
-                     "Userinfo cannot be set when host is null!");
-      }
-
-      // userinfo can contain alphanumerics, mark characters, escaped
-      // and ';',':','&','=','+','$',','
-      int index = 0;
-      int end = p_userinfo.length();
-      char testChar = '\0';
-      while (index < end) {
-        testChar = p_userinfo.charAt(index);
-        if (testChar == '%') {
-          if (index+2 >= end ||
-              !isHex(p_userinfo.charAt(index+1)) ||
-              !isHex(p_userinfo.charAt(index+2))) {
-            throw new MalformedURIException(
-                  "Userinfo contains invalid escape sequence!");
-          }
-        }
-        else if (!isUnreservedCharacter(testChar) &&
-                 USERINFO_CHARACTERS.indexOf(testChar) == -1) {
-          throw new MalformedURIException(
-                  "Userinfo contains invalid character:"+testChar);
-        }
-        index++;
-      }
-    }
-    m_userinfo = p_userinfo;
-  }
-
-  /**
-  * Set the host for this URI. If null is passed in, the userinfo
-  * field is also set to null and the port is set to -1.
-  *
-  * @param p_host the host for this URI
-  *
-  * @exception MalformedURIException if p_host is not a valid IP
-  *                                  address or DNS hostname.
-  */
-  public void setHost(String p_host) throws MalformedURIException {
-    if (p_host == null || p_host.trim().length() == 0) {
-      m_host = p_host;
-      m_userinfo = null;
-      m_port = -1;
-    }
-    else if (!isWellFormedAddress(p_host)) {
-      throw new MalformedURIException("Host is not a well formed address!");
-    }
-    m_host = p_host;
-  }
-
- /**
-  * Set the port for this URI. -1 is used to indicate that the port is
-  * not specified, otherwise valid port numbers are  between 0 and 65535.
-  * If a valid port number is passed in and the host field is null,
-  * an exception is thrown.
-  *
-  * @param p_port the port number for this URI
-  *
-  * @exception MalformedURIException if p_port is not -1 and not a
-  *                                  valid port number
-  */
-  public void setPort(int p_port) throws MalformedURIException {
-    if (p_port >= 0 && p_port <= 65535) {
-      if (m_host == null) {
-        throw new MalformedURIException(
-                      "Port cannot be set when host is null!");
-      }
-    }
-    else if (p_port != -1) {
-      throw new MalformedURIException("Invalid port number!");
-    }
-    m_port = p_port;
-  }
-
- /**
-  * Set the path for this URI. If the supplied path is null, then the
-  * query string and fragment are set to null as well. If the supplied
-  * path includes a query string and/or fragment, these fields will be
-  * parsed and set as well. Note that, for URIs following the "generic
-  * URI" syntax, the path specified should start with a slash.
-  * For URIs that do not follow the generic URI syntax, this method
-  * sets the scheme-specific part.
-  *
-  * @param p_path the path for this URI (may be null)
-  *
-  * @exception MalformedURIException if p_path contains invalid
-  *                                  characters
-  */
-  public void setPath(String p_path) throws MalformedURIException {
-    if (p_path == null) {
-      m_path = null;
-      m_queryString = null;
-      m_fragment = null;
-    }
-    else {
-      initializePath(p_path);
-    }
-  }
-
- /**
-  * Append to the end of the path of this URI. If the current path does
-  * not end in a slash and the path to be appended does not begin with
-  * a slash, a slash will be appended to the current path before the
-  * new segment is added. Also, if the current path ends in a slash
-  * and the new segment begins with a slash, the extra slash will be
-  * removed before the new segment is appended.
-  *
-  * @param p_addToPath the new segment to be added to the current path
-  *
-  * @exception MalformedURIException if p_addToPath contains syntax
-  *                                  errors
-  */
-  public void appendPath(String p_addToPath)
-                         throws MalformedURIException {
-    if (p_addToPath == null || p_addToPath.trim().length() == 0) {
-      return;
-    }
-
-    if (!isURIString(p_addToPath)) {
-      throw new MalformedURIException(
-              "Path contains invalid character!");
-    }
-
-    if (m_path == null || m_path.trim().length() == 0) {
-      if (p_addToPath.startsWith("/")) {
-        m_path = p_addToPath;
-      }
-      else {
-        m_path = "/" + p_addToPath;
-      }
-    }
-    else if (m_path.endsWith("/")) {
-      if (p_addToPath.startsWith("/")) {
-        m_path = m_path.concat(p_addToPath.substring(1));
-      }
-      else {
-        m_path = m_path.concat(p_addToPath);
-      }
-    }
-    else {
-      if (p_addToPath.startsWith("/")) {
-        m_path = m_path.concat(p_addToPath);
-      }
-      else {
-        m_path = m_path.concat("/" + p_addToPath);
-      }
-    }
-  }
-
- /**
-  * Set the query string for this URI. A non-null value is valid only
-  * if this is an URI conforming to the generic URI syntax and
-  * the path value is not null.
-  *
-  * @param p_queryString the query string for this URI
-  *
-  * @exception MalformedURIException if p_queryString is not null and this
-  *                                  URI does not conform to the generic
-  *                                  URI syntax or if the path is null
-  */
-  public void setQueryString(String p_queryString) throws MalformedURIException {
-    if (p_queryString == null) {
-      m_queryString = null;
-    }
-    else if (!isGenericURI()) {
-      throw new MalformedURIException(
-              "Query string can only be set for a generic URI!");
-    }
-    else if (getPath() == null) {
-      throw new MalformedURIException(
-              "Query string cannot be set when path is null!");
-    }
-    else if (!isURIString(p_queryString)) {
-      throw new MalformedURIException(
-              "Query string contains invalid character!");
-    }
-    else {
-      m_queryString = p_queryString;
-    }
-  }
-
- /**
-  * Set the fragment for this URI. A non-null value is valid only
-  * if this is a URI conforming to the generic URI syntax and
-  * the path value is not null.
-  *
-  * @param p_fragment the fragment for this URI
-  *
-  * @exception MalformedURIException if p_fragment is not null and this
-  *                                  URI does not conform to the generic
-  *                                  URI syntax or if the path is null
-  */
-  public void setFragment(String p_fragment) throws MalformedURIException {
-    if (p_fragment == null) {
-      m_fragment = null;
-    }
-    else if (!isGenericURI()) {
-      throw new MalformedURIException(
-         "Fragment can only be set for a generic URI!");
-    }
-    else if (getPath() == null) {
-      throw new MalformedURIException(
-              "Fragment cannot be set when path is null!");
-    }
-    else if (!isURIString(p_fragment)) {
-      throw new MalformedURIException(
-              "Fragment contains invalid character!");
-    }
-    else {
-      m_fragment = p_fragment;
-    }
-  }
-
- /**
-  * Determines if the passed-in Object is equivalent to this URI.
-  *
-  * @param p_test the Object to test for equality.
-  *
-  * @return true if p_test is a URI with all values equal to this
-  *         URI, false otherwise
-  */
-  public boolean equals(Object p_test) {
-    if (p_test instanceof JaxmURI) {
-      JaxmURI testURI = (JaxmURI) p_test;
-      if (((m_scheme == null && testURI.m_scheme == null) ||
-           (m_scheme != null && testURI.m_scheme != null &&
-            m_scheme.equals(testURI.m_scheme))) &&
-          ((m_userinfo == null && testURI.m_userinfo == null) ||
-           (m_userinfo != null && testURI.m_userinfo != null &&
-            m_userinfo.equals(testURI.m_userinfo))) &&
-          ((m_host == null && testURI.m_host == null) ||
-           (m_host != null && testURI.m_host != null &&
-            m_host.equals(testURI.m_host))) &&
-            m_port == testURI.m_port &&
-          ((m_path == null && testURI.m_path == null) ||
-           (m_path != null && testURI.m_path != null &&
-            m_path.equals(testURI.m_path))) &&
-          ((m_queryString == null && testURI.m_queryString == null) ||
-           (m_queryString != null && testURI.m_queryString != null &&
-            m_queryString.equals(testURI.m_queryString))) &&
-          ((m_fragment == null && testURI.m_fragment == null) ||
-           (m_fragment != null && testURI.m_fragment != null &&
-            m_fragment.equals(testURI.m_fragment)))) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  public int hashCode() {
-          // No members safe to use, just default to a constant.
-          return 153214;
-  }
-
- /**
-  * Get the URI as a string specification. See RFC 2396 Section 5.2.
-  *
-  * @return the URI string specification
-  */
-  public String toString() {
-    StringBuffer uriSpecString = new StringBuffer();
-
-    if (m_scheme != null) {
-      uriSpecString.append(m_scheme);
-      uriSpecString.append(':');
-    }
-    uriSpecString.append(getSchemeSpecificPart());
-    return uriSpecString.toString();
-  }
-
- /**
-  * Get the indicator as to whether this URI uses the "generic URI"
-  * syntax.
-  *
-  * @return true if this URI uses the "generic URI" syntax, false
-  *         otherwise
-  */
-  public boolean isGenericURI() {
-    // presence of the host (whether valid or empty) means
-    // double-slashes which means generic uri
-    return (m_host != null);
-  }
-
- /**
-  * Determine whether a scheme conforms to the rules for a scheme name.
-  * A scheme is conformant if it starts with an alphanumeric, and
-  * contains only alphanumerics, '+','-' and '.'.
-  *
-  * @return true if the scheme is conformant, false otherwise
-  */
-  public static boolean isConformantSchemeName(String p_scheme) {
-    if (p_scheme == null || p_scheme.trim().length() == 0) {
-      return false;
-    }
-
-    if (!isAlpha(p_scheme.charAt(0))) {
-      return false;
-    }
-
-    char testChar;
-    for (int i = 1; i < p_scheme.length(); i++) {
-      testChar = p_scheme.charAt(i);
-      if (!isAlphanum(testChar) &&
-          SCHEME_CHARACTERS.indexOf(testChar) == -1) {
-        return false;
-      }
-    }
-
-    return true;
-  }
-
- /**
-  * Determine whether a string is syntactically capable of representing
-  * a valid IPv4 address or the domain name of a network host. A valid
-  * IPv4 address consists of four decimal digit groups separated by a
-  * '.'. A hostname consists of domain labels (each of which must
-  * begin and end with an alphanumeric but may contain '-') separated
-  & by a '.'. See RFC 2396 Section 3.2.2.
-  *
-  * @return true if the string is a syntactically valid IPv4 address
-  *              or hostname
-  */
-  public static boolean isWellFormedAddress(String p_address) {
-    if (p_address == null) {
-      return false;
-    }
-
-    String address = p_address.trim();
-    int addrLength = address.length();
-    if (addrLength == 0 || addrLength > 255) {
-      return false;
-    }
-
-    if (address.startsWith(".") || address.startsWith("-")) {
-      return false;
-    }
-
-    // rightmost domain label starting with digit indicates IP address
-    // since top level domain label can only start with an alpha
-    // see RFC 2396 Section 3.2.2
-    int index = address.lastIndexOf('.');
-    if (address.endsWith(".")) {
-      index = address.substring(0, index).lastIndexOf('.');
-    }
-
-    if (index+1 < addrLength && isDigit(p_address.charAt(index+1))) {
-      char testChar;
-      int numDots = 0;
-
-      // make sure that 1) we see only digits and dot separators, 2) that
-      // any dot separator is preceded and followed by a digit and
-      // 3) that we find 3 dots
-      for (int i = 0; i < addrLength; i++) {
-        testChar = address.charAt(i);
-        if (testChar == '.') {
-          if (!isDigit(address.charAt(i-1)) ||
-              (i+1 < addrLength && !isDigit(address.charAt(i+1)))) {
-            return false;
-          }
-          numDots++;
-        }
-        else if (!isDigit(testChar)) {
-          return false;
-        }
-      }
-      if (numDots != 3) {
-        return false;
-      }
-    }
-    else {
-      // domain labels can contain alphanumerics and '-"
-      // but must start and end with an alphanumeric
-      char testChar;
-
-      for (int i = 0; i < addrLength; i++) {
-        testChar = address.charAt(i);
-        if (testChar == '.') {
-          if (!isAlphanum(address.charAt(i-1))) {
-            return false;
-          }
-          if (i+1 < addrLength && !isAlphanum(address.charAt(i+1))) {
-            return false;
-          }
-        }
-        else if (!isAlphanum(testChar) && testChar != '-') {
-          return false;
-        }
-      }
-    }
-    return true;
-  }
-
-
- /**
-  * Determine whether a char is a digit.
-  *
-  * @return true if the char is betweeen '0' and '9', false otherwise
-  */
-  private static boolean isDigit(char p_char) {
-    return p_char >= '0' && p_char <= '9';
-  }
-
- /**
-  * Determine whether a character is a hexadecimal character.
-  *
-  * @return true if the char is betweeen '0' and '9', 'a' and 'f'
-  *         or 'A' and 'F', false otherwise
-  */
-  private static boolean isHex(char p_char) {
-    return (isDigit(p_char) ||
-            (p_char >= 'a' && p_char <= 'f') ||
-            (p_char >= 'A' && p_char <= 'F'));
-  }
-
- /**
-  * Determine whether a char is an alphabetic character: a-z or A-Z
-  *
-  * @return true if the char is alphabetic, false otherwise
-  */
-  private static boolean isAlpha(char p_char) {
-    return ((p_char >= 'a' && p_char <= 'z') ||
-            (p_char >= 'A' && p_char <= 'Z' ));
-  }
-
- /**
-  * Determine whether a char is an alphanumeric: 0-9, a-z or A-Z
-  *
-  * @return true if the char is alphanumeric, false otherwise
-  */
-  private static boolean isAlphanum(char p_char) {
-    return (isAlpha(p_char) || isDigit(p_char));
-  }
-
- /**
-  * Determine whether a character is a reserved character:
-  * ';', '/', '?', ':', '@', '&', '=', '+', '$' or ','
-  *
-  * @return true if the string contains any reserved characters
-  */
-  private static boolean isReservedCharacter(char p_char) {
-    return RESERVED_CHARACTERS.indexOf(p_char) != -1;
-  }
-
- /**
-  * Determine whether a char is an unreserved character.
-  *
-  * @return true if the char is unreserved, false otherwise
-  */
-  private static boolean isUnreservedCharacter(char p_char) {
-    return (isAlphanum(p_char) ||
-            MARK_CHARACTERS.indexOf(p_char) != -1);
-  }
-
- /**
-  * Determine whether a given string contains only URI characters (also
-  * called "uric" in RFC 2396). uric consist of all reserved
-  * characters, unreserved characters and escaped characters.
-  *
-  * @return true if the string is comprised of uric, false otherwise
-  */
-  private static boolean isURIString(String p_uric) {
-    if (p_uric == null) {
-      return false;
-    }
-    int end = p_uric.length();
-    char testChar = '\0';
-    for (int i = 0; i < end; i++) {
-      testChar = p_uric.charAt(i);
-      if (testChar == '%') {
-        if (i+2 >= end ||
-            !isHex(p_uric.charAt(i+1)) ||
-            !isHex(p_uric.charAt(i+2))) {
-          return false;
-        }
-        else {
-          i += 2;
-          continue;
-        }
-      }
-      if (isReservedCharacter(testChar) ||
-          isUnreservedCharacter(testChar)) {
-          continue;
-      }
-      else {
-        return false;
-      }
-    }
-    return true;
-  }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for util pkg
-# Error messages
-SAAJ0601.util.newSAXParser.exception=SAAJ0601: Can't create RejectDoctypSaxFilter because SAXParserFactory.newSAXParser threw an exception. See stack trace for details
-SAAJ0602.util.getXMLReader.exception=SAAJ0602: Can't create RejectDoctypSaxFilter because SAXParser.getXMLReader threw an exception. See stack trace for details
-SAAJ0603.util.setProperty.exception=SAAJ0603: Can't create RejectDoctypSaxFilter because XMLReader.setProperty threw an exception. See stack trace for details
-
-# Info messages
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_de.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for util pkg
-# Error messages
-SAAJ0601.util.newSAXParser.exception=SAAJ0601: RejectDoctypSaxFilter kann nicht erstellt werden, weil SAXParserFactory.newSAXParser eine Ausnahme ausgel\u00F6st hat. Weitere Einzelheiten finden Sie im Stack Trace
-SAAJ0602.util.getXMLReader.exception=SAAJ0602: RejectDoctypSaxFilter kann nicht erstellt werden, weil SAXParser.getXMLReader eine Ausnahme ausgel\u00F6st hat. Weitere Einzelheiten finden Sie im Stack Trace
-SAAJ0603.util.setProperty.exception=SAAJ0603: RejectDoctypSaxFilter kann nicht erstellt werden, weil XMLReader.setProperty eine Ausnahme ausgel\u00F6st hat. Weitere Einzelheiten finden Sie im Stack Trace
-
-# Info messages
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_es.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for util pkg
-# Error messages
-SAAJ0601.util.newSAXParser.exception=SAAJ0601: no se puede crear RejectDoctypSaxFilter, porque SAXParserFactory.newSAXParser ha devuelto una excepci\u00F3n. Consulte el rastreo de pila para obtener m\u00E1s informaci\u00F3n
-SAAJ0602.util.getXMLReader.exception=SAAJ0602: no se puede crear RejectDoctypSaxFilter, porque SAXParser.getXMLReader ha devuelto una excepci\u00F3n. Consulte el rastreo de pila para obtener m\u00E1s informaci\u00F3n
-SAAJ0603.util.setProperty.exception=SAAJ0603: no se puede crear RejectDoctypSaxFilter porque XMLReader.setProperty ha devuelto una excepci\u00F3n. Consulte el rastreo de pila para obtener m\u00E1s informaci\u00F3n
-
-# Info messages
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_fr.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for util pkg
-# Error messages
-SAAJ0601.util.newSAXParser.exception=SAAJ0601 : impossible de cr\u00E9er RejectDoctypSaxFilter car SAXParserFactory.newSAXParser a g\u00E9n\u00E9r\u00E9 une exception. Pour plus de d\u00E9tails, consultez la trace de pile
-SAAJ0602.util.getXMLReader.exception=SAAJ0602 : impossible de cr\u00E9er RejectDoctypSaxFilter car SAXParser.getXMLReader a g\u00E9n\u00E9r\u00E9 une exception. Pour plus de d\u00E9tails, consultez la trace de pile
-SAAJ0603.util.setProperty.exception=SAAJ0603 : impossible de cr\u00E9er RejectDoctypSaxFilter car XMLReader.setProperty a g\u00E9n\u00E9r\u00E9 une exception. Pour plus de d\u00E9tails, consultez la trace de pile
-
-# Info messages
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_it.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for util pkg
-# Error messages
-SAAJ0601.util.newSAXParser.exception=SAAJ0601: Impossibile creare RejectDoctypSaxFilter poich\u00E9 SAXParserFactory.newSAXParser ha restituito un'eccezione. Vedere lo stack trace per i dettagli.
-SAAJ0602.util.getXMLReader.exception=SAAJ0602: Impossibile creare RejectDoctypSaxFilter poich\u00E9 SAXParser.getXMLReader ha restituito un'eccezione. Vedere lo stack trace per i dettagli.
-SAAJ0603.util.setProperty.exception=SAAJ0603: Impossibile creare RejectDoctypSaxFilter poich\u00E9 XMLReader.setProperty ha restituito un'eccezione. Vedere lo stack trace per i dettagli.
-
-# Info messages
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_ja.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for util pkg
-# Error messages
-SAAJ0601.util.newSAXParser.exception=SAAJ0601: SAXParserFactory.newSAXParser\u304C\u4F8B\u5916\u3092\u30B9\u30ED\u30FC\u3057\u305F\u305F\u3081\u3001RejectDoctypSaxFilter\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002\u8A73\u7D30\u306F\u30B9\u30BF\u30C3\u30AF\u30FB\u30C8\u30EC\u30FC\u30B9\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044
-SAAJ0602.util.getXMLReader.exception=SAAJ0602: SAXParser.getXMLReader\u304C\u4F8B\u5916\u3092\u30B9\u30ED\u30FC\u3057\u305F\u305F\u3081\u3001RejectDoctypSaxFilter\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002\u8A73\u7D30\u306F\u30B9\u30BF\u30C3\u30AF\u30FB\u30C8\u30EC\u30FC\u30B9\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044
-SAAJ0603.util.setProperty.exception=SAAJ0603: XMLReader.setProperty\u304C\u4F8B\u5916\u3092\u30B9\u30ED\u30FC\u3057\u305F\u305F\u3081\u3001RejectDoctypSaxFilter\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002\u8A73\u7D30\u306F\u30B9\u30BF\u30C3\u30AF\u30FB\u30C8\u30EC\u30FC\u30B9\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044
-
-# Info messages
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_ko.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for util pkg
-# Error messages
-SAAJ0601.util.newSAXParser.exception=SAAJ0601: SAXParserFactory.newSAXParser\uB85C \uC778\uD574 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD558\uC5EC RejectDoctypSaxFilter\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 \uC2A4\uD0DD \uCD94\uC801\uC744 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.
-SAAJ0602.util.getXMLReader.exception=SAAJ0602: SAXParser.getXMLReader\uB85C \uC778\uD574 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD558\uC5EC RejectDoctypSaxFilter\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 \uC2A4\uD0DD \uCD94\uC801\uC744 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.
-SAAJ0603.util.setProperty.exception=SAAJ0603: XMLReader.setProperty\uB85C \uC778\uD574 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD558\uC5EC RejectDoctypSaxFilter\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 \uC2A4\uD0DD \uCD94\uC801\uC744 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.
-
-# Info messages
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_pt_BR.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for util pkg
-# Error messages
-SAAJ0601.util.newSAXParser.exception=SAAJ0601: n\u00E3o \u00E9 poss\u00EDvel criar RejectDoctypSaxFilter porque SAXParserFactory.newSAXParser gerou uma exce\u00E7\u00E3o. Consulte o rastreamento de pilha para obter detalhes
-SAAJ0602.util.getXMLReader.exception=SAAJ0602: n\u00E3o \u00E9 poss\u00EDvel criar RejectDoctypSaxFilter porque SAXParser.getXMLReader gerou uma exce\u00E7\u00E3o. Consulte a pilha de rastreamento para obter detalhes
-SAAJ0603.util.setProperty.exception=SAAJ0603: n\u00E3o \u00E9 poss\u00EDvel criar RejectDoctypSaxFilter porque XMLReader.setProperty gerou uma exce\u00E7\u00E3o. Consulte a pilha de rastreamento para obter detalhes
-
-# Info messages
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_zh_CN.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for util pkg
-# Error messages
-SAAJ0601.util.newSAXParser.exception=SAAJ0601: \u65E0\u6CD5\u521B\u5EFA RejectDoctypSaxFilter, \u56E0\u4E3A SAXParserFactory.newSAXParser \u629B\u51FA\u4E86\u5F02\u5E38\u9519\u8BEF\u3002\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605\u5806\u6808\u8DDF\u8E2A
-SAAJ0602.util.getXMLReader.exception=SAAJ0602: \u65E0\u6CD5\u521B\u5EFA RejectDoctypSaxFilter, \u56E0\u4E3A SAXParser.getXMLReader \u629B\u51FA\u4E86\u5F02\u5E38\u9519\u8BEF\u3002\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605\u5806\u6808\u8DDF\u8E2A
-SAAJ0603.util.setProperty.exception=SAAJ0603: \u65E0\u6CD5\u521B\u5EFA RejectDoctypSaxFilter, \u56E0\u4E3A XMLReader.setProperty \u629B\u51FA\u4E86\u5F02\u5E38\u9519\u8BEF\u3002\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605\u5806\u6808\u8DDF\u8E2A
-
-# Info messages
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_zh_TW.properties	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# SAAJ ResourceBundle properties file
-# Contains Log messages for util pkg
-# Error messages
-SAAJ0601.util.newSAXParser.exception=SAAJ0601: \u7121\u6CD5\u5EFA\u7ACB RejectDoctypSaxFilter, \u56E0\u70BA SAXParserFactory.newSAXParser \u767C\u751F\u7570\u5E38\u72C0\u6CC1. \u8ACB\u53C3\u95B1\u5806\u758A\u8FFD\u8E64\u4EE5\u77AD\u89E3\u8A73\u7D30\u8CC7\u8A0A
-SAAJ0602.util.getXMLReader.exception=SAAJ0602: \u7121\u6CD5\u5EFA\u7ACB RejectDoctypSaxFilter, \u56E0\u70BA SAXParser.getXMLReader \u767C\u751F\u7570\u5E38\u72C0\u6CC1. \u8ACB\u53C3\u95B1\u5806\u758A\u8FFD\u8E64\u4EE5\u77AD\u89E3\u8A73\u7D30\u8CC7\u8A0A
-SAAJ0603.util.setProperty.exception=SAAJ0603: \u7121\u6CD5\u5EFA\u7ACB RejectDoctypSaxFilter, \u56E0\u70BA XMLReader.setProperty \u767C\u751F\u7570\u5E38\u72C0\u6CC1. \u8ACB\u53C3\u95B1\u5806\u758A\u8FFD\u8E64\u4EE5\u77AD\u89E3\u8A73\u7D30\u8CC7\u8A0A
-
-# Info messages
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LogDomainConstants.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.util;
-
-/**
- * @author  Manveen Kaur (manveen.kaur@eng.sun.com)
- */
-
-/**
- * This interface defines a number of constants pertaining to Logging domains.
- */
-
-public interface LogDomainConstants {
-
-    public static String MODULE_TOPLEVEL_DOMAIN =
-                    "com.sun.xml.internal.messaging.saaj";
-
-    // First Level Domain
-    public static String CLIENT_DOMAIN =
-                MODULE_TOPLEVEL_DOMAIN + ".client";
-
-    public static String SOAP_DOMAIN =
-                MODULE_TOPLEVEL_DOMAIN + ".soap";
-
-    public static String UTIL_DOMAIN =
-                MODULE_TOPLEVEL_DOMAIN + ".util";
-
-    // Second Level Domain
-    public static String HTTP_CONN_DOMAIN =
-                  CLIENT_DOMAIN + ".p2p";
-
-    public static String NAMING_DOMAIN =
-                SOAP_DOMAIN + ".name";
-
-    public static String SOAP_IMPL_DOMAIN =
-                  SOAP_DOMAIN + ".impl";
-
-    public static String SOAP_VER1_1_DOMAIN =
-                  SOAP_DOMAIN + ".ver1_1";
-
-    public static String SOAP_VER1_2_DOMAIN =
-                  SOAP_DOMAIN + ".ver1_2";
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/MimeHeadersUtil.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.util;
-
-import java.util.Iterator;
-
-import javax.xml.soap.MimeHeader;
-import javax.xml.soap.MimeHeaders;
-
-public class MimeHeadersUtil {
-    public static MimeHeaders copy(MimeHeaders headers) {
-        MimeHeaders newHeaders = new MimeHeaders();
-        Iterator eachHeader = headers.getAllHeaders();
-        while (eachHeader.hasNext()) {
-            MimeHeader currentHeader = (MimeHeader) eachHeader.next();
-
-            newHeaders.addHeader(
-                currentHeader.getName(),
-                currentHeader.getValue());
-        }
-        return newHeaders;
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/NamespaceContextIterator.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,122 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
-*
-* @author SAAJ RI Development Team
-*/
-package com.sun.xml.internal.messaging.saaj.util;
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import org.w3c.dom.*;
-
-public class NamespaceContextIterator implements Iterator {
-    Node context;
-    NamedNodeMap attributes = null;
-    int attributesLength;
-    int attributeIndex;
-    Attr next = null;
-    Attr last = null;
-    boolean traverseStack = true;
-
-    public NamespaceContextIterator(Node context) {
-        this.context = context;
-        findContextAttributes();
-    }
-
-    public NamespaceContextIterator(Node context, boolean traverseStack) {
-        this(context);
-        this.traverseStack = traverseStack;
-    }
-
-    protected void findContextAttributes() {
-        while (context != null) {
-            int type = context.getNodeType();
-            if (type == Node.ELEMENT_NODE) {
-                attributes = context.getAttributes();
-                attributesLength = attributes.getLength();
-                attributeIndex = 0;
-                return;
-            } else {
-                context = null;
-            }
-        }
-    }
-
-    protected void findNext() {
-        while (next == null && context != null) {
-            for (; attributeIndex < attributesLength; ++attributeIndex) {
-                Node currentAttribute = attributes.item(attributeIndex);
-                String attributeName = currentAttribute.getNodeName();
-                if (attributeName.startsWith("xmlns")
-                    && (attributeName.length() == 5
-                        || attributeName.charAt(5) == ':')) {
-                    next = (Attr) currentAttribute;
-                    ++attributeIndex;
-                    return;
-                }
-            }
-            if (traverseStack) {
-                context = context.getParentNode();
-                findContextAttributes();
-            } else {
-                context = null;
-            }
-        }
-    }
-
-    public boolean hasNext() {
-        findNext();
-        return next != null;
-    }
-
-    public Object next() {
-        return getNext();
-    }
-
-    public Attr nextNamespaceAttr() {
-        return getNext();
-    }
-
-    protected Attr getNext() {
-        findNext();
-        if (next == null) {
-            throw new NoSuchElementException();
-        }
-        last = next;
-        next = null;
-        return last;
-    }
-
-    public void remove() {
-        if (last == null) {
-            throw new IllegalStateException();
-        }
-        ((Element) context).removeAttributeNode(last);
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/ParseUtil.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.util;
-
-
-// Cut&paste from sun.net.www.ParseUtil: decode, unescape
-
-public class ParseUtil {
-    /**
-     * Un-escape and return the character at position i in string s.
-     */
-    private static char unescape(String s, int i) {
-        return (char) Integer.parseInt(s.substring(i+1,i+3),16);
-    }
-
-    /**
-     * Returns a new String constructed from the specified String by replacing
-     * the URL escape sequences and UTF8 encoding with the characters they
-     * represent.
-     */
-    public static String decode(String s) {
-        StringBuffer sb = new StringBuffer();
-
-        int i=0;
-        while (i<s.length()) {
-            char c = s.charAt(i);
-            char c2, c3;
-
-            if (c != '%') {
-                i++;
-            } else {
-                try {
-                    c = unescape(s, i);
-                    i += 3;
-
-                    if ((c & 0x80) != 0) {
-                        switch (c >> 4) {
-                            case 0xC: case 0xD:
-                                c2 = unescape(s, i);
-                                i += 3;
-                                c = (char)(((c & 0x1f) << 6) | (c2 & 0x3f));
-                                break;
-
-                            case 0xE:
-                                c2 = unescape(s, i);
-                                i += 3;
-                                c3 = unescape(s, i);
-                                i += 3;
-                                c = (char)(((c & 0x0f) << 12) |
-                                           ((c2 & 0x3f) << 6) |
-                                            (c3 & 0x3f));
-                                break;
-
-                            default:
-                                throw new IllegalArgumentException();
-                        }
-                    }
-                } catch (NumberFormatException e) {
-                    throw new IllegalArgumentException();
-                }
-            }
-
-            sb.append(c);
-        }
-
-        return sb.toString();
-    }
-
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/ParserPool.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.util;
-
-
-import org.xml.sax.SAXException;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.BlockingQueue;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-import org.xml.sax.SAXNotRecognizedException;
-import org.xml.sax.SAXNotSupportedException;
-
-
-/**
- * Pool of SAXParser objects
- */
-public class ParserPool {
-    private final BlockingQueue<SAXParser> queue;
-    private SAXParserFactory factory;
-
-    public ParserPool(int capacity) {
-        queue = new ArrayBlockingQueue<SAXParser>(capacity);
-        //factory = SAXParserFactory.newInstance();
-        factory = new com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl();
-        factory.setNamespaceAware(true);
-        for (int i = 0; i < capacity; i++) {
-           try {
-                queue.put(factory.newSAXParser());
-            } catch (InterruptedException ex) {
-                Thread.currentThread().interrupt();
-                throw new RuntimeException(ex);
-            } catch (ParserConfigurationException ex) {
-                throw new RuntimeException(ex);
-            } catch (SAXException ex) {
-                throw new RuntimeException(ex);
-            }
-        }
-    }
-
-    public SAXParser get() throws ParserConfigurationException,
-                SAXException {
-
-        try {
-            return (SAXParser) queue.take();
-        } catch (InterruptedException ex) {
-            throw new SAXException(ex);
-        }
-
-    }
-
-    public boolean put(SAXParser parser) {
-        return queue.offer(parser);
-    }
-
-    public void returnParser(SAXParser saxParser) {
-        saxParser.reset();
-        resetSaxParser(saxParser);
-        put(saxParser);
-    }
-
-
-    /**
-     * SAAJ Issue 46 :https://saaj.dev.java.net/issues/show_bug.cgi?id=46
-     * Xerces does not provide a way to reset the SymbolTable
-     * So we are trying to reset it using the proprietary code below.
-     * Temporary Until the bug : https://jaxp.dev.java.net/issues/show_bug.cgi?id=59
-     * is fixed.
-     * @param parser the parser from the pool whose Symbol Table needs to be reset.
-     */
-     private void resetSaxParser(SAXParser parser) {
-        try {
-            //Object obj = parser.getProperty("http://apache.org/xml/properties/internal/symbol-table");
-            com.sun.org.apache.xerces.internal.util.SymbolTable table = new com.sun.org.apache.xerces.internal.util.SymbolTable();
-            parser.setProperty("http://apache.org/xml/properties/internal/symbol-table", table);
-            //obj = parser.getProperty("http://apache.org/xml/properties/internal/symbol-table");
-        } catch (SAXNotRecognizedException ex) {
-            //nothing to do
-        } catch (SAXNotSupportedException ex) {
-            //nothing to do
-        }
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/RejectDoctypeSaxFilter.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,182 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.util;
-
-import java.util.logging.Logger;
-
-import javax.xml.parsers.SAXParser;
-import javax.xml.soap.SOAPException;
-
-import org.xml.sax.*;
-import org.xml.sax.ext.LexicalHandler;
-import org.xml.sax.helpers.XMLFilterImpl;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-import org.xml.sax.helpers.AttributesImpl;
-
-/**
- * Users of this class see a SAX2 XMLReader (via XMLFilterImpl).  This
- * class creates a parent XMLReader via JAXP and installs itself as a SAX2
- * extension LexicalHandler which rejects document type declarations
- * because they are not legal in SOAP.  If the user of this class sets a
- * LexicalHandler, then it forwards events to that handler.
- *
- *
- * @author Edwin Goei
- */
-
-public class RejectDoctypeSaxFilter extends XMLFilterImpl implements XMLReader, LexicalHandler{
-    protected static final Logger log =
-    Logger.getLogger(LogDomainConstants.UTIL_DOMAIN,
-    "com.sun.xml.internal.messaging.saaj.util.LocalStrings");
-
-    /** Standard SAX 2.0 ext property */
-    static final String LEXICAL_HANDLER_PROP =
-    "http://xml.org/sax/properties/lexical-handler";
-
-    static final String WSU_NS = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd".intern();
-    static final String SIGNATURE_LNAME = "Signature".intern();
-    static final String ENCRYPTED_DATA_LNAME = "EncryptedData".intern();
-    static final String DSIG_NS = "http://www.w3.org/2000/09/xmldsig#".intern();
-    static final String XENC_NS = "http://www.w3.org/2001/04/xmlenc#".intern();
-    static final String ID_NAME = "ID".intern();
-
-    /** LexicalHandler to forward events to, if any */
-    private LexicalHandler lexicalHandler;
-
-    public RejectDoctypeSaxFilter(SAXParser saxParser) throws SOAPException {
-        XMLReader xmlReader;
-        try {
-            xmlReader = saxParser.getXMLReader();
-        } catch (Exception e) {
-            log.severe("SAAJ0602.util.getXMLReader.exception");
-            throw new SOAPExceptionImpl(
-            "Couldn't get an XMLReader while constructing a RejectDoctypeSaxFilter",
-            e);
-        }
-
-        // Set ourselves up to be the SAX LexicalHandler
-        try {
-            xmlReader.setProperty(LEXICAL_HANDLER_PROP, this);
-        } catch (Exception e) {
-            log.severe("SAAJ0603.util.setProperty.exception");
-            throw new SOAPExceptionImpl(
-            "Couldn't set the lexical handler property while constructing a RejectDoctypeSaxFilter",
-            e);
-        }
-
-        // Set the parent XMLReader of this SAX filter
-        setParent(xmlReader);
-    }
-
-    /*
-     * Override setProperty() to capture any LexicalHandler that is set for
-     * forwarding of events.
-     */
-    public void setProperty(String name, Object value)
-    throws SAXNotRecognizedException, SAXNotSupportedException {
-        if (LEXICAL_HANDLER_PROP.equals(name)) {
-            lexicalHandler = (LexicalHandler) value;
-        } else {
-            super.setProperty(name, value);
-        }
-    }
-
-    //
-    // Beginning of SAX LexicalHandler callbacks...
-    //
-
-    public void startDTD(String name, String publicId, String systemId)
-    throws SAXException {
-        throw new SAXException("Document Type Declaration is not allowed");
-    }
-
-    public void endDTD() throws SAXException {
-    }
-
-    public void startEntity(String name) throws SAXException {
-        if (lexicalHandler != null) {
-            lexicalHandler.startEntity(name);
-        }
-    }
-
-    public void endEntity(String name) throws SAXException {
-        if (lexicalHandler != null) {
-            lexicalHandler.endEntity(name);
-        }
-    }
-
-    public void startCDATA() throws SAXException {
-        if (lexicalHandler != null) {
-            lexicalHandler.startCDATA();
-        }
-    }
-
-    public void endCDATA() throws SAXException {
-        if (lexicalHandler != null) {
-            lexicalHandler.endCDATA();
-        }
-    }
-
-    public void comment(char[] ch, int start, int length) throws SAXException {
-        if (lexicalHandler != null) {
-            lexicalHandler.comment(ch, start, length);
-        }
-    }
-
-    //
-    // End of SAX LexicalHandler callbacks
-    //
-
-    public void startElement(String namespaceURI, String localName,
-    String qName, Attributes atts)   throws SAXException{
-        if(atts != null ){
-            boolean eos = false;
-            if(namespaceURI == DSIG_NS || XENC_NS == namespaceURI){
-                eos = true;
-            }
-            int length = atts.getLength();
-            AttributesImpl attrImpl = new AttributesImpl();
-            for(int i=0; i< length;i++){
-                String name = atts.getLocalName(i);
-                if(name!=null && (name.equals("Id"))){
-                    if(eos || atts.getURI(i) == WSU_NS ){
-                        attrImpl.addAttribute(atts.getURI(i), atts.getLocalName(i),
-                        atts.getQName(i), ID_NAME, atts.getValue(i));
-                    }else{
-                         attrImpl.addAttribute(atts.getURI(i), atts.getLocalName(i), atts.getQName(i), atts.getType(i), atts.getValue(i));
-                    }
-                }else{
-                    attrImpl.addAttribute(atts.getURI(i), atts.getLocalName(i),
-                    atts.getQName(i), atts.getType(i), atts.getValue(i));
-                }
-            }
-            super.startElement(namespaceURI,localName, qName,attrImpl);
-        }else{
-            super.startElement(namespaceURI,localName, qName, null);
-        }
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/SAAJUtil.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.util;
-
-import java.security.AccessControlException;
-
-/**
- *
- * @author vbkumarjayanti
- */
-public final class SAAJUtil {
-
-    public static boolean getSystemBoolean(String arg) {
-        try {
-            return Boolean.getBoolean(arg);
-        } catch (AccessControlException ex) {
-            return false;
-        }
-    }
-
-    public static String getSystemProperty(String arg) {
-        try {
-            return System.getProperty(arg);
-        } catch (SecurityException ex) {
-            return null;
-        }
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/TeeInputStream.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * Created on Feb 28, 2003
- *
- * To change this generated comment go to
- * Window>Preferences>Java>Code Generation>Code Template
- */
-package com.sun.xml.internal.messaging.saaj.util;
-
-import java.io.*;
-
-/**
- * @author pgoodwin
- */
-public class TeeInputStream extends InputStream {
-    protected InputStream source;
-    protected OutputStream copySink;
-
-    public TeeInputStream(InputStream source, OutputStream sink) {
-        super();
-        this.copySink = sink;
-        this.source = source;
-    }
-
-    public int read() throws IOException {
-        int result = source.read();
-        copySink.write(result);
-        return result;
-    }
-
-    public int available() throws IOException {
-        return source.available();
-    }
-
-    public void close() throws IOException {
-        source.close();
-    }
-
-    public synchronized void mark(int readlimit) {
-        source.mark(readlimit);
-    }
-
-    public boolean markSupported() {
-        return source.markSupported();
-    }
-
-    public int read(byte[] b, int off, int len) throws IOException {
-        int result = source.read(b, off, len);
-        copySink.write(b, off, len);
-        return result;
-    }
-
-    public int read(byte[] b) throws IOException {
-        int result = source.read(b);
-        copySink.write(b);
-        return result;
-    }
-
-    public synchronized void reset() throws IOException {
-        source.reset();
-    }
-
-    public long skip(long n) throws IOException {
-        return source.skip(n);
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/XMLDeclarationParser.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,179 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.util;
-
-import java.io.*;
-
-import javax.xml.transform.TransformerException;
-
-/*
- * Class that parses the very first construct in the document i.e.
- *  <?xml ... ?>
- *
- * @author Panos Kougiouris (panos@acm.org)
- * @version
- */
-
-public class XMLDeclarationParser {
-    private String m_encoding;
-    private PushbackReader m_pushbackReader;
-    private boolean m_hasHeader; // preserve the case where no XML Header exists
-    private String xmlDecl = null;
-    static String gt16 = null;
-    static String utf16Decl = null;
-    static {
-         try {
-             gt16 = new String(">".getBytes("utf-16"));
-             utf16Decl = new String("<?xml".getBytes("utf-16"));
-         } catch (Exception e) {}
-    }
-
-    //---------------------------------------------------------------------
-
-    public XMLDeclarationParser(PushbackReader pr)
-    {
-        m_pushbackReader = pr;
-        m_encoding = "utf-8";
-        m_hasHeader = false;
-    }
-
-    //---------------------------------------------------------------------
-    public String getEncoding()
-    {
-        return m_encoding;
-    }
-
-    public String getXmlDeclaration() {
-        return xmlDecl;
-    }
-
-    //---------------------------------------------------------------------
-
-     public void parse()  throws TransformerException, IOException
-     {
-        int c = 0;
-        int index = 0;
-        char[] aChar = new char[65535];
-        StringBuffer xmlDeclStr = new StringBuffer();
-        while ((c = m_pushbackReader.read()) != -1) {
-            aChar[index] = (char)c;
-            xmlDeclStr.append((char)c);
-            index++;
-            if (c == '>') {
-                break;
-            }
-        }
-        int len = index;
-
-        String decl = xmlDeclStr.toString();
-        boolean utf16 = false;
-        boolean utf8 = false;
-
-        int xmlIndex = decl.indexOf(utf16Decl);
-        if (xmlIndex > -1) {
-            utf16 = true;
-        } else {
-            xmlIndex = decl.indexOf("<?xml");
-            if (xmlIndex > -1) {
-                utf8 = true;
-            }
-        }
-
-        // no XML decl
-        if (!utf16 && !utf8) {
-            m_pushbackReader.unread(aChar, 0, len);
-            return;
-        }
-        m_hasHeader = true;
-
-        if (utf16) {
-            xmlDecl = new String(decl.getBytes(), "utf-16");
-            xmlDecl = xmlDecl.substring(xmlDecl.indexOf("<"));
-        } else {
-            xmlDecl = decl;
-        }
-        // do we want to check that there are no other characters preceeding <?xml
-        if (xmlIndex != 0) {
-            throw new IOException("Unexpected characters before XML declaration");
-        }
-
-        int versionIndex =  xmlDecl.indexOf("version");
-        if (versionIndex == -1) {
-            throw new IOException("Mandatory 'version' attribute Missing in XML declaration");
-        }
-
-        // now set
-        int encodingIndex = xmlDecl.indexOf("encoding");
-        if (encodingIndex == -1) {
-            return;
-        }
-
-        if (versionIndex > encodingIndex) {
-            throw new IOException("The 'version' attribute should preceed the 'encoding' attribute in an XML Declaration");
-        }
-
-        int stdAloneIndex = xmlDecl.indexOf("standalone");
-        if ((stdAloneIndex > -1) && ((stdAloneIndex < versionIndex) || (stdAloneIndex < encodingIndex))) {
-            throw new IOException("The 'standalone' attribute should be the last attribute in an XML Declaration");
-        }
-
-        int eqIndex = xmlDecl.indexOf("=", encodingIndex);
-        if (eqIndex == -1) {
-            throw new IOException("Missing '=' character after 'encoding' in XML declaration");
-        }
-
-        m_encoding = parseEncoding(xmlDecl, eqIndex);
-        if(m_encoding.startsWith("\"")){
-            m_encoding = m_encoding.substring(m_encoding.indexOf("\"")+1, m_encoding.lastIndexOf("\""));
-        } else if(m_encoding.startsWith("\'")){
-            m_encoding = m_encoding.substring(m_encoding.indexOf("\'")+1, m_encoding.lastIndexOf("\'"));
-        }
-     }
-
-     //--------------------------------------------------------------------
-
-    public void writeTo(Writer wr) throws IOException {
-        if (!m_hasHeader) return;
-        wr.write(xmlDecl.toString());
-    }
-
-    private String parseEncoding(String xmlDeclFinal, int eqIndex) throws IOException {
-        java.util.StringTokenizer strTok = new java.util.StringTokenizer(
-            xmlDeclFinal.substring(eqIndex + 1));
-        if (strTok.hasMoreTokens()) {
-            String encodingTok = strTok.nextToken();
-            int indexofQ = encodingTok.indexOf("?");
-            if (indexofQ > -1) {
-                return encodingTok.substring(0,indexofQ);
-            } else {
-                return encodingTok;
-            }
-        } else {
-            throw new IOException("Error parsing 'encoding' attribute in XML declaration");
-        }
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/LazyEnvelopeStaxReader.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,359 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.util.stax;
-
-import javax.xml.namespace.NamespaceContext;
-import javax.xml.namespace.QName;
-import javax.xml.soap.SOAPException;
-import javax.xml.stream.Location;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-
-import org.w3c.dom.Node;
-
-import com.sun.xml.internal.messaging.saaj.soap.impl.BodyImpl;
-import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl;
-
-/**
- * "Hybrid" reader which
- * @author desagar
- *
- */
-public class LazyEnvelopeStaxReader extends com.sun.xml.internal.org.jvnet.staxex.util.DOMStreamReader {
-//    EnvelopeImpl env;
-    XMLStreamReader payloadReader = null;
-    boolean usePayloadReaderDelegate = false;
-    private QName bodyQName;
-
-    public LazyEnvelopeStaxReader(EnvelopeImpl env) throws SOAPException, XMLStreamException {
-        super(env);
-//        this.env = env;
-        bodyQName = new QName(env.getNamespaceURI(), "Body");
-        payloadReader = env.getStaxBridge().getPayloadReader();
-        int eventType = getEventType();
-        while (eventType != START_ELEMENT) {
-            eventType = nextTag();
-        }
-    }
-
-    public Object getProperty(String name) throws IllegalArgumentException {
-        if (usePayloadReaderDelegate) return payloadReader.getProperty(name);
-        return super.getProperty(name);
-    }
-
-    public int next() throws XMLStreamException {
-//        boolean previouslyUsingPayloadReader = usePayloadReaderDelegate;
-        //call checkReaderStatus to advance to payloadReader if needed
-        checkReaderStatus(true);
-
-        if (usePayloadReaderDelegate) return payloadReader.getEventType();
-
-        //if we just moved to payload reader, don't advance the pointer
-//        if (usePayloadReaderDelegate && !previouslyUsingPayloadReader) return payloadReader.getEventType();
-
-//        if (usePayloadReaderDelegate) return payloadReader.next();
-        return getEventType();
-    }
-
-    public void require(int type, String namespaceURI, String localName)
-            throws XMLStreamException {
-        if (usePayloadReaderDelegate) payloadReader.require(type, namespaceURI, localName);
-        else super.require(type, namespaceURI, localName);
-    }
-
-    public String getElementText() throws XMLStreamException {
-        if (usePayloadReaderDelegate) return payloadReader.getElementText();
-        return super.getElementText();
-    }
-
-    public int nextTag() throws XMLStreamException {
-        if (usePayloadReaderDelegate) return payloadReader.nextTag();
-        return super.nextTag();
-    }
-
-    public boolean hasNext() throws XMLStreamException {
-        checkReaderStatus(false);
-        boolean hasNext;
-        if (usePayloadReaderDelegate) {
-            hasNext = payloadReader.hasNext();
-        } else {
-            hasNext = super.hasNext();
-        }
-
-        /*if (!hasNext && payloadReader != null) {
-            usePayloadReaderDelegate = true;
-            hasNext = payloadReader.hasNext();
-        }*/
-        return hasNext;
-    }
-
-    private void checkReaderStatus(boolean advanceToNext) throws XMLStreamException {
-        //if we are using payloadReader, make sure it is not exhausted
-        //if it is, return to DOM based reader for remaining end elements (body and envelope)
-        if (usePayloadReaderDelegate) {
-            if (!payloadReader.hasNext()) {
-                usePayloadReaderDelegate = false;
-            }
-        } else if (START_ELEMENT == getEventType()) {
-            //if not on payload reader, check if we need to switch to payload reader
-
-            //if the current event is the SOAP body element start,
-            //and the body is lazy, switch to the payload reader
-            if (bodyQName.equals(getName())) {
-                //if we are just switching to payload reader, don't advance...payload reader
-                //will already be on the first payload element
-                usePayloadReaderDelegate = true;
-                advanceToNext = false;
-            }
-        }
-
-        if (advanceToNext) {
-            if (usePayloadReaderDelegate) {
-                payloadReader.next();
-            } else {
-                super.next();
-            }
-        }
-    }
-
-    public void close() throws XMLStreamException {
-        if (usePayloadReaderDelegate) payloadReader.close();
-        else super.close();
-    }
-
-    public String getNamespaceURI(String prefix) {
-        if (usePayloadReaderDelegate) return payloadReader.getNamespaceURI(prefix);
-        return super.getNamespaceURI(prefix);
-    }
-
-    public boolean isStartElement() {
-        if (usePayloadReaderDelegate) return payloadReader.isStartElement();
-        return super.isStartElement();
-    }
-
-    public boolean isEndElement() {
-        if (usePayloadReaderDelegate) return payloadReader.isEndElement();
-        return super.isEndElement();
-    }
-
-    public boolean isCharacters() {
-        if (usePayloadReaderDelegate) return payloadReader.isCharacters();
-        return super.isEndElement();
-    }
-
-    public boolean isWhiteSpace() {
-        if (usePayloadReaderDelegate) return payloadReader.isWhiteSpace();
-        return super.isWhiteSpace();
-    }
-
-    public String getAttributeValue(String namespaceURI, String localName) {
-        if (usePayloadReaderDelegate) return payloadReader.getAttributeValue(namespaceURI, localName);
-        return super.getAttributeValue(namespaceURI, localName);
-    }
-
-    public int getAttributeCount() {
-        if (usePayloadReaderDelegate) return payloadReader.getAttributeCount();
-        return super.getAttributeCount();
-    }
-
-    public QName getAttributeName(int index) {
-        if (usePayloadReaderDelegate) return payloadReader.getAttributeName(index);
-        return super.getAttributeName(index);
-    }
-
-    public String getAttributeNamespace(int index) {
-        if (usePayloadReaderDelegate) return payloadReader.getAttributeNamespace(index);
-        return super.getAttributeNamespace(index);
-    }
-
-    public String getAttributeLocalName(int index) {
-        if (usePayloadReaderDelegate) return payloadReader.getAttributeLocalName(index);
-        return super.getAttributeLocalName(index);
-    }
-
-    public String getAttributePrefix(int index) {
-        if (usePayloadReaderDelegate) return payloadReader.getAttributePrefix(index);
-        return super.getAttributePrefix(index);
-    }
-
-    public String getAttributeType(int index) {
-        if (usePayloadReaderDelegate) return payloadReader.getAttributeType(index);
-        return super.getAttributeType(index);
-    }
-
-    public String getAttributeValue(int index) {
-        if (usePayloadReaderDelegate) return payloadReader.getAttributeValue(index);
-        return super.getAttributeValue(index);
-    }
-
-    public boolean isAttributeSpecified(int index) {
-        if (usePayloadReaderDelegate) return payloadReader.isAttributeSpecified(index);
-        return super.isAttributeSpecified(index);
-    }
-
-    public int getNamespaceCount() {
-        if (usePayloadReaderDelegate) return payloadReader.getNamespaceCount();
-        return super.getNamespaceCount();
-    }
-
-    public String getNamespacePrefix(int index) {
-        if (usePayloadReaderDelegate) return payloadReader.getNamespacePrefix(index);
-        return super.getNamespacePrefix(index);
-    }
-
-    public String getNamespaceURI(int index) {
-        if (usePayloadReaderDelegate) return payloadReader.getNamespaceURI(index);
-        return super.getNamespaceURI(index);
-    }
-
-    public NamespaceContext getNamespaceContext() {
-        if (usePayloadReaderDelegate) return payloadReader.getNamespaceContext();
-        return super.getNamespaceContext();
-    }
-
-    public int getEventType() {
-        if (usePayloadReaderDelegate) return payloadReader.getEventType();
-        return super.getEventType();
-    }
-
-    public String getText() {
-        if (usePayloadReaderDelegate) return payloadReader.getText();
-        return super.getText();
-    }
-
-    public char[] getTextCharacters() {
-        if (usePayloadReaderDelegate) return payloadReader.getTextCharacters();
-        return super.getTextCharacters();
-    }
-
-    public int getTextCharacters(int sourceStart, char[] target,
-            int targetStart, int length) throws XMLStreamException {
-        if (usePayloadReaderDelegate) return payloadReader.getTextCharacters(sourceStart, target, targetStart,
-                length);
-        return super.getTextCharacters(sourceStart, target, targetStart, length);
-    }
-
-    public int getTextStart() {
-        if (usePayloadReaderDelegate) return payloadReader.getTextStart();
-        return super.getTextStart();
-    }
-
-    public int getTextLength() {
-        if (usePayloadReaderDelegate) return payloadReader.getTextLength();
-        return super.getTextLength();
-    }
-
-    public String getEncoding() {
-        if (usePayloadReaderDelegate) return payloadReader.getEncoding();
-        return super.getEncoding();
-    }
-
-    public boolean hasText() {
-        if (usePayloadReaderDelegate) return payloadReader.hasText();
-        return super.hasText();
-    }
-
-    public Location getLocation() {
-        if (usePayloadReaderDelegate) return payloadReader.getLocation();
-        return super.getLocation();
-    }
-
-    public QName getName() {
-        if (usePayloadReaderDelegate) return payloadReader.getName();
-        return super.getName();
-    }
-
-    public String getLocalName() {
-        if (usePayloadReaderDelegate) return payloadReader.getLocalName();
-        return super.getLocalName();
-    }
-
-    public boolean hasName() {
-        if (usePayloadReaderDelegate) return payloadReader.hasName();
-        return super.hasName();
-    }
-
-    public String getNamespaceURI() {
-        if (usePayloadReaderDelegate) return payloadReader.getNamespaceURI();
-        return super.getNamespaceURI();
-    }
-
-    public String getPrefix() {
-        if (usePayloadReaderDelegate) return payloadReader.getPrefix();
-        return super.getPrefix();
-    }
-
-    public String getVersion() {
-        if (usePayloadReaderDelegate) return payloadReader.getVersion();
-        return super.getVersion();
-    }
-
-    public boolean isStandalone() {
-        if (usePayloadReaderDelegate) return payloadReader.isStandalone();
-        return super.isStandalone();
-    }
-
-    public boolean standaloneSet() {
-        if (usePayloadReaderDelegate) return payloadReader.standaloneSet();
-        return super.standaloneSet();
-    }
-
-    public String getCharacterEncodingScheme() {
-        if (usePayloadReaderDelegate) return payloadReader.getCharacterEncodingScheme();
-        return super.getCharacterEncodingScheme();
-    }
-
-    public String getPITarget() {
-        if (usePayloadReaderDelegate) return payloadReader.getPITarget();
-        return super.getPITarget();
-    }
-
-    public String getPIData() {
-        if (usePayloadReaderDelegate) return payloadReader.getPIData();
-        return super.getPIData();
-    }
-
-    //make sure that message is not realized as a result of call
-    //to getFirstChild
-    protected Node getFirstChild(Node node) {
-        if (node instanceof BodyImpl) {
-            return ((BodyImpl) node).getFirstChildNoMaterialize();
-        } else {
-            return node.getFirstChild();
-        }
-    }
-
-    protected Node getNextSibling(Node node) {
-        if (node instanceof BodyImpl) {
-            //body is not expected to have a next sibling - even if it does
-            //we would have to materialize the node to retrieve it.
-            //Since we don't want to materialize it right now, just return null
-            return null;
-        }
-        return node.getNextSibling();
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/SaajStaxReaderEx.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.util.stax;
-
-import com.sun.xml.internal.org.jvnet.staxex.Base64Data;
-import com.sun.xml.internal.org.jvnet.staxex.BinaryText;
-import com.sun.xml.internal.org.jvnet.staxex.XMLStreamReaderEx;
-import com.sun.xml.internal.org.jvnet.staxex.util.DOMStreamReader;
-import org.w3c.dom.Node;
-import org.w3c.dom.Text;
-
-import javax.xml.soap.SOAPElement;
-import javax.xml.stream.XMLStreamException;
-import java.util.Iterator;
-
-/**
- * SaajStaxReaderEx
- *
- * @author shih-chang.chen@oracle.com
- */
-public class SaajStaxReaderEx extends DOMStreamReader implements XMLStreamReaderEx {
-    //TODO extends com.sun.xml.internal.ws.streaming.DOMStreamReader
-    private BinaryText binaryText = null;
-    private Base64Data base64AttData = null;
-
-    public SaajStaxReaderEx(SOAPElement se) {
-        super(se);
-    }
-
-    @Override
-    public int next() throws XMLStreamException {
-        binaryText = null;
-        base64AttData = null;
-        while(true) {
-            int r = _next();
-            switch (r) {
-            case CHARACTERS:
-                if (_current instanceof BinaryText) {
-                    binaryText = (BinaryText) _current;
-                    base64AttData = new Base64Data();
-                    base64AttData.set(binaryText.getDataHandler());
-//System.out.println("--------------- debug SaajStaxReaderEx binaryText " + binaryText);
-                } else {
-                    // if we are currently at text node, make sure that this is a meaningful text node.
-                    Node prev = _current.getPreviousSibling();
-                    if(prev!=null && prev.getNodeType()==Node.TEXT_NODE)
-                        continue;   // nope. this is just a continuation of previous text that should be invisible
-
-                    Text t = (Text)_current;
-                    wholeText = t.getWholeText();
-                    if(wholeText.length()==0)
-                        continue;   // nope. this is empty text.
-                }
-                return CHARACTERS;
-            case START_ELEMENT:
-                splitAttributes();
-                return START_ELEMENT;
-            default:
-                return r;
-            }
-        }
-    }
-
-    @Override
-    public String getElementTextTrim() throws XMLStreamException {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public CharSequence getPCDATA() throws XMLStreamException {
-        return (binaryText != null) ? base64AttData : getText();
-    }
-
-    @Override
-    public com.sun.xml.internal.org.jvnet.staxex.NamespaceContextEx getNamespaceContext() {
-        return new com.sun.xml.internal.org.jvnet.staxex.NamespaceContextEx() {
-
-            @Override
-            public String getNamespaceURI(String prefix) {
-                return _current.lookupNamespaceURI(prefix);
-            }
-
-            @Override
-            public String getPrefix(String uri) {
-                return _current.lookupPrefix(uri);
-            }
-
-            @Override
-            public Iterator getPrefixes(String arg0) {
-                // TODO Auto-generated method stub
-                return null;
-            }
-
-            @Override
-            public Iterator<Binding> iterator() {
-                // TODO Auto-generated method stub
-                return null;
-            }
-
-        };
-    }
-
-
-    @Override
-    public int getTextLength() {
-        return (binaryText != null) ? base64AttData.length() : super.getTextLength();
-    }
-
-    @Override
-    public int getTextStart() {
-        return (binaryText != null) ? 0: super.getTextStart();
-    }
-
-    @Override
-    public char[] getTextCharacters() {
-        if (binaryText != null) {
-            char[] chars = new char[base64AttData.length()];
-            base64AttData.writeTo(chars, 0);
-            return chars;
-        }
-        return super.getTextCharacters();
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/SaajStaxWriter.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,334 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.util.stax;
-
-import java.util.Arrays;
-import java.util.Iterator;
-
-import javax.xml.namespace.NamespaceContext;
-import javax.xml.namespace.QName;
-import javax.xml.soap.SOAPElement;
-import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPMessage;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
-
-import org.w3c.dom.Comment;
-import org.w3c.dom.Node;
-
-/**
- * SaajStaxWriter builds a SAAJ SOAPMessage by using XMLStreamWriter interface.
- *
- * @author shih-chang.chen@oracle.com
- */
-public class SaajStaxWriter implements XMLStreamWriter {
-
-    protected SOAPMessage soap;
-    protected String envURI;
-    protected SOAPElement currentElement;
-
-    static final protected String Envelope = "Envelope";
-    static final protected String Header = "Header";
-    static final protected String Body = "Body";
-    static final protected String xmlns = "xmlns";
-
-    public SaajStaxWriter(final SOAPMessage msg, String uri) throws SOAPException {
-        soap = msg;
-        this.envURI = uri;
-    }
-
-    public SOAPMessage getSOAPMessage() {
-        return soap;
-    }
-
-    protected SOAPElement getEnvelope() throws SOAPException {
-        return soap.getSOAPPart().getEnvelope();
-    }
-
-    @Override
-    public void writeStartElement(final String localName) throws XMLStreamException {
-        try {
-            currentElement = currentElement.addChildElement(localName);
-        } catch (SOAPException e) {
-            throw new XMLStreamException(e);
-        }
-    }
-
-    @Override
-    public void writeStartElement(final String ns, final String ln) throws XMLStreamException {
-        writeStartElement(null, ln, ns);
-    }
-
-    @Override
-    public void writeStartElement(final String prefix, final String ln, final String ns) throws XMLStreamException {
-        try {
-            if (envURI.equals(ns)) {
-                if (Envelope.equals(ln)) {
-                    currentElement = getEnvelope();
-                    fixPrefix(prefix);
-                    return;
-                } else if (Header.equals(ln)) {
-                    currentElement = soap.getSOAPHeader();
-                    fixPrefix(prefix);
-                    return;
-                } else if (Body.equals(ln)) {
-                    currentElement = soap.getSOAPBody();
-                    fixPrefix(prefix);
-                    return;
-                }
-            }
-            currentElement = (prefix == null) ?
-                    currentElement.addChildElement(new QName(ns, ln)) :
-                    currentElement.addChildElement(ln, prefix, ns);
-        } catch (SOAPException e) {
-            throw new XMLStreamException(e);
-        }
-    }
-
-    private void fixPrefix(final String prfx) throws XMLStreamException {
-        fixPrefix(prfx, currentElement);
-    }
-
-    private void fixPrefix(final String prfx, SOAPElement element) throws XMLStreamException {
-        String oldPrfx = element.getPrefix();
-        if (prfx != null && !prfx.equals(oldPrfx)) {
-            element.setPrefix(prfx);
-        }
-    }
-
-    @Override
-    public void writeEmptyElement(final String uri, final String ln) throws XMLStreamException {
-        writeStartElement(null, ln, uri);
-    }
-
-    @Override
-    public void writeEmptyElement(final String prefix, final String ln, final String uri) throws XMLStreamException {
-        writeStartElement(prefix, ln, uri);
-    }
-
-    @Override
-    public void writeEmptyElement(final String ln) throws XMLStreamException {
-        writeStartElement(null, ln, null);
-    }
-
-    @Override
-    public void writeEndElement() throws XMLStreamException {
-        if (currentElement != null) currentElement = currentElement.getParentElement();
-    }
-
-    @Override
-    public void writeEndDocument() throws XMLStreamException {
-    }
-
-    @Override
-    public void close() throws XMLStreamException {
-    }
-
-    @Override
-    public void flush() throws XMLStreamException {
-    }
-
-    @Override
-    public void writeAttribute(final String ln, final String val) throws XMLStreamException {
-        writeAttribute(null, null, ln, val);
-    }
-
-    @Override
-    public void writeAttribute(final String prefix, final String ns, final String ln, final String value) throws XMLStreamException {
-        try {
-            if (ns == null) {
-                if (prefix == null && xmlns.equals(ln)) {
-                    currentElement.addNamespaceDeclaration("", value);
-                } else {
-                    currentElement.setAttributeNS("", ln, value);
-                }
-            } else {
-                QName name = (prefix == null) ? new QName(ns, ln) : new QName(ns, ln, prefix);
-                currentElement.addAttribute(name, value);
-            }
-        } catch (SOAPException e) {
-            throw new XMLStreamException(e);
-        }
-    }
-
-    @Override
-    public void writeAttribute(final String ns, final String ln, final String val) throws XMLStreamException {
-        writeAttribute(null, ns, ln, val);
-    }
-
-    @Override
-    public void writeNamespace(String prefix, final String uri) throws XMLStreamException {
-
-        // make prefix default if null or "xmlns" (according to javadoc)
-        if (prefix == null || "xmlns".equals(prefix)) {
-            prefix = "";
-        }
-
-        try {
-            currentElement.addNamespaceDeclaration(prefix, uri);
-        } catch (SOAPException e) {
-            throw new XMLStreamException(e);
-        }
-    }
-
-    @Override
-    public void writeDefaultNamespace(final String uri) throws XMLStreamException {
-        writeNamespace("", uri);
-    }
-
-    @Override
-    public void writeComment(final String data) throws XMLStreamException {
-        Comment c = soap.getSOAPPart().createComment(data);
-        currentElement.appendChild(c);
-    }
-
-    @Override
-    public void writeProcessingInstruction(final String target) throws XMLStreamException {
-        Node n = soap.getSOAPPart().createProcessingInstruction(target, "");
-        currentElement.appendChild(n);
-    }
-
-    @Override
-    public void writeProcessingInstruction(final String target, final String data) throws XMLStreamException {
-        Node n = soap.getSOAPPart().createProcessingInstruction(target, data);
-        currentElement.appendChild(n);
-    }
-
-    @Override
-    public void writeCData(final String data) throws XMLStreamException {
-        Node n = soap.getSOAPPart().createCDATASection(data);
-        currentElement.appendChild(n);
-    }
-
-    @Override
-    public void writeDTD(final String dtd) throws XMLStreamException {
-        //TODO ... Don't do anything here
-    }
-
-    @Override
-    public void writeEntityRef(final String name) throws XMLStreamException {
-        Node n = soap.getSOAPPart().createEntityReference(name);
-        currentElement.appendChild(n);
-    }
-
-    @Override
-    public void writeStartDocument() throws XMLStreamException {
-    }
-
-    @Override
-    public void writeStartDocument(final String version) throws XMLStreamException {
-        if (version != null) soap.getSOAPPart().setXmlVersion(version);
-    }
-
-    @Override
-    public void writeStartDocument(final String encoding, final String version) throws XMLStreamException {
-        if (version != null) soap.getSOAPPart().setXmlVersion(version);
-        if (encoding != null) {
-            try {
-                soap.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, encoding);
-            } catch (SOAPException e) {
-                throw new XMLStreamException(e);
-            }
-        }
-    }
-
-    @Override
-    public void writeCharacters(final String text) throws XMLStreamException {
-        try {
-            currentElement.addTextNode(text);
-        } catch (SOAPException e) {
-            throw new XMLStreamException(e);
-        }
-    }
-
-    @Override
-    public void writeCharacters(final char[] text, final int start, final int len) throws XMLStreamException {
-        char[] chr = (start == 0 && len == text.length) ? text : Arrays.copyOfRange(text, start, start + len);
-        try {
-            currentElement.addTextNode(new String(chr));
-        } catch (SOAPException e) {
-            throw new XMLStreamException(e);
-        }
-    }
-
-    @Override
-    public String getPrefix(final String uri) throws XMLStreamException {
-        return currentElement.lookupPrefix(uri);
-    }
-
-    @Override
-    public void setPrefix(final String prefix, final String uri) throws XMLStreamException {
-        try {
-            this.currentElement.addNamespaceDeclaration(prefix, uri);
-        } catch (SOAPException e) {
-            throw new XMLStreamException(e);
-        }
-    }
-
-    @Override
-    public void setDefaultNamespace(final String uri) throws XMLStreamException {
-        setPrefix("", uri);
-    }
-
-    @Override
-    public void setNamespaceContext(final NamespaceContext context)throws XMLStreamException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Object getProperty(final String name) throws IllegalArgumentException {
-        //TODO the following line is to make eclipselink happy ... they are aware of this problem -
-        if (javax.xml.stream.XMLOutputFactory.IS_REPAIRING_NAMESPACES.equals(name)) return Boolean.FALSE;
-        return null;
-    }
-
-    @Override
-    public NamespaceContext getNamespaceContext() {
-        return new NamespaceContext() {
-            public String getNamespaceURI(final String prefix) {
-                return currentElement.getNamespaceURI(prefix);
-            }
-            public String getPrefix(final String namespaceURI) {
-                return currentElement.lookupPrefix(namespaceURI);
-            }
-            public Iterator getPrefixes(final String namespaceURI) {
-                return new Iterator() {
-                    String prefix = getPrefix(namespaceURI);
-                    public boolean hasNext() {
-                        return (prefix != null);
-                    }
-                    public Object next() {
-                        if (!hasNext()) throw new java.util.NoSuchElementException();
-                        String next = prefix;
-                        prefix = null;
-                        return next;
-                    }
-                    public void remove() {}
-                };
-            }
-        };
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/SaajStaxWriterEx.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,245 +0,0 @@
-/*
- * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.messaging.saaj.util.stax;
-
-import java.io.OutputStream;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.UUID;
-
-import javax.activation.DataHandler;
-import javax.xml.bind.attachment.AttachmentMarshaller;
-import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPMessage;
-import javax.xml.stream.XMLStreamException;
-
-import com.sun.xml.internal.org.jvnet.staxex.Base64Data;
-import com.sun.xml.internal.org.jvnet.staxex.BinaryText;
-import com.sun.xml.internal.org.jvnet.staxex.MtomEnabled;
-import com.sun.xml.internal.org.jvnet.staxex.NamespaceContextEx;
-import com.sun.xml.internal.org.jvnet.staxex.StreamingDataHandler;
-import com.sun.xml.internal.org.jvnet.staxex.XMLStreamWriterEx;
-import com.sun.xml.internal.org.jvnet.staxex.util.MtomStreamWriter;
-//
-//import com.sun.xml.internal.ws.api.message.saaj.SaajStaxWriter;
-//import com.sun.xml.internal.ws.developer.StreamingDataHandler;
-//import com.sun.xml.internal.ws.streaming.MtomStreamWriter;
-
-/**
- * SaajStaxWriterEx converts XMLStreamWriterEx calls to build an orasaaj SOAPMessage with BinaryTextImpl.
- *
- * @author shih-chang.chen@oracle.com
- */
-public class SaajStaxWriterEx extends SaajStaxWriter implements XMLStreamWriterEx, MtomStreamWriter {
-
-    static final protected String xopNS = "http://www.w3.org/2004/08/xop/include";
-    static final protected String Include = "Include";
-    static final protected String href = "href";
-
-    private enum State {xopInclude, others};
-    private State state = State.others;
-    private BinaryText binaryText;
-
-    public SaajStaxWriterEx(SOAPMessage msg, String uri) throws SOAPException {
-        super(msg, uri);
-    }
-
-    public void writeStartElement(String prefix, String ln, String ns) throws XMLStreamException {
-        if (xopNS.equals(ns) && Include.equals(ln)) {
-            state = State.xopInclude;
-            return;
-        } else {
-            super.writeStartElement(prefix, ln, ns);
-        }
-    }
-
-    @Override
-    public void writeEndElement() throws XMLStreamException {
-        if (state.equals(State.xopInclude)) {
-            state = State.others;
-        } else {
-            super.writeEndElement();
-        }
-    }
-
-    @Override
-    public void writeAttribute(String prefix, String ns, String ln, String value) throws XMLStreamException {
-        if (binaryText != null && href.equals(ln)) {
-            return;
-        } else {
-            super.writeAttribute(prefix, ns, ln, value);
-        }
-    }
-
-//    @Override
-//    public void writeComment(String data) throws XMLStreamException {
-//        ((ElementImpl)currentElement).addCommentNode(data);
-//    }
-//
-//    @Override
-//    public void writeCData(String data) throws XMLStreamException {
-//      CDataTextImpl cdt = new CDataTextImpl(soap.getSOAPPart(), data);
-//        currentElement.appendChild(cdt);
-//    }
-
-    @Override
-    public NamespaceContextEx getNamespaceContext() {
-        return new NamespaceContextEx() {
-            public String getNamespaceURI(String prefix) {
-                return currentElement.getNamespaceURI(prefix);
-            }
-            public String getPrefix(String namespaceURI) {
-                return currentElement.lookupPrefix(namespaceURI);
-            }
-            public Iterator getPrefixes(final String namespaceURI) {
-                return new Iterator() {
-                    String prefix = getPrefix(namespaceURI);
-                    public boolean hasNext() {
-                        return (prefix != null);
-                    }
-                    public Object next() {
-                        if (prefix == null) throw new java.util.NoSuchElementException();
-                        String next = prefix;
-                        prefix = null;
-                        return next;
-                    }
-                    public void remove() {}
-                };
-            }
-            public Iterator<Binding> iterator() {
-                return new Iterator<Binding>() {
-                    public boolean hasNext() { return false; }
-                    public Binding next() { return null; }
-                    public void remove() {}
-                };
-            }
-        };
-    }
-
-    @Override
-    public void writeBinary(DataHandler data) throws XMLStreamException {
-//      binaryText = BinaryTextImpl.createBinaryTextFromDataHandler((MessageImpl)soap, null, currentElement.getOwnerDocument(), data);
-//      currentElement.appendChild(binaryText);
-        addBinaryText(data);
-    }
-
-    @Override
-    public OutputStream writeBinary(String arg0) throws XMLStreamException {
-        return null;
-    }
-
-    @Override
-    public void writeBinary(byte[] data, int offset, int length, String contentType) throws XMLStreamException {
-//        if (mtomThreshold == -1 || mtomThreshold > length) return null;
-        byte[] bytes = (offset == 0 && length == data.length) ? data : Arrays.copyOfRange(data, offset, offset + length);
-        if (currentElement instanceof MtomEnabled) {
-            binaryText = ((MtomEnabled) currentElement).addBinaryText(bytes);
-        } else {
-            throw new IllegalStateException("The currentElement is not MtomEnabled " + currentElement);
-        }
-    }
-
-    @Override
-    public void writePCDATA(CharSequence arg0) throws XMLStreamException {
-        if (arg0 instanceof Base64Data) {
-            // The fix of StreamReaderBufferCreator preserves this dataHandler
-            addBinaryText(((Base64Data) arg0).getDataHandler());
-        } else {
-            // We should not normally get here as we expect a DataHandler,
-            // but this is the most general solution.  If we do get
-            // something other than a Data Handler, create a Text node with
-            // the data.  Another alternative would be to throw an exception,
-            // but in the most general case, we don't know whether this input
-            // is expected.
-            try {
-                currentElement.addTextNode(arg0.toString());
-            } catch (SOAPException e) {
-                throw new XMLStreamException("Cannot add Text node", e);
-            }
-        }
-    }
-
-    static private String encodeCid() {
-        String cid = "example.jaxws.sun.com";
-        String name = UUID.randomUUID() + "@";
-        return name + cid;
-    }
-
-    private String addBinaryText(DataHandler data) {
-        String hrefOrCid = null;
-        if (data instanceof StreamingDataHandler) {
-            hrefOrCid = ((StreamingDataHandler) data).getHrefCid();
-        }
-        if (hrefOrCid == null) hrefOrCid = encodeCid();
-
-        String prefixedCid = (hrefOrCid.startsWith("cid:")) ? hrefOrCid : "cid:" + hrefOrCid;
-        // Should we do the threshold processing on DataHandler ? But that would be
-        // expensive as DataHolder need to read the data again from its source
-      //binaryText = BinaryTextImpl.createBinaryTextFromDataHandler((MessageImpl) soap, prefixedCid, currentElement.getOwnerDocument(), data);
-      //currentElement.appendChild(binaryText);
-        if (currentElement instanceof MtomEnabled) {
-            binaryText = ((MtomEnabled) currentElement).addBinaryText(prefixedCid, data);
-        } else {
-            throw new IllegalStateException("The currentElement is not MtomEnabled " + currentElement);
-        }
-        return hrefOrCid;
-    }
-
-    public AttachmentMarshaller getAttachmentMarshaller() {
-        return new AttachmentMarshaller() {
-            @Override
-            public String addMtomAttachment(DataHandler data, String ns, String ln) {
-//                if (mtomThreshold == -1) return null;
-                String hrefOrCid = addBinaryText(data);
-//                return binaryText.getHref();
-                return hrefOrCid;
-            }
-
-            @Override
-            public String addMtomAttachment(byte[] data, int offset, int length, String mimeType, String ns, String ln) {
-//                if (mtomThreshold == -1 || mtomThreshold > length) return null;
-                byte[] bytes = (offset == 0 && length == data.length) ? data : Arrays.copyOfRange(data, offset, offset + length);
-//                binaryText = (BinaryTextImpl) ((ElementImpl) currentElement).addAsBase64TextNode(bytes);
-                if (currentElement instanceof MtomEnabled) {
-                    binaryText = ((MtomEnabled) currentElement).addBinaryText(bytes);
-                } else {
-                    throw new IllegalStateException("The currentElement is not MtomEnabled " + currentElement);
-                }
-                return binaryText.getHref();
-            }
-
-            @Override
-            public String addSwaRefAttachment(DataHandler data) {
-                return "cid:"+encodeCid();
-            }
-
-            @Override
-            public boolean isXOPPackage() {
-                return true;
-            }
-        };
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/transform/EfficientStreamingTransformer.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,423 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * EfficientStreamingTransformer.java
- *
- * Created on July 29, 2002, 3:49 PM
- */
-
-package com.sun.xml.internal.messaging.saaj.util.transform;
-
-import java.io.*;
-
-import java.net.URISyntaxException;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.dom.DOMResult;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
-import org.w3c.dom.Document;
-
-import com.sun.xml.internal.messaging.saaj.util.XMLDeclarationParser;
-import com.sun.xml.internal.messaging.saaj.util.FastInfosetReflection;
-import java.net.URI;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-
-/**
- * This class is a proxy for a Transformer object with optimizations
- * for certain cases. If source and result are of type stream, then
- * bytes are simply copied whenever possible (note that this assumes
- * that the input is well formed). In addition, it provides support for
- * FI using native DOM parsers and serializers.
- *
- * @author Panos Kougiouris panos@acm.org
- * @author Santiago.PericasGeertsen@sun.com
- *
- */
-public class EfficientStreamingTransformer
-    extends javax.xml.transform.Transformer {
-
-  //static final String version;
-  //static final String vendor;
-  // removing static : security issue : CR 6813167Z
-  private final TransformerFactory transformerFactory = TransformerFactory.newInstance();
-
-  /**
-  removing support for Java 1.4 and 1.3 : CR6658158
-  static {
-        version = System.getProperty("java.vm.version");
-        vendor = System.getProperty("java.vm.vendor");
-        if (vendor.startsWith("Sun") &&
-            (version.startsWith("1.4") || version.startsWith("1.3"))) {
-            transformerFactory =
-                new com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl();
-        }
-  }*/
-
-    /**
-     * TransformerFactory instance.
-     */
-
-    /**
-     * Underlying XSLT transformer.
-     */
-    private Transformer m_realTransformer = null;
-
-    /**
-     * Undelying FI DOM parser.
-     */
-    private Object m_fiDOMDocumentParser = null;
-
-    /**
-     * Underlying FI DOM serializer.
-     */
-    private Object m_fiDOMDocumentSerializer = null;
-
-    private EfficientStreamingTransformer() {
-    }
-
-    private void materialize() throws TransformerException {
-        if (m_realTransformer == null) {
-            m_realTransformer = transformerFactory.newTransformer();
-        }
-    }
-
-    public void clearParameters() {
-        if (m_realTransformer != null)
-            m_realTransformer.clearParameters();
-    }
-
-    public javax.xml.transform.ErrorListener getErrorListener() {
-        try {
-            materialize();
-            return m_realTransformer.getErrorListener();
-        } catch (TransformerException e) {
-            // will be caught later
-        }
-        return null;
-    }
-
-    public java.util.Properties getOutputProperties() {
-        try {
-            materialize();
-            return m_realTransformer.getOutputProperties();
-        } catch (TransformerException e) {
-            // will be caught later
-        }
-        return null;
-    }
-
-    public String getOutputProperty(String str)
-        throws java.lang.IllegalArgumentException {
-        try {
-            materialize();
-            return m_realTransformer.getOutputProperty(str);
-        } catch (TransformerException e) {
-            // will be caught later
-        }
-        return null;
-    }
-
-    public Object getParameter(String str) {
-        try {
-            materialize();
-            return m_realTransformer.getParameter(str);
-        } catch (TransformerException e) {
-            // will be caught later
-        }
-        return null;
-    }
-
-    public javax.xml.transform.URIResolver getURIResolver() {
-        try {
-            materialize();
-            return m_realTransformer.getURIResolver();
-        } catch (TransformerException e) {
-            // will be caught later
-        }
-        return null;
-    }
-
-    public void setErrorListener(
-        javax.xml.transform.ErrorListener errorListener)
-        throws java.lang.IllegalArgumentException {
-        try {
-            materialize();
-            m_realTransformer.setErrorListener(errorListener);
-        } catch (TransformerException e) {
-            // will be caught later
-        }
-    }
-
-    public void setOutputProperties(java.util.Properties properties)
-        throws java.lang.IllegalArgumentException {
-        try {
-            materialize();
-            m_realTransformer.setOutputProperties(properties);
-        } catch (TransformerException e) {
-            // will be caught later
-        }
-    }
-
-    public void setOutputProperty(String str, String str1)
-        throws java.lang.IllegalArgumentException {
-        try {
-            materialize();
-            m_realTransformer.setOutputProperty(str, str1);
-        } catch (TransformerException e) {
-            // will be caught later
-        }
-    }
-
-    public void setParameter(String str, Object obj) {
-        try {
-            materialize();
-            m_realTransformer.setParameter(str, obj);
-        } catch (TransformerException e) {
-            // will be caught later
-        }
-    }
-
-    public void setURIResolver(javax.xml.transform.URIResolver uRIResolver) {
-        try {
-            materialize();
-            m_realTransformer.setURIResolver(uRIResolver);
-        } catch (TransformerException e) {
-            // will be caught later
-        }
-    }
-
-    private InputStream getInputStreamFromSource(StreamSource s)
-        throws TransformerException {
-
-        InputStream stream = s.getInputStream();
-        if (stream != null)
-            return stream;
-
-        if (s.getReader() != null)
-            return null;
-
-        String systemId = s.getSystemId();
-        if (systemId != null) {
-            try {
-                String fileURL = systemId;
-
-                if (systemId.startsWith("file:///"))
-                {
-                    /*
-                     systemId is:
-                     file:///<drive>:/some/path/file.xml
-                     or
-                     file:///some/path/file.xml
-                    */
-
-                    String absolutePath = systemId.substring(7);
-                    /*
-                     /<drive>:/some/path/file.xml
-                     or
-                     /some/path/file.xml
-                    */
-
-                    boolean hasDriveDesignator = absolutePath.indexOf(":") > 0;
-                    if (hasDriveDesignator) {
-                      String driveDesignatedPath = absolutePath.substring(1);
-                      /*
-                      <drive>:/some/path/file.xml */
-                      fileURL = driveDesignatedPath;
-                    }
-                    else {
-                      /*
-                      /some/path/file.xml */
-                      fileURL = absolutePath;
-                    }
-                }
-                //return new FileInputStream(fileURL);
-                try {
-                    return new FileInputStream(new File(new URI(fileURL)));
-                } catch (URISyntaxException ex) {
-                    throw new TransformerException(ex);
-                }
-            } catch (IOException e) {
-                throw new TransformerException(e.toString());
-            }
-        }
-
-        throw new TransformerException("Unexpected StreamSource object");
-    }
-
-    //------------------------------------------------------------------------
-
-    public void transform(
-        javax.xml.transform.Source source,
-        javax.xml.transform.Result result)
-        throws javax.xml.transform.TransformerException
-    {
-        // StreamSource -> StreamResult
-        if ((source instanceof StreamSource)
-            && (result instanceof StreamResult)) {
-            try {
-                StreamSource streamSource = (StreamSource) source;
-                InputStream is = getInputStreamFromSource(streamSource);
-
-                OutputStream os = ((StreamResult) result).getOutputStream();
-                if (os == null)
-                    // TODO: We might want to fix this if it were to be used beyond
-                    // XmlDataContentHandler that we know uses only OutputStream
-                    throw new TransformerException("Unexpected StreamResult object contains null OutputStream");
-
-                if (is != null) {
-                    if (is.markSupported())
-                        is.mark(Integer.MAX_VALUE);
-                    int num;
-                    byte[] b = new byte[8192];
-                    while ((num = is.read(b)) != -1) {
-                        os.write(b, 0, num);
-                    }
-                    if (is.markSupported())
-                        is.reset();
-                    return;
-                }
-
-                Reader reader = streamSource.getReader();
-                if (reader != null) {
-
-                    if (reader.markSupported())
-                        reader.mark(Integer.MAX_VALUE);
-
-                    PushbackReader pushbackReader = new PushbackReader(reader, 4096);
-                    //some size to unread <?xml ....?>
-                    XMLDeclarationParser ev =
-                        new XMLDeclarationParser(pushbackReader);
-                    try {
-                        ev.parse();
-                    } catch (Exception ex) {
-                        throw new TransformerException(
-                            "Unable to run the JAXP transformer on a stream "
-                                + ex.getMessage());
-                    }
-                    Writer writer =
-                        new OutputStreamWriter(os /*, ev.getEncoding()*/);
-                    ev.writeTo(writer);         // doesn't write any, if no header
-
-                    int num;
-                    char[] ac = new char[8192];
-                    while ((num = pushbackReader.read(ac)) != -1) {
-                        writer.write(ac, 0, num);
-                    }
-                    writer.flush();
-
-                    if (reader.markSupported())
-                        reader.reset();
-                    return;
-                }
-            } catch (IOException e) {
-                e.printStackTrace();
-                throw new TransformerException(e.toString());
-            }
-
-            throw new TransformerException("Unexpected StreamSource object");
-        }
-        // FastInfosetSource -> DOMResult
-        else if (FastInfosetReflection.isFastInfosetSource(source)
-                && (result instanceof DOMResult))
-        {
-            try {
-                // Use reflection to avoid a static dep with FI
-                if (m_fiDOMDocumentParser == null) {
-                    m_fiDOMDocumentParser = FastInfosetReflection.DOMDocumentParser_new();
-                }
-
-                // m_fiDOMDocumentParser.parse(document, source.getInputStream())
-                FastInfosetReflection.DOMDocumentParser_parse(
-                    m_fiDOMDocumentParser,
-                    (Document) ((DOMResult) result).getNode(),
-                    FastInfosetReflection.FastInfosetSource_getInputStream(source));
-
-                // We're done!
-                return;
-            }
-            catch (Exception e) {
-                throw new TransformerException(e);
-            }
-        }
-        // DOMSource -> FastInfosetResult
-        else if ((source instanceof DOMSource)
-                && FastInfosetReflection.isFastInfosetResult(result))
-        {
-            try {
-                // Use reflection to avoid a static dep with FI
-                if (m_fiDOMDocumentSerializer == null) {
-                    m_fiDOMDocumentSerializer = FastInfosetReflection.DOMDocumentSerializer_new();
-                }
-
-                // m_fiDOMDocumentSerializer.setOutputStream(result.getOutputStream())
-                FastInfosetReflection.DOMDocumentSerializer_setOutputStream(
-                    m_fiDOMDocumentSerializer,
-                    FastInfosetReflection.FastInfosetResult_getOutputStream(result));
-
-                // m_fiDOMDocumentSerializer.serialize(node)
-                FastInfosetReflection.DOMDocumentSerializer_serialize(
-                    m_fiDOMDocumentSerializer,
-                    ((DOMSource) source).getNode());
-
-                // We're done!
-                return;
-            }
-            catch (Exception e) {
-                throw new TransformerException(e);
-            }
-        }
-
-        // All other cases -- use transformer object
-
-        materialize();
-        m_realTransformer.transform(source, result);
-    }
-
-    /**
-     * Threadlocal to hold a Transformer instance for this thread.
-     * CR : 6813167
-     */
-    //private static ThreadLocal effTransformer = new ThreadLocal();
-
-    /**
-     * Return Transformer instance for this thread, allocating a new one if
-     * necessary. Note that this method does not clear global parameters,
-     * properties or any other data set on a previously used transformer.
-     */
-    public static Transformer newTransformer() {
-        //CR : 6813167
-        /*Transformer tt = (Transformer) effTransformer.get();
-        if (tt == null) {
-            effTransformer.set(tt = new EfficientStreamingTransformer());
-        }
-        return tt;*/
-        return new EfficientStreamingTransformer();
-    }
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/AttachmentPart.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,528 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-import java.io.InputStream;
-import java.io.Reader;
-import java.util.Iterator;
-
-import javax.activation.DataHandler;
-
-/**
- * A single attachment to a <code>SOAPMessage</code> object. A <code>SOAPMessage</code>
- * object may contain zero, one, or many <code>AttachmentPart</code> objects.
- * Each <code>AttachmentPart</code> object consists of two parts,
- * application-specific content and associated MIME headers. The
- * MIME headers consists of name/value pairs that can be used to
- * identify and describe the content.
- * <p>
- * An <code>AttachmentPart</code> object must conform to certain standards.
- * <OL>
- * <LI>It must conform to <a href="http://www.ietf.org/rfc/rfc2045.txt">
- *     MIME [RFC2045] standards</a>
- * <LI>It MUST contain content
- * <LI>The header portion MUST include the following header:
- *  <UL>
- *   <LI><code>Content-Type</code><br>
- *       This header identifies the type of data in the content of an
- *       <code>AttachmentPart</code> object and MUST conform to [RFC2045].
- *       The following is an example of a Content-Type header:
- *       <PRE>
- *       Content-Type:  application/xml
- *       </PRE>
- *       The following line of code, in which <code>ap</code> is an
- *       <code>AttachmentPart</code> object, sets the header shown in
- *       the previous example.
- *       <PRE>
- *       ap.setMimeHeader("Content-Type", "application/xml");
- *       </PRE>
- * <p>
- *  </UL>
- * </OL>
- * <p>
- * There are no restrictions on the content portion of an <code>
- * AttachmentPart</code> object. The content may be anything from a
- * simple plain text object to a complex XML document or image file.
- *
- * <p>
- * An <code>AttachmentPart</code> object is created with the method
- * <code>SOAPMessage.createAttachmentPart</code>. After setting its MIME headers,
- *  the <code>AttachmentPart</code> object is added to the message
- * that created it with the method <code>SOAPMessage.addAttachmentPart</code>.
- *
- * <p>
- * The following code fragment, in which <code>m</code> is a
- * <code>SOAPMessage</code> object and <code>contentStringl</code> is a
- * <code>String</code>, creates an instance of <code>AttachmentPart</code>,
- * sets the <code>AttachmentPart</code> object with some content and
- * header information, and adds the <code>AttachmentPart</code> object to
- * the <code>SOAPMessage</code> object.
- * <PRE>
- *     AttachmentPart ap1 = m.createAttachmentPart();
- *     ap1.setContent(contentString1, "text/plain");
- *     m.addAttachmentPart(ap1);
- * </PRE>
- *
- *
- * <p>
- * The following code fragment creates and adds a second
- * <code>AttachmentPart</code> instance to the same message. <code>jpegData</code>
- * is a binary byte buffer representing the jpeg file.
- * <PRE>
- *     AttachmentPart ap2 = m.createAttachmentPart();
- *     byte[] jpegData =  ...;
- *     ap2.setContent(new ByteArrayInputStream(jpegData), "image/jpeg");
- *     m.addAttachmentPart(ap2);
- * </PRE>
- * <p>
- * The <code>getContent</code> method retrieves the contents and header from
- * an <code>AttachmentPart</code> object. Depending on the
- * <code>DataContentHandler</code> objects present, the returned
- * <code>Object</code> can either be a typed Java object corresponding
- * to the MIME type or an <code>InputStream</code> object that contains the
- * content as bytes.
- * <PRE>
- *     String content1 = ap1.getContent();
- *     java.io.InputStream content2 = ap2.getContent();
- * </PRE>
- *
- * The method <code>clearContent</code> removes all the content from an
- * <code>AttachmentPart</code> object but does not affect its header information.
- * <PRE>
- *     ap1.clearContent();
- * </PRE>
- *
- * @since 1.6
- */
-
-public abstract class AttachmentPart {
-    /**
-     * Returns the number of bytes in this <code>AttachmentPart</code>
-     * object.
-     *
-     * @return the size of this <code>AttachmentPart</code> object in bytes
-     *         or -1 if the size cannot be determined
-     * @exception SOAPException if the content of this attachment is
-     *            corrupted of if there was an exception while trying
-     *            to determine the size.
-     */
-    public abstract int getSize() throws SOAPException;
-
-    /**
-     * Clears out the content of this <code>AttachmentPart</code> object.
-     * The MIME header portion is left untouched.
-     */
-    public abstract void clearContent();
-
-    /**
-     * Gets the content of this <code>AttachmentPart</code> object as a Java
-     * object. The type of the returned Java object depends on (1) the
-     * <code>DataContentHandler</code> object that is used to interpret the bytes
-     * and (2) the <code>Content-Type</code> given in the header.
-     * <p>
-     * For the MIME content types "text/plain", "text/html" and "text/xml", the
-     * <code>DataContentHandler</code> object does the conversions to and
-     * from the Java types corresponding to the MIME types.
-     * For other MIME types,the <code>DataContentHandler</code> object
-     * can return an <code>InputStream</code> object that contains the content data
-     * as raw bytes.
-     * <p>
-     * A SAAJ-compliant implementation must, as a minimum, return a
-     * <code>java.lang.String</code> object corresponding to any content
-     * stream with a <code>Content-Type</code> value of
-     * <code>text/plain</code>, a
-     * <code>javax.xml.transform.stream.StreamSource</code> object corresponding to a
-     * content stream with a <code>Content-Type</code> value of
-     * <code>text/xml</code>, a <code>java.awt.Image</code> object
-     * corresponding to a content stream with a
-     * <code>Content-Type</code> value of <code>image/gif</code> or
-     * <code>image/jpeg</code>.  For those content types that an
-     * installed <code>DataContentHandler</code> object does not understand, the
-     * <code>DataContentHandler</code> object is required to return a
-     * <code>java.io.InputStream</code> object with the raw bytes.
-     *
-     * @return a Java object with the content of this <code>AttachmentPart</code>
-     *         object
-     *
-     * @exception SOAPException if there is no content set into this
-     *            <code>AttachmentPart</code> object or if there was a data
-     *            transformation error
-     */
-    public abstract Object getContent() throws SOAPException;
-
-    /**
-     * Gets the content of this <code>AttachmentPart</code> object as an
-     * InputStream as if a call had been made to <code>getContent</code> and no
-     * <code>DataContentHandler</code> had been registered for the
-     * <code>content-type</code> of this <code>AttachmentPart</code>.
-     *<p>
-     * Note that reading from the returned InputStream would result in consuming
-     * the data in the stream. It is the responsibility of the caller to reset
-     * the InputStream appropriately before calling a Subsequent API. If a copy
-     * of the raw attachment content is required then the {@link #getRawContentBytes} API
-     * should be used instead.
-     *
-     * @return an <code>InputStream</code> from which the raw data contained by
-     *      the <code>AttachmentPart</code> can be accessed.
-     *
-     * @throws SOAPException if there is no content set into this
-     *      <code>AttachmentPart</code> object or if there was a data
-     *      transformation error.
-     *
-     * @since 1.6, SAAJ 1.3
-     * @see #getRawContentBytes
-     */
-    public abstract InputStream getRawContent() throws SOAPException;
-
-    /**
-     * Gets the content of this <code>AttachmentPart</code> object as a
-     * byte[] array as if a call had been made to <code>getContent</code> and no
-     * <code>DataContentHandler</code> had been registered for the
-     * <code>content-type</code> of this <code>AttachmentPart</code>.
-     *
-     * @return a <code>byte[]</code> array containing the raw data of the
-     *      <code>AttachmentPart</code>.
-     *
-     * @throws SOAPException if there is no content set into this
-     *      <code>AttachmentPart</code> object or if there was a data
-     *      transformation error.
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public abstract byte[] getRawContentBytes() throws SOAPException;
-
-    /**
-     * Returns an <code>InputStream</code> which can be used to obtain the
-     * content of <code>AttachmentPart</code>  as Base64 encoded
-     * character data, this method would base64 encode the raw bytes
-     * of the attachment and return.
-     *
-     * @return an <code>InputStream</code> from which the Base64 encoded
-     *       <code>AttachmentPart</code> can be read.
-     *
-     * @throws SOAPException if there is no content set into this
-     *      <code>AttachmentPart</code> object or if there was a data
-     *      transformation error.
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public abstract InputStream getBase64Content() throws SOAPException;
-
-    /**
-     * Sets the content of this attachment part to that of the given
-     * <code>Object</code> and sets the value of the <code>Content-Type</code>
-     * header to the given type. The type of the
-     * <code>Object</code> should correspond to the value given for the
-     * <code>Content-Type</code>. This depends on the particular
-     * set of <code>DataContentHandler</code> objects in use.
-     *
-     *
-     * @param object the Java object that makes up the content for
-     *               this attachment part
-     * @param contentType the MIME string that specifies the type of
-     *                  the content
-     *
-     * @exception IllegalArgumentException may be thrown if the contentType
-     *            does not match the type of the content object, or if there
-     *            was no <code>DataContentHandler</code> object for this
-     *            content object
-     *
-     * @see #getContent
-     */
-    public abstract void setContent(Object object, String contentType);
-
-    /**
-     * Sets the content of this attachment part to that contained by the
-     * <code>InputStream</code> <code>content</code> and sets the value of the
-     * <code>Content-Type</code> header to the value contained in
-     * <code>contentType</code>.
-     * <P>
-     *  A subsequent call to getSize() may not be an exact measure
-     *  of the content size.
-     *
-     * @param content the raw data to add to the attachment part
-     * @param contentType the value to set into the <code>Content-Type</code>
-     * header
-     *
-     * @exception SOAPException if an there is an error in setting the content
-     * @exception NullPointerException if <code>content</code> is null
-     * @since 1.6, SAAJ 1.3
-     */
-    public abstract void setRawContent(InputStream content, String contentType) throws SOAPException;
-
-    /**
-     * Sets the content of this attachment part to that contained by the
-     * <code>byte[]</code> array <code>content</code> and sets the value of the
-     * <code>Content-Type</code> header to the value contained in
-     * <code>contentType</code>.
-     *
-     * @param content the raw data to add to the attachment part
-     * @param contentType the value to set into the <code>Content-Type</code>
-     * header
-     * @param offset the offset in the byte array of the content
-     * @param len the number of bytes that form the content
-     *
-     * @exception SOAPException if an there is an error in setting the content
-     * or content is null
-     * @since 1.6, SAAJ 1.3
-     */
-    public abstract void setRawContentBytes(
-        byte[] content, int offset, int len,  String contentType)
-        throws SOAPException;
-
-
-    /**
-     * Sets the content of this attachment part from the Base64 source
-     * <code>InputStream</code>  and sets the value of the
-     * <code>Content-Type</code> header to the value contained in
-     * <code>contentType</code>, This method would first decode the base64
-     * input and write the resulting raw bytes to the attachment.
-     * <P>
-     *  A subsequent call to getSize() may not be an exact measure
-     *  of the content size.
-     *
-     * @param content the base64 encoded data to add to the attachment part
-     * @param contentType the value to set into the <code>Content-Type</code>
-     * header
-     *
-     * @exception SOAPException if an there is an error in setting the content
-     * @exception NullPointerException if <code>content</code> is null
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public abstract void setBase64Content(
-        InputStream content, String contentType) throws SOAPException;
-
-
-    /**
-     * Gets the <code>DataHandler</code> object for this <code>AttachmentPart</code>
-     * object.
-     *
-     * @return the <code>DataHandler</code> object associated with this
-     *         <code>AttachmentPart</code> object
-     *
-     * @exception SOAPException if there is no data in
-     * this <code>AttachmentPart</code> object
-     */
-    public abstract DataHandler getDataHandler()
-        throws SOAPException;
-
-    /**
-     * Sets the given <code>DataHandler</code> object as the data handler
-     * for this <code>AttachmentPart</code> object. Typically, on an incoming
-     * message, the data handler is automatically set. When
-     * a message is being created and populated with content, the
-     * <code>setDataHandler</code> method can be used to get data from
-     * various data sources into the message.
-     *
-     * @param dataHandler the <code>DataHandler</code> object to be set
-     *
-     * @exception IllegalArgumentException if there was a problem with
-     *            the specified <code>DataHandler</code> object
-     */
-    public abstract void setDataHandler(DataHandler dataHandler);
-
-
-    /**
-     * Gets the value of the MIME header whose name is "Content-ID".
-     *
-     * @return a <code>String</code> giving the value of the
-     *          "Content-ID" header or <code>null</code> if there
-     *          is none
-     * @see #setContentId
-     */
-    public String getContentId() {
-        String[] values = getMimeHeader("Content-ID");
-        if (values != null && values.length > 0)
-            return values[0];
-        return null;
-    }
-
-    /**
-     * Gets the value of the MIME header whose name is "Content-Location".
-     *
-     * @return a <code>String</code> giving the value of the
-     *          "Content-Location" header or <code>null</code> if there
-     *          is none
-     */
-    public String getContentLocation() {
-        String[] values = getMimeHeader("Content-Location");
-        if (values != null && values.length > 0)
-            return values[0];
-        return null;
-    }
-
-    /**
-     * Gets the value of the MIME header whose name is "Content-Type".
-     *
-     * @return a <code>String</code> giving the value of the
-     *          "Content-Type" header or <code>null</code> if there
-     *          is none
-     */
-    public String getContentType() {
-        String[] values = getMimeHeader("Content-Type");
-        if (values != null && values.length > 0)
-            return values[0];
-        return null;
-    }
-
-    /**
-     * Sets the MIME header whose name is "Content-ID" with the given value.
-     *
-     * @param contentId a <code>String</code> giving the value of the
-     *          "Content-ID" header
-     *
-     * @exception IllegalArgumentException if there was a problem with
-     *            the specified <code>contentId</code> value
-     * @see #getContentId
-     */
-    public void setContentId(String contentId)
-    {
-        setMimeHeader("Content-ID", contentId);
-    }
-
-
-    /**
-     * Sets the MIME header whose name is "Content-Location" with the given value.
-     *
-     *
-     * @param contentLocation a <code>String</code> giving the value of the
-     *          "Content-Location" header
-     * @exception IllegalArgumentException if there was a problem with
-     *            the specified content location
-     */
-    public void setContentLocation(String contentLocation)
-    {
-        setMimeHeader("Content-Location", contentLocation);
-    }
-
-    /**
-     * Sets the MIME header whose name is "Content-Type" with the given value.
-     *
-     * @param contentType a <code>String</code> giving the value of the
-     *          "Content-Type" header
-     *
-     * @exception IllegalArgumentException if there was a problem with
-     *            the specified content type
-     */
-    public void setContentType(String contentType)
-    {
-        setMimeHeader("Content-Type", contentType);
-    }
-
-    /**
-     * Removes all MIME headers that match the given name.
-     *
-     * @param header the string name of the MIME header/s to
-     *               be removed
-     */
-    public abstract void removeMimeHeader(String header);
-
-    /**
-     * Removes all the MIME header entries.
-     */
-    public abstract void removeAllMimeHeaders();
-
-
-    /**
-     * Gets all the values of the header identified by the given
-     * <code>String</code>.
-     *
-     * @param name the name of the header; example: "Content-Type"
-     * @return a <code>String</code> array giving the value for the
-     *         specified header
-     * @see #setMimeHeader
-     */
-    public abstract String[] getMimeHeader(String name);
-
-
-    /**
-     * Changes the first header entry that matches the given name
-     * to the given value, adding a new header if no existing header
-     * matches. This method also removes all matching headers but the first. <p>
-     *
-     * Note that RFC822 headers can only contain US-ASCII characters.
-     *
-     * @param   name    a <code>String</code> giving the name of the header
-     *                  for which to search
-     * @param   value   a <code>String</code> giving the value to be set for
-     *                  the header whose name matches the given name
-     *
-     * @exception IllegalArgumentException if there was a problem with
-     *            the specified mime header name or value
-     */
-    public abstract void setMimeHeader(String name, String value);
-
-
-    /**
-     * Adds a MIME header with the specified name and value to this
-     * <code>AttachmentPart</code> object.
-     * <p>
-     * Note that RFC822 headers can contain only US-ASCII characters.
-     *
-     * @param   name    a <code>String</code> giving the name of the header
-     *                  to be added
-     * @param   value   a <code>String</code> giving the value of the header
-     *                  to be added
-     *
-     * @exception IllegalArgumentException if there was a problem with
-     *            the specified mime header name or value
-     */
-    public abstract void addMimeHeader(String name, String value);
-
-    /**
-     * Retrieves all the headers for this <code>AttachmentPart</code> object
-     * as an iterator over the <code>MimeHeader</code> objects.
-     *
-     * @return  an <code>Iterator</code> object with all of the Mime
-     *          headers for this <code>AttachmentPart</code> object
-     */
-    public abstract Iterator getAllMimeHeaders();
-
-    /**
-     * Retrieves all <code>MimeHeader</code> objects that match a name in
-     * the given array.
-     *
-     * @param names a <code>String</code> array with the name(s) of the
-     *        MIME headers to be returned
-     * @return  all of the MIME headers that match one of the names in the
-     *           given array as an <code>Iterator</code> object
-     */
-    public abstract Iterator getMatchingMimeHeaders(String[] names);
-
-    /**
-     * Retrieves all <code>MimeHeader</code> objects whose name does
-     * not match a name in the given array.
-     *
-     * @param names a <code>String</code> array with the name(s) of the
-     *        MIME headers not to be returned
-     * @return  all of the MIME headers in this <code>AttachmentPart</code> object
-     *          except those that match one of the names in the
-     *           given array.  The nonmatching MIME headers are returned as an
-     *           <code>Iterator</code> object.
-     */
-    public abstract Iterator getNonMatchingMimeHeaders(String[] names);
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/Detail.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-import java.util.Iterator;
-
-import javax.xml.namespace.QName;
-
-/**
- * A container for <code>DetailEntry</code> objects. <code>DetailEntry</code>
- * objects give detailed error information that is application-specific and
- * related to the <code>SOAPBody</code> object that contains it.
- *<P>
- * A <code>Detail</code> object, which is part of a <code>SOAPFault</code>
- * object, can be retrieved using the method <code>SOAPFault.getDetail</code>.
- * The <code>Detail</code> interface provides two methods. One creates a new
- * <code>DetailEntry</code> object and also automatically adds it to
- * the <code>Detail</code> object. The second method gets a list of the
- * <code>DetailEntry</code> objects contained in a <code>Detail</code>
- * object.
- * <P>
- * The following code fragment, in which <i>sf</i> is a <code>SOAPFault</code>
- * object, gets its <code>Detail</code> object (<i>d</i>), adds a new
- * <code>DetailEntry</code> object to <i>d</i>, and then gets a list of all the
- * <code>DetailEntry</code> objects in <i>d</i>. The code also creates a
- * <code>Name</code> object to pass to the method <code>addDetailEntry</code>.
- * The variable <i>se</i>, used to create the <code>Name</code> object,
- * is a <code>SOAPEnvelope</code> object.
- * <PRE>
- *    Detail d = sf.getDetail();
- *    Name name = se.createName("GetLastTradePrice", "WOMBAT",
- *                                "http://www.wombat.org/trader");
- *    d.addDetailEntry(name);
- *    Iterator it = d.getDetailEntries();
- * </PRE>
- *
- * @since 1.6
- */
-public interface Detail extends SOAPFaultElement {
-
-    /**
-     * Creates a new <code>DetailEntry</code> object with the given
-     * name and adds it to this <code>Detail</code> object.
-     *
-     * @param name a <code>Name</code> object identifying the
-     *         new <code>DetailEntry</code> object
-     *
-     * @exception SOAPException thrown when there is a problem in adding a
-     * DetailEntry object to this Detail object.
-     *
-     * @see Detail#addDetailEntry(QName qname)
-     */
-    public DetailEntry addDetailEntry(Name name) throws SOAPException;
-
-    /**
-     * Creates a new <code>DetailEntry</code> object with the given
-     * QName and adds it to this <code>Detail</code> object. This method
-     * is the preferred over the one using Name.
-     *
-     * @param qname a <code>QName</code> object identifying the
-     *         new <code>DetailEntry</code> object
-     *
-     * @exception SOAPException thrown when there is a problem in adding a
-     * DetailEntry object to this Detail object.
-     *
-     * @see Detail#addDetailEntry(Name name)
-     * @since 1.6, SAAJ 1.3
-     */
-    public DetailEntry addDetailEntry(QName qname) throws SOAPException;
-
-    /**
-     * Gets an Iterator over all of the <code>DetailEntry</code>s in this <code>Detail</code> object.
-     *
-     * @return an <code>Iterator</code> object over the <code>DetailEntry</code>
-     *             objects in this <code>Detail</code> object
-     */
-    public Iterator getDetailEntries();
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/DetailEntry.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-/**
- * The content for a <code>Detail</code> object, giving details for
- * a <code>SOAPFault</code> object.  A <code>DetailEntry</code> object,
- * which carries information about errors related to the <code>SOAPBody</code>
- * object that contains it, is application-specific.
- *
- * @since 1.6
- */
-public interface DetailEntry extends SOAPElement {
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/FactoryFinder.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,236 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-import java.io.*;
-import java.util.Properties;
-
-
-class FactoryFinder {
-
-    /**
-     * Creates an instance of the specified class using the specified
-     * <code>ClassLoader</code> object.
-     *
-     * @exception SOAPException if the given class could not be found
-     *            or could not be instantiated
-     */
-    private static Object newInstance(String className,
-                                      ClassLoader classLoader)
-            throws SOAPException
-    {
-        try {
-            Class spiClass = safeLoadClass(className, classLoader);
-            return spiClass.newInstance();
-
-        } catch (ClassNotFoundException x) {
-            throw new SOAPException("Provider " + className + " not found", x);
-        } catch (Exception x) {
-            throw new SOAPException("Provider " + className + " could not be instantiated: " + x, x);
-        }
-    }
-
-    /**
-     * Finds the implementation <code>Class</code> object for the given
-     * factory name, or null if that fails.
-     * <P>
-     * This method is package private so that this code can be shared.
-     *
-     * @return the <code>Class</code> object of the specified message factory;
-     *         or <code>null</code>
-     *
-     * @param factoryId             the name of the factory to find, which is
-     *                              a system property
-     * @exception SOAPException if there is a SOAP error
-     */
-    static Object find(String factoryId)
-            throws SOAPException
-    {
-        return find(factoryId, null, false);
-    }
-
-    /**
-     * Finds the implementation <code>Class</code> object for the given
-     * factory name, or if that fails, finds the <code>Class</code> object
-     * for the given fallback class name. The arguments supplied must be
-     * used in order. If using the first argument is successful, the second
-     * one will not be used.
-     * <P>
-     * This method is package private so that this code can be shared.
-     *
-     * @return the <code>Class</code> object of the specified message factory;
-     *         may be <code>null</code>
-     *
-     * @param factoryId             the name of the factory to find, which is
-     *                              a system property
-     * @param fallbackClassName     the implementation class name, which is
-     *                              to be used only if nothing else
-     *                              is found; <code>null</code> to indicate that
-     *                              there is no fallback class name
-     * @exception SOAPException if there is a SOAP error
-     */
-    static Object find(String factoryId, String fallbackClassName)
-            throws SOAPException
-    {
-        return find(factoryId, fallbackClassName, true);
-    }
-
-    /**
-     * Finds the implementation <code>Class</code> object for the given
-     * factory name, or if that fails, finds the <code>Class</code> object
-     * for the given default class name, but only if <code>tryFallback</code>
-     * is <code>true</code>.  The arguments supplied must be used in order
-     * If using the first argument is successful, the second one will not
-     * be used.  Note the default class name may be needed even if fallback
-     * is not to be attempted, so certain error conditions can be handled.
-     * <P>
-     * This method is package private so that this code can be shared.
-     *
-     * @return the <code>Class</code> object of the specified message factory;
-     *         may not be <code>null</code>
-     *
-     * @param factoryId             the name of the factory to find, which is
-     *                              a system property
-     * @param defaultClassName      the implementation class name, which is
-     *                              to be used only if nothing else
-     *                              is found; <code>null</code> to indicate
-     *                              that there is no default class name
-     * @param tryFallback           whether to try the default class as a
-     *                              fallback
-     * @exception SOAPException if there is a SOAP error
-     */
-    static Object find(String factoryId, String defaultClassName,
-                       boolean tryFallback) throws SOAPException {
-        ClassLoader classLoader;
-        try {
-            classLoader = Thread.currentThread().getContextClassLoader();
-        } catch (Exception x) {
-            throw new SOAPException(x.toString(), x);
-        }
-
-        // Use the system property first
-        try {
-            String systemProp =
-                    System.getProperty( factoryId );
-            if( systemProp!=null) {
-                return newInstance(systemProp, classLoader);
-            }
-        } catch (SecurityException se) {
-        }
-
-        // try to read from $java.home/lib/jaxm.properties
-        try {
-            String javah=System.getProperty( "java.home" );
-            String configFile = javah + File.separator +
-                    "lib" + File.separator + "jaxm.properties";
-            File f=new File( configFile );
-            if( f.exists()) {
-                Properties props=new Properties();
-                props.load( new FileInputStream(f));
-                String factoryClassName = props.getProperty(factoryId);
-                return newInstance(factoryClassName, classLoader);
-            }
-        } catch(Exception ex ) {
-        }
-
-        String serviceId = "META-INF/services/" + factoryId;
-        // try to find services in CLASSPATH
-        try {
-            InputStream is=null;
-            if (classLoader == null) {
-                is=ClassLoader.getSystemResourceAsStream(serviceId);
-            } else {
-                is=classLoader.getResourceAsStream(serviceId);
-            }
-
-            if( is!=null ) {
-                BufferedReader rd =
-                        new BufferedReader(new InputStreamReader(is, "UTF-8"));
-
-                String factoryClassName = rd.readLine();
-                rd.close();
-
-                if (factoryClassName != null &&
-                        ! "".equals(factoryClassName)) {
-                    return newInstance(factoryClassName, classLoader);
-                }
-            }
-        } catch( Exception ex ) {
-        }
-
-        // If not found and fallback should not be tried, return a null result.
-        if (!tryFallback)
-            return null;
-
-        // We didn't find the class through the usual means so try the default
-        // (built in) factory if specified.
-        if (defaultClassName == null) {
-            throw new SOAPException(
-                    "Provider for " + factoryId + " cannot be found", null);
-        }
-        return newInstance(defaultClassName, classLoader);
-    }
-
-    /**
-     * Loads the class, provided that the calling thread has an access to the
-     * class being loaded. If this is the specified default factory class and it
-     * is restricted by package.access we get a SecurityException and can do a
-     * Class.forName() on it so it will be loaded by the bootstrap class loader.
-     */
-    private static Class safeLoadClass(String className,
-                                       ClassLoader classLoader)
-            throws ClassNotFoundException {
-        try {
-            // make sure that the current thread has an access to the package of the given name.
-            SecurityManager s = System.getSecurityManager();
-            if (s != null) {
-                int i = className.lastIndexOf('.');
-                if (i != -1) {
-                    s.checkPackageAccess(className.substring(0, i));
-                }
-            }
-
-            if (classLoader == null)
-                return Class.forName(className);
-            else
-                return classLoader.loadClass(className);
-        } catch (SecurityException se) {
-            // (only) default implementation can be loaded
-            // using bootstrap class loader:
-            if (isDefaultImplementation(className))
-                return Class.forName(className);
-
-            throw se;
-        }
-    }
-
-    private static boolean isDefaultImplementation(String className) {
-        return MessageFactory.DEFAULT_MESSAGE_FACTORY.equals(className) ||
-                SOAPFactory.DEFAULT_SOAP_FACTORY.equals(className) ||
-                SOAPConnectionFactory.DEFAULT_SOAP_CONNECTION_FACTORY.equals(className) ||
-                SAAJMetaFactory.DEFAULT_META_FACTORY_CLASS.equals(className);
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/MessageFactory.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,202 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * A factory for creating <code>SOAPMessage</code> objects.
- * <P>
- * A SAAJ client can create a <code>MessageFactory</code> object
- * using the method <code>newInstance</code>, as shown in the following
- * lines of code.
- * <PRE>
- *       MessageFactory mf = MessageFactory.newInstance();
- *       MessageFactory mf12 = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
- * </PRE>
- * <P>
- * All <code>MessageFactory</code> objects, regardless of how they are
- * created, will produce <code>SOAPMessage</code> objects that
- * have the following elements by default:
- * <UL>
- *  <LI>A <code>SOAPPart</code> object
- *  <LI>A <code>SOAPEnvelope</code> object
- *  <LI>A <code>SOAPBody</code> object
- *  <LI>A <code>SOAPHeader</code> object
- * </UL>
- * In some cases, specialized MessageFactory objects may be obtained that produce messages
- * prepopulated with additional entries in the <code>SOAPHeader</code> object and the
- * <code>SOAPBody</code> object.
- * The content of a new <code>SOAPMessage</code> object depends on which of the two
- * <code>MessageFactory</code> methods is used to create it.
- * <UL>
- *  <LI><code>createMessage()</code> <BR>
- *      This is the method clients would normally use to create a request message.
- *  <LI><code>createMessage(MimeHeaders, java.io.InputStream)</code> -- message has
- *       content from the <code>InputStream</code> object and headers from the
- *       <code>MimeHeaders</code> object <BR>
- *        This method can be used internally by a service implementation to
- *        create a message that is a response to a request.
- * </UL>
- *
- * @since 1.6
- */
-public abstract class MessageFactory {
-
-    static final String DEFAULT_MESSAGE_FACTORY
-        = "com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl";
-
-    static private final String MESSAGE_FACTORY_PROPERTY
-        = "javax.xml.soap.MessageFactory";
-
-    /**
-     * Creates a new <code>MessageFactory</code> object that is an instance
-     * of the default implementation (SOAP 1.1),
-     *
-     * This method uses the following ordered lookup procedure to determine the MessageFactory implementation class to load:
-     * <UL>
-     *  <LI> Use the javax.xml.soap.MessageFactory system property.
-     *  <LI> Use the properties file "lib/jaxm.properties" in the JRE directory. This configuration file is in standard
-     * java.util.Properties format and contains the fully qualified name of the implementation class with the key being the
-     * system property defined above.
-     *  <LI> Use the Services API (as detailed in the JAR specification), if available, to determine the classname. The Services API
-     * will look for a classname in the file META-INF/services/javax.xml.soap.MessageFactory in jars available to the runtime.
-     *  <LI> Use the SAAJMetaFactory instance to locate the MessageFactory implementation class.
-     * </UL>
-
-     *
-     * @return a new instance of a <code>MessageFactory</code>
-     *
-     * @exception SOAPException if there was an error in creating the
-     *            default implementation of the
-     *            <code>MessageFactory</code>.
-     * @see SAAJMetaFactory
-     */
-
-    public static MessageFactory newInstance() throws SOAPException {
-
-
-        try {
-            MessageFactory factory = (MessageFactory) FactoryFinder.find(
-                    MESSAGE_FACTORY_PROPERTY,
-                    DEFAULT_MESSAGE_FACTORY,
-                    false);
-
-            if (factory != null) {
-                return factory;
-            }
-            return newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
-
-        } catch (Exception ex) {
-            throw new SOAPException(
-                    "Unable to create message factory for SOAP: "
-                                    +ex.getMessage());
-        }
-
-    }
-
-    /**
-     * Creates a new <code>MessageFactory</code> object that is an instance
-     * of the specified implementation.  May be a dynamic message factory,
-     * a SOAP 1.1 message factory, or a SOAP 1.2 message factory. A dynamic
-     * message factory creates messages based on the MIME headers specified
-     * as arguments to the <code>createMessage</code> method.
-     *
-     * This method uses the SAAJMetaFactory to locate the implementation class
-     * and create the MessageFactory instance.
-     *
-     * @return a new instance of a <code>MessageFactory</code>
-     *
-     * @param protocol  a string constant representing the class of the
-     *                   specified message factory implementation. May be
-     *                   either <code>DYNAMIC_SOAP_PROTOCOL</code>,
-     *                   <code>DEFAULT_SOAP_PROTOCOL</code> (which is the same
-     *                   as) <code>SOAP_1_1_PROTOCOL</code>, or
-     *                   <code>SOAP_1_2_PROTOCOL</code>.
-     *
-     * @exception SOAPException if there was an error in creating the
-     *            specified implementation of  <code>MessageFactory</code>.
-     * @see SAAJMetaFactory
-     * @since 1.6, SAAJ 1.3
-     */
-    public static MessageFactory newInstance(String protocol) throws SOAPException {
-        return SAAJMetaFactory.getInstance().newMessageFactory(protocol);
-    }
-
-    /**
-     * Creates a new <code>SOAPMessage</code> object with the default
-     * <code>SOAPPart</code>, <code>SOAPEnvelope</code>, <code>SOAPBody</code>,
-     * and <code>SOAPHeader</code> objects. Profile-specific message factories
-     * can choose to prepopulate the <code>SOAPMessage</code> object with
-     * profile-specific headers.
-     * <P>
-     * Content can be added to this message's <code>SOAPPart</code> object, and
-     * the message can be sent "as is" when a message containing only a SOAP part
-     * is sufficient. Otherwise, the <code>SOAPMessage</code> object needs
-     * to create one or more <code>AttachmentPart</code> objects and
-     * add them to itself. Any content that is not in XML format must be
-     * in an <code>AttachmentPart</code> object.
-     *
-     * @return a new <code>SOAPMessage</code> object
-     * @exception SOAPException if a SOAP error occurs
-     * @exception UnsupportedOperationException if the protocol of this
-     *      <code>MessageFactory</code> instance is <code>DYNAMIC_SOAP_PROTOCOL</code>
-     */
-    public abstract SOAPMessage createMessage()
-        throws SOAPException;
-
-    /**
-     * Internalizes the contents of the given <code>InputStream</code> object into a
-     * new <code>SOAPMessage</code> object and returns the <code>SOAPMessage</code>
-     * object.
-     *
-     * @param in the <code>InputStream</code> object that contains the data
-     *           for a message
-     * @param headers the transport-specific headers passed to the
-     *        message in a transport-independent fashion for creation of the
-     *        message
-     * @return a new <code>SOAPMessage</code> object containing the data from
-     *         the given <code>InputStream</code> object
-     *
-     * @exception IOException if there is a problem in reading data from
-     *            the input stream
-     *
-     * @exception SOAPException may be thrown if the message is invalid
-     *
-     * @exception IllegalArgumentException if the <code>MessageFactory</code>
-     *      requires one or more MIME headers to be present in the
-     *      <code>headers</code> parameter and they are missing.
-     *      <code>MessageFactory</code> implementations for
-     *      <code>SOAP_1_1_PROTOCOL</code> or
-     *      <code>SOAP_1_2_PROTOCOL</code> must not throw
-     *      <code>IllegalArgumentException</code> for this reason.
-     */
-    public abstract SOAPMessage createMessage(MimeHeaders headers,
-                                              InputStream in)
-        throws IOException, SOAPException;
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/MimeHeader.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-
-/**
- * An object that stores a MIME header name and its value. One or more
- * <code>MimeHeader</code> objects may be contained in a <code>MimeHeaders</code>
- * object.
- *
- * @see MimeHeaders
- * @since 1.6
- */
-public class MimeHeader {
-
-   private String name;
-   private String value;
-
-   /**
-    * Constructs a <code>MimeHeader</code> object initialized with the given
-    * name and value.
-    *
-    * @param name a <code>String</code> giving the name of the header
-    * @param value a <code>String</code> giving the value of the header
-    */
-    public MimeHeader(String name, String value) {
-        this.name = name;
-        this.value = value;
-    }
-
-    /**
-     * Returns the name of this <code>MimeHeader</code> object.
-     *
-     * @return the name of the header as a <code>String</code>
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Returns the value of this <code>MimeHeader</code> object.
-     *
-     * @return  the value of the header as a <code>String</code>
-     */
-    public String getValue() {
-        return value;
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/MimeHeaders.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,270 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-import java.util.Iterator;
-import java.util.Vector;
-
-/**
- * A container for <code>MimeHeader</code> objects, which represent
- * the MIME headers present in a MIME part of a message.
- *
- * <p>This class is used primarily when an application wants to
- * retrieve specific attachments based on certain MIME headers and
- * values. This class will most likely be used by implementations of
- * <code>AttachmentPart</code> and other MIME dependent parts of the SAAJ
- * API.
- * @see SOAPMessage#getAttachments
- * @see AttachmentPart
- * @since 1.6
- */
-public class MimeHeaders {
-    private Vector headers;
-
-   /**
-    * Constructs a default <code>MimeHeaders</code> object initialized with
-    * an empty <code>Vector</code> object.
-    */
-    public MimeHeaders() {
-        headers = new Vector();
-    }
-
-    /**
-     * Returns all of the values for the specified header as an array of
-     * <code>String</code> objects.
-     *
-     * @param   name the name of the header for which values will be returned
-     * @return a <code>String</code> array with all of the values for the
-     *         specified header
-     * @see #setHeader
-     */
-    public String[] getHeader(String name) {
-        Vector values = new Vector();
-
-        for(int i = 0; i < headers.size(); i++) {
-            MimeHeader hdr = (MimeHeader) headers.elementAt(i);
-            if (hdr.getName().equalsIgnoreCase(name)
-                && hdr.getValue() != null)
-                values.addElement(hdr.getValue());
-        }
-
-        if (values.size() == 0)
-            return null;
-
-        String r[] = new String[values.size()];
-        values.copyInto(r);
-        return r;
-    }
-
-    /**
-     * Replaces the current value of the first header entry whose name matches
-     * the given name with the given value, adding a new header if no existing header
-     * name matches. This method also removes all matching headers after the first one.
-     * <P>
-     * Note that RFC822 headers can contain only US-ASCII characters.
-     *
-     * @param   name a <code>String</code> with the name of the header for
-     *          which to search
-     * @param   value a <code>String</code> with the value that will replace the
-     *          current value of the specified header
-     *
-     * @exception IllegalArgumentException if there was a problem in the
-     * mime header name or the value being set
-     * @see #getHeader
-     */
-    public void setHeader(String name, String value)
-    {
-        boolean found = false;
-
-        if ((name == null) || name.equals(""))
-            throw new IllegalArgumentException("Illegal MimeHeader name");
-
-        for(int i = 0; i < headers.size(); i++) {
-            MimeHeader hdr = (MimeHeader) headers.elementAt(i);
-            if (hdr.getName().equalsIgnoreCase(name)) {
-                if (!found) {
-                    headers.setElementAt(new MimeHeader(hdr.getName(),
-                                                        value), i);
-                    found = true;
-                }
-                else
-                    headers.removeElementAt(i--);
-            }
-        }
-
-        if (!found)
-            addHeader(name, value);
-    }
-
-    /**
-     * Adds a <code>MimeHeader</code> object with the specified name and value
-     * to this <code>MimeHeaders</code> object's list of headers.
-     * <P>
-     * Note that RFC822 headers can contain only US-ASCII characters.
-     *
-     * @param   name a <code>String</code> with the name of the header to
-     *          be added
-     * @param   value a <code>String</code> with the value of the header to
-     *          be added
-     *
-     * @exception IllegalArgumentException if there was a problem in the
-     * mime header name or value being added
-     */
-    public void addHeader(String name, String value)
-    {
-        if ((name == null) || name.equals(""))
-            throw new IllegalArgumentException("Illegal MimeHeader name");
-
-        int pos = headers.size();
-
-        for(int i = pos - 1 ; i >= 0; i--) {
-            MimeHeader hdr = (MimeHeader) headers.elementAt(i);
-            if (hdr.getName().equalsIgnoreCase(name)) {
-                headers.insertElementAt(new MimeHeader(name, value),
-                                        i+1);
-                return;
-            }
-        }
-        headers.addElement(new MimeHeader(name, value));
-    }
-
-    /**
-     * Remove all <code>MimeHeader</code> objects whose name matches the
-     * given name.
-     *
-     * @param   name a <code>String</code> with the name of the header for
-     *          which to search
-     */
-    public void removeHeader(String name) {
-        for(int i = 0; i < headers.size(); i++) {
-            MimeHeader hdr = (MimeHeader) headers.elementAt(i);
-            if (hdr.getName().equalsIgnoreCase(name))
-                headers.removeElementAt(i--);
-        }
-    }
-
-    /**
-     * Removes all the header entries from this <code>MimeHeaders</code> object.
-     */
-    public void removeAllHeaders() {
-        headers.removeAllElements();
-    }
-
-
-    /**
-     * Returns all the <code>MimeHeader</code>s in this <code>MimeHeaders</code> object.
-     *
-     * @return  an <code>Iterator</code> object over this <code>MimeHeaders</code>
-     *          object's list of <code>MimeHeader</code> objects
-     */
-    public Iterator getAllHeaders() {
-        return headers.iterator();
-    }
-
-    class MatchingIterator implements Iterator {
-        private boolean match;
-        private Iterator iterator;
-        private String[] names;
-        private Object nextHeader;
-
-        MatchingIterator(String[] names, boolean match) {
-            this.match = match;
-            this.names = names;
-            this.iterator = headers.iterator();
-        }
-
-        private Object nextMatch() {
-        next:
-            while (iterator.hasNext()) {
-                MimeHeader hdr = (MimeHeader) iterator.next();
-
-                if (names == null)
-                    return match ? null : hdr;
-
-                for(int i = 0; i < names.length; i++)
-                    if (hdr.getName().equalsIgnoreCase(names[i]))
-                        if (match)
-                            return hdr;
-                        else
-                            continue next;
-                if (!match)
-                    return hdr;
-            }
-            return null;
-        }
-
-
-        public boolean hasNext() {
-            if (nextHeader == null)
-                nextHeader = nextMatch();
-            return nextHeader != null;
-        }
-
-        public Object next() {
-            // hasNext should've prefetched the header for us,
-            // return it.
-            if (nextHeader != null) {
-                Object ret = nextHeader;
-                nextHeader = null;
-                return ret;
-            }
-            if (hasNext())
-                return nextHeader;
-            return null;
-        }
-
-        public void remove() {
-            iterator.remove();
-        }
-    }
-
-
-    /**
-     * Returns all the <code>MimeHeader</code> objects whose name matches
-     * a name in the given array of names.
-     *
-     * @param names an array of <code>String</code> objects with the names
-     *         for which to search
-     * @return  an <code>Iterator</code> object over the <code>MimeHeader</code>
-     *          objects whose name matches one of the names in the given list
-     */
-    public Iterator getMatchingHeaders(String[] names) {
-        return new MatchingIterator(names, true);
-    }
-
-    /**
-     * Returns all of the <code>MimeHeader</code> objects whose name does not
-     * match a name in the given array of names.
-     *
-     * @param names an array of <code>String</code> objects with the names
-     *         for which to search
-     * @return  an <code>Iterator</code> object over the <code>MimeHeader</code>
-     *          objects whose name does not match one of the names in the given list
-     */
-    public Iterator getNonMatchingHeaders(String[] names) {
-        return new MatchingIterator(names, false);
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/Name.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-/**
- * A representation of an XML name.  This interface provides methods for
- * getting the local and namespace-qualified names and also for getting the
- * prefix associated with the namespace for the name. It is also possible
- * to get the URI of the namespace.
- * <P>
- * The following is an example of a namespace declaration in an element.
- * <PRE>
- *   &lt;wombat:GetLastTradePrice xmlns:wombat="http://www.wombat.org/trader"&gt;
- * </PRE>
- * ("xmlns" stands for "XML namespace".)
- * The following
- * shows what the methods in the <code>Name</code> interface will return.
- * <UL>
- *  <LI><code>getQualifiedName</code> will return "prefix:LocalName" =
- *      "WOMBAT:GetLastTradePrice"
- *  <LI><code>getURI</code> will return "http://www.wombat.org/trader"
- *  <LI><code>getLocalName</code> will return "GetLastTracePrice"
- *  <LI><code>getPrefix</code> will return "WOMBAT"
- * </UL>
- * <P>
- * XML namespaces are used to disambiguate SOAP identifiers from
- * application-specific identifiers.
- * <P>
- * <code>Name</code> objects are created using the method
- * <code>SOAPEnvelope.createName</code>, which has two versions.
- * One method creates <code>Name</code> objects with
- * a local name, a namespace prefix, and a namespace URI.
- *  and the second creates <code>Name</code> objects with just a local name.
- * The following line of
- * code, in which <i>se</i> is a <code>SOAPEnvelope</code> object, creates a new
- * <code>Name</code> object with all three.
- * <PRE>
- *     Name name = se.createName("GetLastTradePrice", "WOMBAT",
- *                                "http://www.wombat.org/trader");
- * </PRE>
- * The following line of code gives an example of how a <code>Name</code> object
- * can be used. The variable <i>element</i> is a <code>SOAPElement</code> object.
- * This code creates a new <code>SOAPElement</code> object with the given name and
- * adds it to <i>element</i>.
- * <PRE>
- *     element.addChildElement(name);
- * </PRE>
- * <P>
- * The <code>Name</code> interface may be deprecated in a future release of SAAJ
- * in favor of <code>javax.xml.namespace.QName<code>
- * @see SOAPEnvelope#createName(String, String, String) SOAPEnvelope.createName
- * @see SOAPFactory#createName(String, String, String) SOAPFactory.createName
- * @since 1.6
- */
-public interface Name {
-    /**
-     * Gets the local name part of the XML name that this <code>Name</code>
-     * object represents.
-     *
-     * @return a string giving the local name
-     */
-    String getLocalName();
-
-    /**
-     * Gets the namespace-qualified name of the XML name that this
-     * <code>Name</code> object represents.
-     *
-     * @return the namespace-qualified name as a string
-     */
-    String getQualifiedName();
-
-    /**
-     * Returns the prefix that was specified when this <code>Name</code> object
-     * was initialized. This prefix is associated with the namespace for the XML
-     * name that this <code>Name</code> object represents.
-     *
-     * @return the prefix as a string
-     */
-    String getPrefix();
-
-    /**
-     * Returns the URI of the namespace for the XML
-     * name that this <code>Name</code> object represents.
-     *
-     * @return the URI as a string
-     */
-    String getURI();
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/Node.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-/**
- * A representation of a node (element) in an XML document.
- * This interface extnends the standard DOM Node interface with methods for
- * getting and setting the value of a node, for
- * getting and setting the parent of a node, and for removing a node.
- *
- * @since 1.6
- */
-public interface Node extends org.w3c.dom.Node {
-    /**
-     * Returns the value of this node if this is a <code>Text</code> node or the
-     * value of the immediate child of this node otherwise.
-     * If there is an immediate child of this <code>Node</code> that it is a
-     * <code>Text</code> node then it's value will be returned. If there is
-     * more than one <code>Text</code> node then the value of the first
-     * <code>Text</code> Node will be returned.
-     * Otherwise <code>null</code> is returned.
-     *
-     * @return a <code>String</code> with the text of this node if this is a
-     *          <code>Text</code> node or the text contained by the first
-     *          immediate child of this <code>Node</code> object that is a
-     *          <code>Text</code> object if such a child exists;
-     *          <code>null</code> otherwise.
-     */
-    public String getValue();
-
-    /**
-     * If this is a Text node then this method will set its value,
-     * otherwise it sets the value of  the immediate (Text) child of this node.
-     * The value of the immediate child of this node can be set only if, there is
-     * one child node and that node is a <code>Text</code> node, or if
-     * there are no children in which case a child <code>Text</code> node will be
-     * created.
-     *
-     * @exception IllegalStateException if the node is not a <code>Text</code>
-     *              node and either has more than one child node or has a child
-     *              node that is not a <code>Text</code> node.
-     *
-     * @since 1.6, SAAJ 1.2
-     */
-    public void setValue(String value);
-
-    /**
-     * Sets the parent of this <code>Node</code> object to the given
-     * <code>SOAPElement</code> object.
-     *
-     * @param parent the <code>SOAPElement</code> object to be set as
-     *       the parent of this <code>Node</code> object
-     *
-     * @exception SOAPException if there is a problem in setting the
-     *                          parent to the given element
-     * @see #getParentElement
-     */
-    public void setParentElement(SOAPElement parent) throws SOAPException;
-
-    /**
-     * Returns the parent element of this <code>Node</code> object.
-     * This method can throw an <code>UnsupportedOperationException</code>
-     * if the tree is not kept in memory.
-     *
-     * @return the <code>SOAPElement</code> object that is the parent of
-     *         this <code>Node</code> object or <code>null</code> if this
-     *         <code>Node</code> object is root
-     *
-     * @exception UnsupportedOperationException if the whole tree is not
-     *            kept in memory
-     * @see #setParentElement
-     */
-    public SOAPElement getParentElement();
-
-    /**
-     * Removes this <code>Node</code> object from the tree.
-     */
-    public void detachNode();
-
-    /**
-     * Notifies the implementation that this <code>Node</code>
-     * object is no longer being used by the application and that the
-     * implementation is free to reuse this object for nodes that may
-     * be created later.
-     * <P>
-     * Calling the method <code>recycleNode</code> implies that the method
-     * <code>detachNode</code> has been called previously.
-     */
-    public void recycleNode();
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SAAJMetaFactory.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-/**
-* The access point for the implementation classes of the factories defined in the
-* SAAJ API. All of the <code>newInstance</code> methods defined on factories in
-* SAAJ 1.3 defer to instances of this class to do the actual object creation.
-* The implementations of <code>newInstance()</code> methods (in SOAPFactory and MessageFactory)
-* that existed in SAAJ 1.2 have been updated to also delegate to the SAAJMetaFactory when the SAAJ 1.2
-* defined lookup fails to locate the Factory implementation class name.
-*
-* <p>
-* SAAJMetaFactory is a service provider interface. There are no public methods on this
-* class.
-*
-* @author SAAJ RI Development Team
-* @since 1.6, SAAJ 1.3
-*/
-
-public abstract class SAAJMetaFactory {
-    static private final String META_FACTORY_CLASS_PROPERTY =
-        "javax.xml.soap.MetaFactory";
-    static final String DEFAULT_META_FACTORY_CLASS =
-        "com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl";
-
-    /**
-     * Creates a new instance of a concrete <code>SAAJMetaFactory</code> object.
-     * The SAAJMetaFactory is an SPI, it pulls the creation of the other factories together into a
-     * single place. Changing out the SAAJMetaFactory has the effect of changing out the entire SAAJ
-     * implementation. Service providers provide the name of their <code>SAAJMetaFactory</code>
-     * implementation.
-     *
-     * This method uses the following ordered lookup procedure to determine the SAAJMetaFactory implementation class to load:
-     * <UL>
-     *  <LI> Use the javax.xml.soap.MetaFactory system property.
-     *  <LI> Use the properties file "lib/jaxm.properties" in the JRE directory. This configuration file is in standard
-     * java.util.Properties format and contains the fully qualified name of the implementation class with the key being the
-     * system property defined above.
-     *  <LI> Use the Services API (as detailed in the JAR specification), if available, to determine the classname. The Services API
-     * will look for a classname in the file META-INF/services/javax.xml.soap.MetaFactory in jars available to the runtime.
-     *  <LI> Default to com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl.
-     * </UL>
-     *
-     * @return a concrete <code>SAAJMetaFactory</code> object
-     * @exception SOAPException if there is an error in creating the <code>SAAJMetaFactory</code>
-     */
-    static SAAJMetaFactory getInstance() throws SOAPException {
-            try {
-                SAAJMetaFactory instance =
-                    (SAAJMetaFactory) FactoryFinder.find(
-                        META_FACTORY_CLASS_PROPERTY,
-                        DEFAULT_META_FACTORY_CLASS);
-                return instance;
-            } catch (Exception e) {
-                throw new SOAPException(
-                    "Unable to create SAAJ meta-factory" + e.getMessage());
-            }
-    }
-
-    protected SAAJMetaFactory() { }
-
-     /**
-      * Creates a <code>MessageFactory</code> object for
-      * the given <code>String</code> protocol.
-      *
-      * @param protocol a <code>String</code> indicating the protocol
-      * @exception SOAPException if there is an error in creating the
-      *            MessageFactory
-      * @see SOAPConstants#SOAP_1_1_PROTOCOL
-      * @see SOAPConstants#SOAP_1_2_PROTOCOL
-      * @see SOAPConstants#DYNAMIC_SOAP_PROTOCOL
-      */
-    protected abstract MessageFactory newMessageFactory(String protocol)
-        throws SOAPException;
-
-     /**
-      * Creates a <code>SOAPFactory</code> object for
-      * the given <code>String</code> protocol.
-      *
-      * @param protocol a <code>String</code> indicating the protocol
-      * @exception SOAPException if there is an error in creating the
-      *            SOAPFactory
-      * @see SOAPConstants#SOAP_1_1_PROTOCOL
-      * @see SOAPConstants#SOAP_1_2_PROTOCOL
-      * @see SOAPConstants#DYNAMIC_SOAP_PROTOCOL
-      */
-    protected abstract SOAPFactory newSOAPFactory(String protocol)
-        throws SOAPException;
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SAAJResult.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-import javax.xml.transform.dom.DOMResult;
-
-/**
- * Acts as a holder for the results of a JAXP transformation or a JAXB
- * marshalling, in the form of a SAAJ tree. These results should be accessed
- * by using the {@link #getResult()} method. The {@link DOMResult#getNode()}
- * method should be avoided in almost all cases.
- *
- * @author XWS-Security Development Team
- *
- * @since 1.6, SAAJ 1.3
- */
-public class SAAJResult extends DOMResult {
-
-    /**
-     * Creates a <code>SAAJResult</code> that will present results in the form
-     * of a SAAJ tree that supports the default (SOAP 1.1) protocol.
-     * <p>
-     * This kind of <code>SAAJResult</code> is meant for use in situations where the
-     * results will be used as a parameter to a method that takes a parameter
-     * whose type, such as <code>SOAPElement</code>, is drawn from the SAAJ
-     * API. When used in a transformation, the results are populated into the
-     * <code>SOAPPart</code> of a <code>SOAPMessage</code> that is created internally.
-     * The <code>SOAPPart</code> returned by {@link DOMResult#getNode()}
-     * is not guaranteed to be well-formed.
-     *
-     * @throws SOAPException if there is a problem creating a <code>SOAPMessage</code>
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public SAAJResult() throws SOAPException {
-        this(MessageFactory.newInstance().createMessage());
-    }
-
-    /**
-     * Creates a <code>SAAJResult</code> that will present results in the form
-     * of a SAAJ tree that supports the specified protocol. The
-     * <code>DYNAMIC_SOAP_PROTOCOL</code> is ambiguous in this context and will
-     * cause this constructor to throw an <code>UnsupportedOperationException</code>.
-     * <p>
-     * This kind of <code>SAAJResult</code> is meant for use in situations where the
-     * results will be used as a parameter to a method that takes a parameter
-     * whose type, such as <code>SOAPElement</code>, is drawn from the SAAJ
-     * API. When used in a transformation the results are populated into the
-     * <code>SOAPPart</code> of a <code>SOAPMessage</code> that is created
-     * internally. The <code>SOAPPart</code> returned by {@link DOMResult#getNode()}
-     * is not guaranteed to be well-formed.
-     *
-     * @param protocol - the name of the SOAP protocol that the resulting SAAJ
-     *                      tree should support
-     *
-     * @throws SOAPException if a <code>SOAPMessage</code> supporting the
-     *             specified protocol cannot be created
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public SAAJResult(String protocol) throws SOAPException {
-        this(MessageFactory.newInstance(protocol).createMessage());
-    }
-
-    /**
-     * Creates a <code>SAAJResult</code> that will write the results into the
-     * <code>SOAPPart</code> of the supplied <code>SOAPMessage</code>.
-     * In the normal case these results will be written using DOM APIs and,
-     * as a result, the finished <code>SOAPPart</code> will not be guaranteed
-     * to be well-formed unless the data used to create it is also well formed.
-     * When used in a transformation the validity of the <code>SOAPMessage</code>
-     * after the transformation can be guaranteed only by means outside SAAJ
-     * specification.
-     *
-     * @param message - the message whose <code>SOAPPart</code> will be
-     *                  populated as a result of some transformation or
-     *                  marshalling operation
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public SAAJResult(SOAPMessage message) {
-        super(message.getSOAPPart());
-    }
-
-    /**
-     * Creates a <code>SAAJResult</code> that will write the results as a
-     * child node of the <code>SOAPElement</code> specified. In the normal
-     * case these results will be written using DOM APIs and as a result may
-     * invalidate the structure of the SAAJ tree. This kind of
-     * <code>SAAJResult</code> should only be used when the validity of the
-     * incoming data can be guaranteed by means outside of the SAAJ
-     * specification.
-     *
-     * @param rootNode - the root to which the results will be appended
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public SAAJResult(SOAPElement rootNode) {
-        super(rootNode);
-    }
-
-
-    /**
-     * @return the resulting Tree that was created under the specified root Node.
-     * @since 1.6, SAAJ 1.3
-     */
-    public javax.xml.soap.Node getResult() {
-        return (javax.xml.soap.Node)super.getNode().getFirstChild();
-     }
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPBody.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,298 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-import java.util.Locale;
-
-import org.w3c.dom.Document;
-
-import javax.xml.namespace.QName;
-
-/**
- * An object that represents the contents of the SOAP body
- * element in a SOAP message. A SOAP body element consists of XML data
- * that affects the way the application-specific content is processed.
- * <P>
- * A <code>SOAPBody</code> object contains <code>SOAPBodyElement</code>
- * objects, which have the content for the SOAP body.
- * A <code>SOAPFault</code> object, which carries status and/or
- * error information, is an example of a <code>SOAPBodyElement</code> object.
- *
- * @see SOAPFault
- * @since 1.6
- */
-public interface SOAPBody extends SOAPElement {
-
-    /**
-     * Creates a new <code>SOAPFault</code> object and adds it to
-     * this <code>SOAPBody</code> object. The new <code>SOAPFault</code> will
-     * have default values set for the mandatory child elements. The type of
-     * the <code>SOAPFault</code> will be a SOAP 1.1 or a SOAP 1.2 <code>SOAPFault</code>
-     * depending on the <code>protocol</code> specified while creating the
-     * <code>MessageFactory</code> instance.
-     * <p>
-     * A <code>SOAPBody</code> may contain at most one <code>SOAPFault</code>
-     * child element.
-     *
-     * @return the new <code>SOAPFault</code> object
-     * @exception SOAPException if there is a SOAP error
-     */
-    public SOAPFault addFault() throws SOAPException;
-
-
-    /**
-     * Creates a new <code>SOAPFault</code> object and adds it to
-     * this <code>SOAPBody</code> object. The type of the
-     * <code>SOAPFault</code> will be a SOAP 1.1  or a SOAP 1.2
-     * <code>SOAPFault</code> depending on the <code>protocol</code>
-     * specified while creating the <code>MessageFactory</code> instance.
-     * <p>
-     * For SOAP 1.2 the <code>faultCode</code> parameter is the value of the
-     * <i>Fault/Code/Value</i> element  and the <code>faultString</code> parameter
-     * is the value of the <i>Fault/Reason/Text</i> element. For SOAP 1.1
-     * the <code>faultCode</code> parameter is the value of the <code>faultcode</code>
-     * element and the <code>faultString</code> parameter is the value of the <code>faultstring</code>
-     * element.
-     * <p>
-     * A <code>SOAPBody</code> may contain at most one <code>SOAPFault</code>
-     * child element.
-     *
-     * @param faultCode a <code>Name</code> object giving the fault
-     *         code to be set; must be one of the fault codes defined in the Version
-     *         of SOAP specification in use
-     * @param faultString a <code>String</code> giving an explanation of
-     *         the fault
-     * @param locale a {@link java.util.Locale} object indicating
-     *         the native language of the <code>faultString</code>
-     * @return the new <code>SOAPFault</code> object
-     * @exception SOAPException if there is a SOAP error
-     * @see SOAPFault#setFaultCode
-     * @see SOAPFault#setFaultString
-     * @since 1.6, SAAJ 1.2
-     */
-    public SOAPFault addFault(Name faultCode, String faultString, Locale locale) throws SOAPException;
-
-    /**
-     * Creates a new <code>SOAPFault</code> object and adds it to this
-     * <code>SOAPBody</code> object. The type of the <code>SOAPFault</code>
-     * will be a SOAP 1.1 or a SOAP 1.2 <code>SOAPFault</code> depending on
-     * the <code>protocol</code> specified while creating the <code>MessageFactory</code>
-     * instance.
-     * <p>
-     * For SOAP 1.2 the <code>faultCode</code> parameter is the value of the
-     * <i>Fault/Code/Value</i> element  and the <code>faultString</code> parameter
-     * is the value of the <i>Fault/Reason/Text</i> element. For SOAP 1.1
-     * the <code>faultCode</code> parameter is the value of the <code>faultcode</code>
-     * element and the <code>faultString</code> parameter is the value of the <code>faultstring</code>
-     * element.
-     * <p>
-     * A <code>SOAPBody</code> may contain at most one <code>SOAPFault</code>
-     * child element.
-     *
-     * @param faultCode
-     *            a <code>QName</code> object giving the fault code to be
-     *            set; must be one of the fault codes defined in the version
-     *            of SOAP specification in use.
-     * @param faultString
-     *            a <code>String</code> giving an explanation of the fault
-     * @param locale
-     *            a {@link java.util.Locale Locale} object indicating the
-     *            native language of the <code>faultString</code>
-     * @return the new <code>SOAPFault</code> object
-     * @exception SOAPException
-     *                if there is a SOAP error
-     * @see SOAPFault#setFaultCode
-     * @see SOAPFault#setFaultString
-     * @see SOAPBody#addFault(Name faultCode, String faultString, Locale locale)
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public SOAPFault addFault(QName faultCode, String faultString, Locale locale)
-        throws SOAPException;
-
-    /**
-     * Creates a new  <code>SOAPFault</code> object and adds it to this
-     * <code>SOAPBody</code> object. The type of the <code>SOAPFault</code>
-     * will be a SOAP 1.1 or a SOAP 1.2 <code>SOAPFault</code> depending on
-     * the <code>protocol</code> specified while creating the <code>MessageFactory</code>
-     * instance.
-     * <p>
-     * For SOAP 1.2 the <code>faultCode</code> parameter is the value of the
-     * <i>Fault/Code/Value</i> element  and the <code>faultString</code> parameter
-     * is the value of the <i>Fault/Reason/Text</i> element. For SOAP 1.1
-     * the <code>faultCode</code> parameter is the value of the <i>faultcode</i>
-     * element and the <code>faultString</code> parameter is the value of the <i>faultstring</i>
-     * element.
-     * <p>
-     * In case of a SOAP 1.2 fault, the default value for the mandatory <code>xml:lang</code>
-     * attribute on the <i>Fault/Reason/Text</i> element will be set to
-     * <code>java.util.Locale.getDefault()</code>
-     * <p>
-     * A <code>SOAPBody</code> may contain at most one <code>SOAPFault</code>
-     * child element.
-     *
-     * @param faultCode
-     *            a <code>Name</code> object giving the fault code to be set;
-     *            must be one of the fault codes defined in the version of SOAP
-     *            specification in use
-     * @param faultString
-     *            a <code>String</code> giving an explanation of the fault
-     * @return the new <code>SOAPFault</code> object
-     * @exception SOAPException
-     *                if there is a SOAP error
-     * @see SOAPFault#setFaultCode
-     * @see SOAPFault#setFaultString
-     * @since 1.6, SAAJ 1.2
-     */
-    public SOAPFault addFault(Name faultCode, String faultString)
-        throws SOAPException;
-
-    /**
-     * Creates a new <code>SOAPFault</code> object and adds it to this <code>SOAPBody</code>
-     * object. The type of the <code>SOAPFault</code>
-     * will be a SOAP 1.1 or a SOAP 1.2 <code>SOAPFault</code> depending on
-     * the <code>protocol</code> specified while creating the <code>MessageFactory</code>
-     * instance.
-     * <p>
-     * For SOAP 1.2 the <code>faultCode</code> parameter is the value of the
-     * <i>Fault/Code/Value</i> element  and the <code>faultString</code> parameter
-     * is the value of the <i>Fault/Reason/Text</i> element. For SOAP 1.1
-     * the <code>faultCode</code> parameter is the value of the <i>faultcode</i>
-     * element and the <code>faultString</code> parameter is the value of the <i>faultstring</i>
-     * element.
-     * <p>
-     * In case of a SOAP 1.2 fault, the default value for the mandatory <code>xml:lang</code>
-     * attribute on the <i>Fault/Reason/Text</i> element will be set to
-     * <code>java.util.Locale.getDefault()</code>
-     * <p>
-     * A <code>SOAPBody</code> may contain at most one <code>SOAPFault</code>
-     * child element
-     *
-     * @param faultCode
-     *            a <code>QName</code> object giving the fault code to be
-     *            set; must be one of the fault codes defined in the version
-     *            of  SOAP specification in use
-     * @param faultString
-     *            a <code>String</code> giving an explanation of the fault
-     * @return the new <code>SOAPFault</code> object
-     * @exception SOAPException
-     *                if there is a SOAP error
-     * @see SOAPFault#setFaultCode
-     * @see SOAPFault#setFaultString
-     * @see SOAPBody#addFault(Name faultCode, String faultString)
-     * @since 1.6, SAAJ 1.3
-     */
-    public SOAPFault addFault(QName faultCode, String faultString)
-        throws SOAPException;
-
-    /**
-     * Indicates whether a <code>SOAPFault</code> object exists in this
-     * <code>SOAPBody</code> object.
-     *
-     * @return <code>true</code> if a <code>SOAPFault</code> object exists
-     *         in this <code>SOAPBody</code> object; <code>false</code>
-     *         otherwise
-     */
-    public boolean hasFault();
-
-    /**
-     * Returns the <code>SOAPFault</code> object in this <code>SOAPBody</code>
-     * object.
-     *
-     * @return the <code>SOAPFault</code> object in this <code>SOAPBody</code>
-     *         object if present, null otherwise.
-     */
-    public SOAPFault getFault();
-
-    /**
-     * Creates a new <code>SOAPBodyElement</code> object with the specified
-     * name and adds it to this <code>SOAPBody</code> object.
-     *
-     * @param name
-     *            a <code>Name</code> object with the name for the new <code>SOAPBodyElement</code>
-     *            object
-     * @return the new <code>SOAPBodyElement</code> object
-     * @exception SOAPException
-     *                if a SOAP error occurs
-     * @see SOAPBody#addBodyElement(javax.xml.namespace.QName)
-     */
-    public SOAPBodyElement addBodyElement(Name name) throws SOAPException;
-
-
-    /**
-     * Creates a new <code>SOAPBodyElement</code> object with the specified
-     * QName and adds it to this <code>SOAPBody</code> object.
-     *
-     * @param qname
-     *            a <code>QName</code> object with the qname for the new
-     *            <code>SOAPBodyElement</code> object
-     * @return the new <code>SOAPBodyElement</code> object
-     * @exception SOAPException
-     *                if a SOAP error occurs
-     * @see SOAPBody#addBodyElement(Name)
-     * @since 1.6, SAAJ 1.3
-     */
-    public SOAPBodyElement addBodyElement(QName qname) throws SOAPException;
-
-    /**
-     * Adds the root node of the DOM <code>{@link org.w3c.dom.Document}</code>
-     * to this <code>SOAPBody</code> object.
-     * <p>
-     * Calling this method invalidates the <code>document</code> parameter.
-     * The client application should discard all references to this <code>Document</code>
-     * and its contents upon calling <code>addDocument</code>. The behavior
-     * of an application that continues to use such references is undefined.
-     *
-     * @param document
-     *            the <code>Document</code> object whose root node will be
-     *            added to this <code>SOAPBody</code>.
-     * @return the <code>SOAPBodyElement</code> that represents the root node
-     *         that was added.
-     * @exception SOAPException
-     *                if the <code>Document</code> cannot be added
-     * @since 1.6, SAAJ 1.2
-     */
-    public SOAPBodyElement addDocument(org.w3c.dom.Document document)
-        throws SOAPException;
-
-    /**
-     * Creates a new DOM <code>{@link org.w3c.dom.Document}</code> and sets
-     * the first child of this <code>SOAPBody</code> as it's document
-     * element. The child <code>SOAPElement</code> is removed as part of the
-     * process.
-     *
-     * @return the <code>{@link org.w3c.dom.Document}</code> representation
-     *         of the <code>SOAPBody</code> content.
-     *
-     * @exception SOAPException
-     *                if there is not exactly one child <code>SOAPElement</code> of the <code>
-     *              <code>SOAPBody</code>.
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public org.w3c.dom.Document extractContentAsDocument()
-        throws SOAPException;
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPBodyElement.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-/**
- * A <code>SOAPBodyElement</code> object represents the contents in
- * a <code>SOAPBody</code> object.  The <code>SOAPFault</code> interface
- * is a <code>SOAPBodyElement</code> object that has been defined.
- * <P>
- * A new <code>SOAPBodyElement</code> object can be created and added
- * to a <code>SOAPBody</code> object with the <code>SOAPBody</code>
- * method <code>addBodyElement</code>. In the following line of code,
- * <code>sb</code> is a <code>SOAPBody</code> object, and
- * <code>myName</code> is a <code>Name</code> object.
- * <PRE>
- *    SOAPBodyElement sbe = sb.addBodyElement(myName);
- * </PRE>
- *
- * @since 1.6
- */
-public interface SOAPBodyElement extends SOAPElement {
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPConnection.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-
-/**
- * A point-to-point connection that a client can use for sending messages
- * directly to a remote party (represented by a URL, for instance).
- * <p>
- * The SOAPConnection class is optional. Some implementations may
- * not implement this interface in which case the call to
- * <code>SOAPConnectionFactory.newInstance()</code> (see below) will
- * throw an <code>UnsupportedOperationException</code>.
- * <p>
- * A client can obtain a <code>SOAPConnection</code> object using a
- * {@link SOAPConnectionFactory} object as in the following example:
- * <PRE>
- *      SOAPConnectionFactory factory = SOAPConnectionFactory.newInstance();
- *      SOAPConnection con = factory.createConnection();
- * </PRE>
- * A <code>SOAPConnection</code> object can be used to send messages
- * directly to a URL following the request/response paradigm.  That is,
- * messages are sent using the method <code>call</code>, which sends the
- * message and then waits until it gets a reply.
- *
- * @since 1.6
- */
-public abstract class SOAPConnection {
-
-    /**
-     * Sends the given message to the specified endpoint and blocks until
-     * it has returned the response.
-     *
-     * @param request the <code>SOAPMessage</code> object to be sent
-     * @param to an <code>Object</code> that identifies
-     *         where the message should be sent. It is required to
-     *         support Objects of type
-     *         <code>java.lang.String</code>,
-     *         <code>java.net.URL</code>, and when JAXM is present
-     *         <code>javax.xml.messaging.URLEndpoint</code>
-     *
-     * @return the <code>SOAPMessage</code> object that is the response to the
-     *         message that was sent
-     * @throws SOAPException if there is a SOAP error
-     */
-    public abstract SOAPMessage call(SOAPMessage request,
-                                     Object to) throws SOAPException;
-
-    /**
-     * Gets a message from a specific endpoint and blocks until it receives,
-     *
-     * @param to an <code>Object</code> that identifies where
-     *                  the request should be sent. Objects of type
-     *                 <code>java.lang.String</code> and
-     *                 <code>java.net.URL</code> must be supported.
-     *
-     * @return the <code>SOAPMessage</code> object that is the response to the
-     *                  get message request
-     * @throws SOAPException if there is a SOAP error
-     * @since 1.6, SAAJ 1.3
-     */
-    public SOAPMessage get(Object to)
-                                throws SOAPException {
-        throw new UnsupportedOperationException("All subclasses of SOAPConnection must override get()");
-    }
-
-    /**
-     * Closes this <code>SOAPConnection</code> object.
-     *
-     * @throws SOAPException if there is a SOAP error
-     */
-    public abstract void close()
-        throws SOAPException;
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPConnectionFactory.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-/**
- * A factory for creating <code>SOAPConnection</code> objects. Implementation of this class
- * is optional. If <code>SOAPConnectionFactory.newInstance()</code> throws an
- * UnsupportedOperationException then the implementation does not support the
- * SAAJ communication infrastructure. Otherwise {@link SOAPConnection} objects
- * can be created by calling <code>createConnection()</code> on the newly
- * created <code>SOAPConnectionFactory</code> object.
- *
- * @since 1.6
- */
-public abstract class SOAPConnectionFactory {
-    /**
-     * A constant representing the default value for a <code>SOAPConnection</code>
-     * object. The default is the point-to-point SOAP connection.
-     */
-    static final String DEFAULT_SOAP_CONNECTION_FACTORY
-        = "com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnectionFactory";
-
-    /**
-     * A constant representing the <code>SOAPConnection</code> class.
-     */
-    static private final String SF_PROPERTY
-        = "javax.xml.soap.SOAPConnectionFactory";
-
-    /**
-     * Creates an instance of the default
-     * <code>SOAPConnectionFactory</code> object.
-     *
-     * @return a new instance of a default
-     *         <code>SOAPConnectionFactory</code> object
-     *
-     * @exception SOAPException if there was an error creating the
-     *            <code>SOAPConnectionFactory</code>
-     *
-     * @exception UnsupportedOperationException if newInstance is not
-     * supported.
-     */
-    public static SOAPConnectionFactory newInstance()
-        throws SOAPException, UnsupportedOperationException
-    {
-        try {
-        return (SOAPConnectionFactory)
-                FactoryFinder.find(SF_PROPERTY,
-                                   DEFAULT_SOAP_CONNECTION_FACTORY);
-        } catch (Exception ex) {
-            throw new SOAPException("Unable to create SOAP connection factory: "
-                                    +ex.getMessage());
-        }
-    }
-
-    /**
-     * Create a new <code>SOAPConnection</code>.
-     *
-     * @return the new <code>SOAPConnection</code> object.
-     *
-     * @exception SOAPException if there was an exception creating the
-     * <code>SOAPConnection</code> object.
-     */
-    public abstract SOAPConnection createConnection()
-        throws SOAPException;
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPConstants.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,203 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-import javax.xml.namespace.QName;
-
-/**
- * The definition of constants pertaining to the SOAP protocol.
- *
- * @since 1.6
- */
-public interface SOAPConstants {
-    /**
-     * Used to create <code>MessageFactory</code> instances that create
-     * <code>SOAPMessages</code> whose concrete type is based on the
-     * <code>Content-Type</code> MIME header passed to the
-     * <code>createMessage</code> method. If no <code>Content-Type</code>
-     * header is passed then the <code>createMessage</code> may throw an
-     * <code>IllegalArgumentException</code> or, in the case of the no
-     * argument version of <code>createMessage</code>, an
-     * <code>UnsupportedOperationException</code>.
-     *
-     * @since  1.6, SAAJ 1.3
-     */
-    public static final String DYNAMIC_SOAP_PROTOCOL = "Dynamic Protocol";
-
-    /**
-     * Used to create <code>MessageFactory</code> instances that create
-     * <code>SOAPMessages</code> whose behavior supports the SOAP 1.1  specification.
-     *
-     * @since  1.6, SAAJ 1.3
-     */
-    public static final String SOAP_1_1_PROTOCOL = "SOAP 1.1 Protocol";
-
-    /**
-     * Used to create <code>MessageFactory</code> instances that create
-     * <code>SOAPMessages</code> whose behavior supports the SOAP 1.2
-     * specification
-     *
-     * @since  1.6, SAAJ 1.3
-     */
-    public static final String SOAP_1_2_PROTOCOL = "SOAP 1.2 Protocol";
-
-    /**
-     * The default protocol: SOAP 1.1 for backwards compatibility.
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public static final String DEFAULT_SOAP_PROTOCOL = SOAP_1_1_PROTOCOL;
-
-    /**
-     * The namespace identifier for the SOAP 1.1 envelope.
-     * @since 1.6, SAAJ 1.3
-     */
-    public static final String
-                URI_NS_SOAP_1_1_ENVELOPE = "http://schemas.xmlsoap.org/soap/envelope/";
-    /**
-     * The namespace identifier for the SOAP 1.2 envelope.
-     * @since 1.6, SAAJ 1.3
-     */
-    public static final String
-                URI_NS_SOAP_1_2_ENVELOPE = "http://www.w3.org/2003/05/soap-envelope";
-
-    /**
-     * The namespace identifier for the SOAP 1.1 envelope, All SOAPElements in this
-     * namespace are defined by the SOAP 1.1 specification.
-     */
-    public static final String
-        URI_NS_SOAP_ENVELOPE = URI_NS_SOAP_1_1_ENVELOPE;
-
-    /**
-     * The namespace identifier for the SOAP 1.1 encoding.
-     * An attribute named <code>encodingStyle</code> in the
-     * <code>URI_NS_SOAP_ENVELOPE</code> namespace and set to the value
-     * <code>URI_NS_SOAP_ENCODING</code> can be added to an element to indicate
-     * that it is encoded using the rules in section 5 of the SOAP 1.1
-     * specification.
-     */
-    public static final String
-        URI_NS_SOAP_ENCODING = "http://schemas.xmlsoap.org/soap/encoding/";
-
-    /**
-     * The namespace identifier for the SOAP 1.2 encoding.
-     * @since 1.6, SAAJ 1.3
-     */
-    public static final String
-        URI_NS_SOAP_1_2_ENCODING = "http://www.w3.org/2003/05/soap-encoding";
-
-    /**
-     * The media type  of the <code>Content-Type</code> MIME header in SOAP 1.1.
-     * @since 1.6, SAAJ 1.3
-     */
-    public static final String
-        SOAP_1_1_CONTENT_TYPE = "text/xml";
-
-    /**
-     * The media type  of the <code>Content-Type</code> MIME header in SOAP 1.2.
-     * @since 1.6, SAAJ 1.3
-     */
-    public static final String
-        SOAP_1_2_CONTENT_TYPE = "application/soap+xml";
-
-    /**
-     * The URI identifying the next application processing a SOAP request as the intended
-     * actor for a SOAP 1.1 header entry (see section 4.2.2 of the SOAP 1.1 specification).
-     * <p>
-     * This value can be passed to
-     * {@link SOAPHeader#examineMustUnderstandHeaderElements(String)},
-     * {@link SOAPHeader#examineHeaderElements(String)} and
-     * {@link SOAPHeader#extractHeaderElements(String)}
-     */
-    public static final String
-        URI_SOAP_ACTOR_NEXT = "http://schemas.xmlsoap.org/soap/actor/next";
-
-    /**
-     * The URI identifying the next application processing a SOAP request as the intended
-     * role for a SOAP 1.2 header entry (see section 2.2 of part 1 of the SOAP 1.2
-     * specification).
-     * @since 1.6, SAAJ 1.3
-     */
-    public static final String
-        URI_SOAP_1_2_ROLE_NEXT = URI_NS_SOAP_1_2_ENVELOPE + "/role/next";
-
-    /**
-     * The URI specifying the role None in SOAP 1.2.
-     * @since 1.6, SAAJ 1.3
-     */
-    public static final String
-        URI_SOAP_1_2_ROLE_NONE = URI_NS_SOAP_1_2_ENVELOPE + "/role/none";
-
-    /**
-     * The URI identifying the ultimate receiver of the SOAP 1.2 message.
-     * @since 1.6, SAAJ 1.3
-     */
-    public static final String
-        URI_SOAP_1_2_ROLE_ULTIMATE_RECEIVER =
-            URI_NS_SOAP_1_2_ENVELOPE + "/role/ultimateReceiver";
-
-    /**
-     * The default namespace prefix for http://www.w3.org/2003/05/soap-envelope
-     * @since 1.6, SAAJ 1.3
-     */
-    public static final String SOAP_ENV_PREFIX = "env";
-
-    /**
-     * SOAP 1.2 VersionMismatch Fault
-     * @since 1.6, SAAJ 1.3
-     */
-    public static final QName SOAP_VERSIONMISMATCH_FAULT =
-         new QName(URI_NS_SOAP_1_2_ENVELOPE, "VersionMismatch", SOAP_ENV_PREFIX);
-
-    /**
-     * SOAP 1.2 MustUnderstand Fault
-     * @since 1.6, SAAJ 1.3
-     */
-    public static final QName SOAP_MUSTUNDERSTAND_FAULT =
-         new QName(URI_NS_SOAP_1_2_ENVELOPE, "MustUnderstand", SOAP_ENV_PREFIX);
-
-    /**
-     * SOAP 1.2 DataEncodingUnknown Fault
-     * @since 1.6, SAAJ 1.3
-     */
-    public static final QName SOAP_DATAENCODINGUNKNOWN_FAULT =
-         new QName(URI_NS_SOAP_1_2_ENVELOPE, "DataEncodingUnknown", SOAP_ENV_PREFIX);
-
-    /**
-     * SOAP 1.2 Sender Fault
-     * @since 1.6, SAAJ 1.3
-     */
-    public static final QName SOAP_SENDER_FAULT =
-         new QName(URI_NS_SOAP_1_2_ENVELOPE, "Sender", SOAP_ENV_PREFIX);
-
-    /**
-     * SOAP 1.2 Receiver Fault
-     * @since 1.6, SAAJ 1.3
-     */
-    public static final QName SOAP_RECEIVER_FAULT =
-         new QName(URI_NS_SOAP_1_2_ENVELOPE, "Receiver", SOAP_ENV_PREFIX);
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPElement.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,526 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-import java.util.Iterator;
-
-import javax.xml.namespace.QName;
-
-/**
- * An object representing an element of a SOAP message that is allowed but not
- * specifically prescribed by a SOAP specification. This interface serves as the
- * base interface for those objects that are specifically prescribed by a SOAP
- * specification.
- * <p>
- * Methods in this interface that are required to return SAAJ specific objects
- * may "silently" replace nodes in the tree as required to successfully return
- * objects of the correct type. See {@link #getChildElements()} and
- * {@link <a HREF="package-summary.html#package_description">javax.xml.soap<a>}
- * for details.
- *
- * @since 1.6
- */
-public interface SOAPElement extends Node, org.w3c.dom.Element {
-
-    /**
-     * Creates a new <code>SOAPElement</code> object initialized with the
-     * given <code>Name</code> object and adds the new element to this
-     * <code>SOAPElement</code> object.
-     * <P>
-     * This method may be deprecated in a future release of SAAJ in favor of
-     * addChildElement(javax.xml.namespace.QName)
-     *
-     * @param name a <code>Name</code> object with the XML name for the
-     *        new element
-     *
-     * @return the new <code>SOAPElement</code> object that was created
-     * @exception SOAPException if there is an error in creating the
-     *                          <code>SOAPElement</code> object
-     * @see SOAPElement#addChildElement(javax.xml.namespace.QName)
-     */
-    public SOAPElement addChildElement(Name name) throws SOAPException;
-
-    /**
-     * Creates a new <code>SOAPElement</code> object initialized with the given
-     * <code>QName</code> object and adds the new element to this <code>SOAPElement</code>
-     *  object. The  <i>namespace</i>, <i>localname</i> and <i>prefix</i> of the new
-     * <code>SOAPElement</code> are all taken  from the <code>qname</code> argument.
-     *
-     * @param qname a <code>QName</code> object with the XML name for the
-     *        new element
-     *
-     * @return the new <code>SOAPElement</code> object that was created
-     * @exception SOAPException if there is an error in creating the
-     *                          <code>SOAPElement</code> object
-     * @see SOAPElement#addChildElement(Name)
-     * @since 1.6, SAAJ 1.3
-     */
-    public SOAPElement addChildElement(QName qname) throws SOAPException;
-
-    /**
-     * Creates a new <code>SOAPElement</code> object initialized with the
-     * specified local name and adds the new element to this
-     * <code>SOAPElement</code> object.
-     * The new  <code>SOAPElement</code> inherits any in-scope default namespace.
-     *
-     * @param localName a <code>String</code> giving the local name for
-     *          the element
-     * @return the new <code>SOAPElement</code> object that was created
-     * @exception SOAPException if there is an error in creating the
-     *                          <code>SOAPElement</code> object
-     */
-    public SOAPElement addChildElement(String localName) throws SOAPException;
-
-    /**
-     * Creates a new <code>SOAPElement</code> object initialized with the
-     * specified local name and prefix and adds the new element to this
-     * <code>SOAPElement</code> object.
-     *
-     * @param localName a <code>String</code> giving the local name for
-     *        the new element
-     * @param prefix a <code>String</code> giving the namespace prefix for
-     *        the new element
-     *
-     * @return the new <code>SOAPElement</code> object that was created
-     * @exception SOAPException if the <code>prefix</code> is not valid in the
-     *         context of this <code>SOAPElement</code> or  if there is an error in creating the
-     *                          <code>SOAPElement</code> object
-     */
-    public SOAPElement addChildElement(String localName, String prefix)
-        throws SOAPException;
-
-    /**
-     * Creates a new <code>SOAPElement</code> object initialized with the
-     * specified local name, prefix, and URI and adds the new element to this
-     * <code>SOAPElement</code> object.
-     *
-     * @param localName a <code>String</code> giving the local name for
-     *        the new element
-     * @param prefix a <code>String</code> giving the namespace prefix for
-     *        the new element
-     * @param uri a <code>String</code> giving the URI of the namespace
-     *        to which the new element belongs
-     *
-     * @return the new <code>SOAPElement</code> object that was created
-     * @exception SOAPException if there is an error in creating the
-     *                          <code>SOAPElement</code> object
-     */
-    public SOAPElement addChildElement(String localName, String prefix,
-                                       String uri)
-        throws SOAPException;
-
-    /**
-     * Add a <code>SOAPElement</code> as a child of this
-     * <code>SOAPElement</code> instance. The <code>SOAPElement</code>
-     * is expected to be created by a
-     * <code>SOAPFactory</code>. Callers should not rely on the
-     * element instance being added as is into the XML
-     * tree. Implementations could end up copying the content
-     * of the <code>SOAPElement</code> passed into an instance of
-     * a different <code>SOAPElement</code> implementation. For
-     * instance if <code>addChildElement()</code> is called on a
-     * <code>SOAPHeader</code>, <code>element</code> will be copied
-     * into an instance of a <code>SOAPHeaderElement</code>.
-     *
-     * <P>The fragment rooted in <code>element</code> is either added
-     * as a whole or not at all, if there was an error.
-     *
-     * <P>The fragment rooted in <code>element</code> cannot contain
-     * elements named "Envelope", "Header" or "Body" and in the SOAP
-     * namespace. Any namespace prefixes present in the fragment
-     * should be fully resolved using appropriate namespace
-     * declarations within the fragment itself.
-     *
-     * @param element the <code>SOAPElement</code> to be added as a
-     *                new child
-     *
-     * @exception SOAPException if there was an error in adding this
-     *                          element as a child
-     *
-     * @return an instance representing the new SOAP element that was
-     *         actually added to the tree.
-     */
-    public SOAPElement addChildElement(SOAPElement element)
-        throws SOAPException;
-
-    /**
-     * Detaches all children of this <code>SOAPElement</code>.
-     * <p>
-     * This method is useful for rolling back the construction of partially
-     * completed <code>SOAPHeaders</code> and <code>SOAPBodys</code> in
-     * preparation for sending a fault when an error condition is detected. It
-     * is also useful for recycling portions of a document within a SOAP
-     * message.
-     *
-     * @since 1.6, SAAJ 1.2
-     */
-    public abstract void removeContents();
-
-    /**
-     * Creates a new <code>Text</code> object initialized with the given
-     * <code>String</code> and adds it to this <code>SOAPElement</code> object.
-     *
-     * @param text a <code>String</code> object with the textual content to be added
-     *
-     * @return the <code>SOAPElement</code> object into which
-     *         the new <code>Text</code> object was inserted
-     * @exception SOAPException if there is an error in creating the
-     *                    new <code>Text</code> object or if it is not legal to
-     *                      attach it as a child to this
-     *                      <code>SOAPElement</code>
-     */
-    public SOAPElement addTextNode(String text) throws SOAPException;
-
-    /**
-     * Adds an attribute with the specified name and value to this
-     * <code>SOAPElement</code> object.
-     *
-     * @param name a <code>Name</code> object with the name of the attribute
-     * @param value a <code>String</code> giving the value of the attribute
-     * @return the <code>SOAPElement</code> object into which the attribute was
-     *         inserted
-     *
-     * @exception SOAPException if there is an error in creating the
-     *                          Attribute, or it is invalid to set
-                                an attribute with <code>Name</code>
-                                 <code>name</code> on this SOAPElement.
-     * @see SOAPElement#addAttribute(javax.xml.namespace.QName, String)
-     */
-    public SOAPElement addAttribute(Name name, String value)
-        throws SOAPException;
-
-    /**
-     * Adds an attribute with the specified name and value to this
-     * <code>SOAPElement</code> object.
-     *
-     * @param qname a <code>QName</code> object with the name of the attribute
-     * @param value a <code>String</code> giving the value of the attribute
-     * @return the <code>SOAPElement</code> object into which the attribute was
-     *         inserted
-     *
-     * @exception SOAPException if there is an error in creating the
-     *                          Attribute, or it is invalid to set
-                                an attribute with <code>QName</code>
-                                <code>qname</code> on this SOAPElement.
-     * @see SOAPElement#addAttribute(Name, String)
-     * @since 1.6, SAAJ 1.3
-     */
-    public SOAPElement addAttribute(QName qname, String value)
-        throws SOAPException;
-
-    /**
-     * Adds a namespace declaration with the specified prefix and URI to this
-     * <code>SOAPElement</code> object.
-     *
-     * @param prefix a <code>String</code> giving the prefix of the namespace
-     * @param uri a <code>String</code> giving the uri of the namespace
-     * @return the <code>SOAPElement</code> object into which this
-     *          namespace declaration was inserted.
-     *
-     * @exception SOAPException if there is an error in creating the
-     *                          namespace
-     */
-    public SOAPElement addNamespaceDeclaration(String prefix, String uri)
-        throws SOAPException;
-
-    /**
-     * Returns the value of the attribute with the specified name.
-     *
-     * @param name a <code>Name</code> object with the name of the attribute
-     * @return a <code>String</code> giving the value of the specified
-     *         attribute, Null if there is no such attribute
-     * @see SOAPElement#getAttributeValue(javax.xml.namespace.QName)
-     */
-    public String getAttributeValue(Name name);
-
-    /**
-     * Returns the value of the attribute with the specified qname.
-     *
-     * @param qname a <code>QName</code> object with the qname of the attribute
-     * @return a <code>String</code> giving the value of the specified
-     *         attribute, Null if there is no such attribute
-     * @see SOAPElement#getAttributeValue(Name)
-     * @since 1.6, SAAJ 1.3
-     */
-    public String getAttributeValue(QName qname);
-
-    /**
-     * Returns an <code>Iterator</code> over all of the attribute
-     * <code>Name</code> objects in this
-     * <code>SOAPElement</code> object. The iterator can be used to get
-     * the attribute names, which can then be passed to the method
-     * <code>getAttributeValue</code> to retrieve the value of each
-     * attribute.
-     *
-     * @see SOAPElement#getAllAttributesAsQNames()
-     * @return an iterator over the names of the attributes
-     */
-    public Iterator getAllAttributes();
-
-    /**
-     * Returns an <code>Iterator</code> over all of the attributes
-     * in this <code>SOAPElement</code>  as <code>QName</code> objects.
-     * The iterator can be used to get the attribute QName, which can then
-     * be passed to the method <code>getAttributeValue</code> to retrieve
-     * the value of each attribute.
-     *
-     * @return an iterator over the QNames of the attributes
-     * @see SOAPElement#getAllAttributes()
-     * @since 1.6, SAAJ 1.3
-     */
-    public Iterator getAllAttributesAsQNames();
-
-
-    /**
-     * Returns the URI of the namespace that has the given prefix.
-     *
-     * @param prefix a <code>String</code> giving the prefix of the namespace
-     *        for which to search
-     * @return a <code>String</code> with the uri of the namespace that has
-     *        the given prefix
-     */
-    public String getNamespaceURI(String prefix);
-
-    /**
-     * Returns an <code>Iterator</code> over the namespace prefix
-     * <code>String</code>s declared by this element. The prefixes returned by
-     * this iterator can be passed to the method
-     * <code>getNamespaceURI</code> to retrieve the URI of each namespace.
-     *
-     * @return an iterator over the namespace prefixes in this
-     *         <code>SOAPElement</code> object
-     */
-    public Iterator getNamespacePrefixes();
-
-    /**
-     * Returns an <code>Iterator</code> over the namespace prefix
-     * <code>String</code>s visible to this element. The prefixes returned by
-     * this iterator can be passed to the method
-     * <code>getNamespaceURI</code> to retrieve the URI of each namespace.
-     *
-     * @return an iterator over the namespace prefixes are within scope of this
-     *         <code>SOAPElement</code> object
-     *
-     * @since 1.6, SAAJ 1.2
-     */
-    public Iterator getVisibleNamespacePrefixes();
-
-    /**
-     * Creates a <code>QName</code> whose namespace URI is the one associated
-     * with the parameter, <code>prefix</code>, in the context of this
-     * <code>SOAPElement</code>. The remaining elements of the new
-     * <code>QName</code> are taken directly from the parameters,
-     * <code>localName</code> and <code>prefix</code>.
-     *
-     * @param localName
-     *          a <code>String</code> containing the local part of the name.
-     * @param prefix
-     *          a <code>String</code> containing the prefix for the name.
-     *
-     * @return a <code>QName</code> with the specified <code>localName</code>
-     *          and <code>prefix</code>, and with a namespace that is associated
-     *          with the <code>prefix</code> in the context of this
-     *          <code>SOAPElement</code>. This namespace will be the same as
-     *          the one that would be returned by
-     *          <code>{@link #getNamespaceURI(String)}</code> if it were given
-     *          <code>prefix</code> as it's parameter.
-     *
-     * @exception SOAPException if the <code>QName</code> cannot be created.
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public QName createQName(String localName, String prefix)
-        throws SOAPException;
-    /**
-     * Returns the name of this <code>SOAPElement</code> object.
-     *
-     * @return a <code>Name</code> object with the name of this
-     *         <code>SOAPElement</code> object
-     */
-    public Name getElementName();
-
-    /**
-     * Returns the qname of this <code>SOAPElement</code> object.
-     *
-     * @return a <code>QName</code> object with the qname of this
-     *         <code>SOAPElement</code> object
-     * @see SOAPElement#getElementName()
-     * @since 1.6, SAAJ 1.3
-     */
-    public QName getElementQName();
-
-    /**
-    * Changes the name of this <code>Element</code> to <code>newName</code> if
-    * possible. SOAP Defined elements such as SOAPEnvelope, SOAPHeader, SOAPBody
-    * etc. cannot have their names changed using this method. Any attempt to do
-    * so will result in a  SOAPException being thrown.
-    *<P>
-    * Callers should not rely on the element instance being renamed as is.
-    * Implementations could end up copying the content of the
-    * <code>SOAPElement</code> to a renamed instance.
-    *
-    * @param newName the new name for the <code>Element</code>.
-    *
-    * @exception SOAPException if changing the name of this <code>Element</code>
-    *                          is not allowed.
-    * @return The renamed Node
-    *
-    * @since 1.6, SAAJ 1.3
-    */
-   public SOAPElement setElementQName(QName newName) throws SOAPException;
-
-   /**
-     * Removes the attribute with the specified name.
-     *
-     * @param name the <code>Name</code> object with the name of the
-     *        attribute to be removed
-     * @return <code>true</code> if the attribute was
-     *         removed successfully; <code>false</code> if it was not
-     * @see SOAPElement#removeAttribute(javax.xml.namespace.QName)
-     */
-    public boolean removeAttribute(Name name);
-
-    /**
-     * Removes the attribute with the specified qname.
-     *
-     * @param qname the <code>QName</code> object with the qname of the
-     *        attribute to be removed
-     * @return <code>true</code> if the attribute was
-     *         removed successfully; <code>false</code> if it was not
-     * @see SOAPElement#removeAttribute(Name)
-     * @since 1.6, SAAJ 1.3
-     */
-    public boolean removeAttribute(QName qname);
-
-    /**
-     * Removes the namespace declaration corresponding to the given prefix.
-     *
-     * @param prefix a <code>String</code> giving the prefix for which
-     *        to search
-     * @return <code>true</code> if the namespace declaration was
-     *         removed successfully; <code>false</code> if it was not
-     */
-    public boolean removeNamespaceDeclaration(String prefix);
-
-    /**
-     * Returns an <code>Iterator</code> over all the immediate child
-     * {@link Node}s of this element. This includes <code>javax.xml.soap.Text</code>
-     * objects as well as <code>SOAPElement</code> objects.
-     * <p>
-     * Calling this method may cause child <code>Element</code>,
-     * <code>SOAPElement</code> and <code>org.w3c.dom.Text</code> nodes to be
-     * replaced by <code>SOAPElement</code>, <code>SOAPHeaderElement</code>,
-     * <code>SOAPBodyElement</code> or <code>javax.xml.soap.Text</code> nodes as
-     * appropriate for the type of this parent node. As a result the calling
-     * application must treat any existing references to these child nodes that
-     * have been obtained through DOM APIs as invalid and either discard them or
-     * refresh them with the values returned by this <code>Iterator</code>. This
-     * behavior can be avoided by calling the equivalent DOM APIs. See
-     * {@link <a HREF="package-summary.html#package_description">javax.xml.soap<a>}
-     * for more details.
-     *
-     * @return an iterator with the content of this <code>SOAPElement</code>
-     *         object
-     */
-    public Iterator getChildElements();
-
-    /**
-     * Returns an <code>Iterator</code> over all the immediate child
-     * {@link Node}s of this element with the specified name. All of these
-     * children will be <code>SOAPElement</code> nodes.
-     * <p>
-     * Calling this method may cause child <code>Element</code>,
-     * <code>SOAPElement</code> and <code>org.w3c.dom.Text</code> nodes to be
-     * replaced by <code>SOAPElement</code>, <code>SOAPHeaderElement</code>,
-     * <code>SOAPBodyElement</code> or <code>javax.xml.soap.Text</code> nodes as
-     * appropriate for the type of this parent node. As a result the calling
-     * application must treat any existing references to these child nodes that
-     * have been obtained through DOM APIs as invalid and either discard them or
-     * refresh them with the values returned by this <code>Iterator</code>. This
-     * behavior can be avoided by calling the equivalent DOM APIs. See
-     * {@link <a HREF="package-summary.html#package_description">javax.xml.soap<a>}
-     * for more details.
-     *
-     * @param name a <code>Name</code> object with the name of the child
-     *        elements to be returned
-     *
-     * @return an <code>Iterator</code> object over all the elements
-     *         in this <code>SOAPElement</code> object with the
-     *         specified name
-     * @see SOAPElement#getChildElements(javax.xml.namespace.QName)
-     */
-    public Iterator getChildElements(Name name);
-
-    /**
-     * Returns an <code>Iterator</code> over all the immediate child
-     * {@link Node}s of this element with the specified qname. All of these
-     * children will be <code>SOAPElement</code> nodes.
-     * <p>
-     * Calling this method may cause child <code>Element</code>,
-     * <code>SOAPElement</code> and <code>org.w3c.dom.Text</code> nodes to be
-     * replaced by <code>SOAPElement</code>, <code>SOAPHeaderElement</code>,
-     * <code>SOAPBodyElement</code> or <code>javax.xml.soap.Text</code> nodes as
-     * appropriate for the type of this parent node. As a result the calling
-     * application must treat any existing references to these child nodes that
-     * have been obtained through DOM APIs as invalid and either discard them or
-     * refresh them with the values returned by this <code>Iterator</code>. This
-     * behavior can be avoided by calling the equivalent DOM APIs. See
-     * {@link <a HREF="package-summary.html#package_description">javax.xml.soap<a>}
-     * for more details.
-     *
-     * @param qname a <code>QName</code> object with the qname of the child
-     *        elements to be returned
-     *
-     * @return an <code>Iterator</code> object over all the elements
-     *         in this <code>SOAPElement</code> object with the
-     *         specified qname
-     * @see SOAPElement#getChildElements(Name)
-     * @since 1.6, SAAJ 1.3
-     */
-    public Iterator getChildElements(QName qname);
-
-    /**
-     * Sets the encoding style for this <code>SOAPElement</code> object
-     * to one specified.
-     *
-     * @param encodingStyle a <code>String</code> giving the encoding style
-     *
-     * @exception IllegalArgumentException if there was a problem in the
-     *            encoding style being set.
-     * @exception SOAPException if setting the encodingStyle is invalid for this SOAPElement.
-     * @see #getEncodingStyle
-     */
-    public void setEncodingStyle(String encodingStyle)
-        throws SOAPException;
-    /**
-     * Returns the encoding style for this <code>SOAPElement</code> object.
-     *
-     * @return a <code>String</code> giving the encoding style
-     *
-     * @see #setEncodingStyle
-     */
-    public String getEncodingStyle();
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPElementFactory.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-/**
- * <code>SOAPElementFactory</code> is a factory for XML fragments that
- * will eventually end up in the SOAP part. These fragments
- * can be inserted as children of the <code>SOAPHeader</code> or
- * <code>SOAPBody</code> or <code>SOAPEnvelope</code>.
- *
- * <p>Elements created using this factory do not have the properties
- * of an element that lives inside a SOAP header document. These
- * elements are copied into the XML document tree when they are
- * inserted.
- * @deprecated - Use <code>javax.xml.soap.SOAPFactory</code> for creating SOAPElements.
- * @see javax.xml.soap.SOAPFactory
- * @since 1.6
- */
-public class SOAPElementFactory {
-
-    private SOAPFactory soapFactory;
-
-    private SOAPElementFactory(SOAPFactory soapFactory) {
-        this.soapFactory = soapFactory;
-    }
-
-    /**
-     * Create a <code>SOAPElement</code> object initialized with the
-     * given <code>Name</code> object.
-     *
-     * @param name a <code>Name</code> object with the XML name for
-     *             the new element
-     *
-     * @return the new <code>SOAPElement</code> object that was
-     *         created
-     *
-     * @exception SOAPException if there is an error in creating the
-     *            <code>SOAPElement</code> object
-     *
-     * @deprecated Use
-     * javax.xml.soap.SOAPFactory.createElement(javax.xml.soap.Name)
-     * instead
-     *
-     * @see javax.xml.soap.SOAPFactory#createElement(javax.xml.soap.Name)
-     * @see javax.xml.soap.SOAPFactory#createElement(javax.xml.namespace.QName)
-     */
-    public SOAPElement create(Name name) throws SOAPException {
-        return soapFactory.createElement(name);
-    }
-
-    /**
-     * Create a <code>SOAPElement</code> object initialized with the
-     * given local name.
-     *
-     * @param localName a <code>String</code> giving the local name for
-     *             the new element
-     *
-     * @return the new <code>SOAPElement</code> object that was
-     *         created
-     *
-     * @exception SOAPException if there is an error in creating the
-     *            <code>SOAPElement</code> object
-     *
-     * @deprecated Use
-     * javax.xml.soap.SOAPFactory.createElement(String localName) instead
-     *
-     * @see javax.xml.soap.SOAPFactory#createElement(java.lang.String)
-     */
-    public SOAPElement create(String localName) throws SOAPException {
-        return soapFactory.createElement(localName);
-    }
-
-    /**
-     * Create a new <code>SOAPElement</code> object with the given
-     * local name, prefix and uri.
-     *
-     * @param localName a <code>String</code> giving the local name
-     *                  for the new element
-     * @param prefix the prefix for this <code>SOAPElement</code>
-     * @param uri a <code>String</code> giving the URI of the
-     *            namespace to which the new element belongs
-     *
-     * @exception SOAPException if there is an error in creating the
-     *            <code>SOAPElement</code> object
-     *
-     * @deprecated Use
-     * javax.xml.soap.SOAPFactory.createElement(String localName,
-     *                      String prefix,
-     *                      String uri)
-     * instead
-     *
-     * @see javax.xml.soap.SOAPFactory#createElement(java.lang.String, java.lang.String, java.lang.String)
-     */
-    public SOAPElement create(String localName, String prefix, String uri)
-        throws SOAPException {
-        return soapFactory.createElement(localName, prefix, uri);
-    }
-
-    /**
-     * Creates a new instance of <code>SOAPElementFactory</code>.
-     *
-     * @return a new instance of a <code>SOAPElementFactory</code>
-     *
-     * @exception SOAPException if there was an error creating the
-     *            default <code>SOAPElementFactory</code>
-     */
-    public static SOAPElementFactory newInstance() throws SOAPException {
-        try {
-            return new SOAPElementFactory(SOAPFactory.newInstance());
-        } catch (Exception ex) {
-            throw new SOAPException(
-                "Unable to create SOAP Element Factory: " + ex.getMessage());
-        }
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPEnvelope.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,202 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-
-/**
- * The container for the SOAPHeader and SOAPBody portions of a
- * <code>SOAPPart</code> object. By default, a <code>SOAPMessage</code>
- * object is created with a <code>SOAPPart</code> object that has a
- * <code>SOAPEnvelope</code> object. The <code>SOAPEnvelope</code> object
- * by default has an empty <code>SOAPBody</code> object and an empty
- * <code>SOAPHeader</code> object.  The <code>SOAPBody</code> object is
- * required, and the <code>SOAPHeader</code> object, though
- * optional, is used in the majority of cases. If the
- * <code>SOAPHeader</code> object is not needed, it can be deleted,
- * which is shown later.
- * <P>
- * A client can access the <code>SOAPHeader</code> and <code>SOAPBody</code>
- * objects by calling the methods <code>SOAPEnvelope.getHeader</code> and
- * <code>SOAPEnvelope.getBody</code>. The
- * following  lines of code use these two methods after starting with
- * the <code>SOAPMessage</code>
- * object <i>message</i> to get the <code>SOAPPart</code> object <i>sp</i>,
- * which is then used to get the <code>SOAPEnvelope</code> object <i>se</i>.
- *
- * <PRE>
- *     SOAPPart sp = message.getSOAPPart();
- *     SOAPEnvelope se = sp.getEnvelope();
- *     SOAPHeader sh = se.getHeader();
- *     SOAPBody sb = se.getBody();
- * </PRE>
- * <P>
- * It is possible to change the body or header of a <code>SOAPEnvelope</code>
- * object by retrieving the current one, deleting it, and then adding
- * a new body or header. The <code>javax.xml.soap.Node</code> method
- * <code>deleteNode</code> deletes the XML element (node) on which it is
- * called.  For example, the following line of code deletes the
- * <code>SOAPBody</code> object that is retrieved by the method <code>getBody</code>.
- * <PRE>
- *      se.getBody().detachNode();
- * </PRE>
- * To create a <code>SOAPHeader</code> object to replace the one that was removed,
- * a client uses
- * the method <code>SOAPEnvelope.addHeader</code>, which creates a new header and
- * adds it to the <code>SOAPEnvelope</code> object. Similarly, the method
- * <code>addBody</code> creates a new <code>SOAPBody</code> object and adds
- * it to the <code>SOAPEnvelope</code> object. The following code fragment
- * retrieves the current header, removes it, and adds a new one. Then
- * it retrieves the current body, removes it, and adds a new one.
- *
- * <PRE>
- *     SOAPPart sp = message.getSOAPPart();
- *     SOAPEnvelope se = sp.getEnvelope();
- *     se.getHeader().detachNode();
- *     SOAPHeader sh = se.addHeader();
- *     se.getBody().detachNode();
- *     SOAPBody sb = se.addBody();
- * </PRE>
- * It is an error to add a <code>SOAPBody</code> or <code>SOAPHeader</code>
- * object if one already exists.
- * <P>
- * The <code>SOAPEnvelope</code> interface provides three methods for creating
- * <code>Name</code> objects. One method creates <code>Name</code> objects with
- * a local name, a namespace prefix, and a namesapce URI. The second method creates
- * <code>Name</code> objects with a local name and a namespace prefix, and the third
- * creates <code>Name</code> objects with just a local name.  The following line of
- * code, in which <i>se</i> is a <code>SOAPEnvelope</code> object, creates a new
- * <code>Name</code> object with all three.
- * <PRE>
- *     Name name = se.createName("GetLastTradePrice", "WOMBAT",
- *                                "http://www.wombat.org/trader");
- * </PRE>
- *
- * @since 1.6
- */
-public interface SOAPEnvelope extends SOAPElement {
-
-    /**
-     * Creates a new <code>Name</code> object initialized with the
-     * given local name, namespace prefix, and namespace URI.
-     * <P>
-     * This factory method creates <code>Name</code> objects for use in
-     * the SOAP/XML document.
-     *
-     * @param localName a <code>String</code> giving the local name
-     * @param prefix a <code>String</code> giving the prefix of the namespace
-     * @param uri a <code>String</code> giving the URI of the namespace
-     * @return a <code>Name</code> object initialized with the given
-     *         local name, namespace prefix, and namespace URI
-     * @throws SOAPException if there is a SOAP error
-     */
-    public abstract Name createName(String localName, String prefix,
-                                    String uri)
-        throws SOAPException;
-
-    /**
-     * Creates a new <code>Name</code> object initialized with the
-     * given local name.
-     * <P>
-     * This factory method creates <code>Name</code> objects for use in
-     * the SOAP/XML document.
-     *
-     * @param localName a <code>String</code> giving the local name
-     * @return a <code>Name</code> object initialized with the given
-     *         local name
-     * @throws SOAPException if there is a SOAP error
-     */
-    public abstract Name createName(String localName)
-        throws SOAPException;
-
-    /**
-     * Returns the <code>SOAPHeader</code> object for
-     * this <code>SOAPEnvelope</code> object.
-     * <P>
-     * A new <code>SOAPMessage</code> object is by default created with a
-     * <code>SOAPEnvelope</code> object that contains an empty
-     * <code>SOAPHeader</code> object.  As a result, the method
-     * <code>getHeader</code> will always return a <code>SOAPHeader</code>
-     * object unless the header has been removed and a new one has not
-     * been added.
-     *
-     * @return the <code>SOAPHeader</code> object or <code>null</code> if
-     *         there is none
-     * @exception SOAPException if there is a problem obtaining the
-     *            <code>SOAPHeader</code> object
-     */
-    public SOAPHeader getHeader() throws SOAPException;
-
-    /**
-     * Returns the <code>SOAPBody</code> object associated with this
-     * <code>SOAPEnvelope</code> object.
-     * <P>
-     * A new <code>SOAPMessage</code> object is by default created with a
-     * <code>SOAPEnvelope</code> object that contains an empty
-     * <code>SOAPBody</code> object.  As a result, the method
-     * <code>getBody</code> will always return a <code>SOAPBody</code>
-     * object unless the body has been removed and a new one has not
-     * been added.
-     *
-     * @return the <code>SOAPBody</code> object for this
-     *         <code>SOAPEnvelope</code> object or <code>null</code>
-     *         if there is none
-     * @exception SOAPException if there is a problem obtaining the
-     *            <code>SOAPBody</code> object
-     */
-    public SOAPBody getBody() throws SOAPException;
-    /**
-     * Creates a <code>SOAPHeader</code> object and sets it as the
-     * <code>SOAPHeader</code> object for this <code>SOAPEnvelope</code>
-     * object.
-     * <P>
-     * It is illegal to add a header when the envelope already
-     * contains a header.  Therefore, this method should be called
-     * only after the existing header has been removed.
-     *
-     * @return the new <code>SOAPHeader</code> object
-     *
-     * @exception SOAPException if this
-     *            <code>SOAPEnvelope</code> object already contains a
-     *            valid <code>SOAPHeader</code> object
-     */
-    public SOAPHeader addHeader() throws SOAPException;
-    /**
-     * Creates a <code>SOAPBody</code> object and sets it as the
-     * <code>SOAPBody</code> object for this <code>SOAPEnvelope</code>
-     * object.
-     * <P>
-     * It is illegal to add a body when the envelope already
-     * contains a body. Therefore, this method should be called
-     * only after the existing body has been removed.
-     *
-     * @return the new <code>SOAPBody</code> object
-     *
-     * @exception SOAPException if this
-     *            <code>SOAPEnvelope</code> object already contains a
-     *            valid <code>SOAPBody</code> object
-     */
-    public SOAPBody addBody() throws SOAPException;
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPException.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,165 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-/**
- * An exception that signals that a SOAP exception has occurred. A
- * <code>SOAPException</code> object may contain a <code>String</code>
- * that gives the reason for the exception, an embedded
- * <code>Throwable</code> object, or both. This class provides methods
- * for retrieving reason messages and for retrieving the embedded
- * <code>Throwable</code> object.
- *
- * <P> Typical reasons for throwing a <code>SOAPException</code>
- * object are problems such as difficulty setting a header, not being
- * able to send a message, and not being able to get a connection with
- * the provider.  Reasons for embedding a <code>Throwable</code>
- * object include problems such as input/output errors or a parsing
- * problem, such as an error in parsing a header.
- *
- * @since 1.6
- */
-public class SOAPException extends Exception {
-    private Throwable cause;
-
-    /**
-     * Constructs a <code>SOAPException</code> object with no
-     * reason or embedded <code>Throwable</code> object.
-     */
-    public SOAPException() {
-        super();
-        this.cause = null;
-    }
-
-    /**
-     * Constructs a <code>SOAPException</code> object with the given
-     * <code>String</code> as the reason for the exception being thrown.
-     *
-     * @param reason a description of what caused the exception
-     */
-    public SOAPException(String reason) {
-        super(reason);
-        this.cause = null;
-    }
-
-    /**
-     * Constructs a <code>SOAPException</code> object with the given
-     * <code>String</code> as the reason for the exception being thrown
-     * and the given <code>Throwable</code> object as an embedded
-     * exception.
-     *
-     * @param reason a description of what caused the exception
-     * @param cause a <code>Throwable</code> object that is to
-     *        be embedded in this <code>SOAPException</code> object
-     */
-    public SOAPException(String reason, Throwable cause) {
-        super(reason);
-        initCause(cause);
-    }
-
-    /**
-     * Constructs a <code>SOAPException</code> object initialized
-     * with the given <code>Throwable</code> object.
-     */
-    public SOAPException(Throwable cause) {
-        super(cause.toString());
-        initCause(cause);
-    }
-
-    /**
-     * Returns the detail message for this <code>SOAPException</code>
-     * object.
-     * <P>
-     * If there is an embedded <code>Throwable</code> object, and if the
-     * <code>SOAPException</code> object has no detail message of its
-     * own, this method will return the detail message from the embedded
-     * <code>Throwable</code> object.
-     *
-     * @return the error or warning message for this
-     *         <code>SOAPException</code> or, if it has none, the
-     *         message of the embedded <code>Throwable</code> object,
-     *         if there is one
-     */
-    public String getMessage() {
-        String message = super.getMessage();
-        if (message == null && cause != null) {
-            return cause.getMessage();
-        } else {
-            return message;
-        }
-    }
-
-    /**
-     * Returns the <code>Throwable</code> object embedded in this
-     * <code>SOAPException</code> if there is one. Otherwise, this method
-     * returns <code>null</code>.
-     *
-     * @return the embedded <code>Throwable</code> object or <code>null</code>
-     *         if there is none
-     */
-
-    public Throwable getCause() {
-        return cause;
-    }
-
-    /**
-     * Initializes the <code>cause</code> field of this <code>SOAPException</code>
-     * object with the given <code>Throwable</code> object.
-     * <P>
-     * This method can be called at most once.  It is generally called from
-     * within the constructor or immediately after the constructor has
-     * returned a new <code>SOAPException</code> object.
-     * If this <code>SOAPException</code> object was created with the
-     * constructor {@link #SOAPException(Throwable)} or
-     * {@link #SOAPException(String,Throwable)}, meaning that its
-     * <code>cause</code> field already has a value, this method cannot be
-     * called even once.
-     *
-     * @param  cause the <code>Throwable</code> object that caused this
-     *         <code>SOAPException</code> object to be thrown.  The value of this
-     *         parameter is saved for later retrieval by the
-     *         {@link #getCause()} method.  A <tt>null</tt> value is
-     *         permitted and indicates that the cause is nonexistent or
-     *         unknown.
-     * @return  a reference to this <code>SOAPException</code> instance
-     * @throws IllegalArgumentException if <code>cause</code> is this
-     *         <code>Throwable</code> object.  (A <code>Throwable</code> object
-     *         cannot be its own cause.)
-     * @throws IllegalStateException if the cause for this <code>SOAPException</code> object
-     *         has already been initialized
-     */
-    public synchronized Throwable initCause(Throwable cause) {
-        if (this.cause != null) {
-            throw new IllegalStateException("Can't override cause");
-        }
-        if (cause == this) {
-            throw new IllegalArgumentException("Self-causation not permitted");
-        }
-        this.cause = cause;
-
-        return this;
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPFactory.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,300 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-import javax.xml.namespace.QName;
-
-import org.w3c.dom.Element;
-
-/**
- * <code>SOAPFactory</code> is a factory for creating various objects
- * that exist in the SOAP XML tree.
-
- * <code>SOAPFactory</code> can be
- * used to create XML fragments that will eventually end up in the
- * SOAP part. These fragments can be inserted as children of the
- * {@link SOAPHeaderElement} or {@link SOAPBodyElement} or
- * {@link SOAPEnvelope} or other {@link SOAPElement} objects.
- *
- * <code>SOAPFactory</code> also has methods to create
- * <code>javax.xml.soap.Detail</code> objects as well as
- * <code>java.xml.soap.Name</code> objects.
- *
- * @since 1.6
- */
-public abstract class SOAPFactory {
-
-    /**
-     * A constant representing the property used to lookup the name of
-     * a <code>SOAPFactory</code> implementation class.
-     */
-    static private final String SOAP_FACTORY_PROPERTY =
-        "javax.xml.soap.SOAPFactory";
-
-    /**
-     * Class name of default <code>SOAPFactory</code> implementation.
-     */
-    static final String DEFAULT_SOAP_FACTORY
-        = "com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl";
-
-    /**
-     * Creates a <code>SOAPElement</code> object from an existing DOM
-     * <code>Element</code>. If the DOM <code>Element</code> that is passed in
-     * as an argument is already a <code>SOAPElement</code> then this method
-     * must return it unmodified without any further work. Otherwise, a new
-     * <code>SOAPElement</code> is created and a deep copy is made of the
-     * <code>domElement</code> argument. The concrete type of the return value
-     * will depend on the name of the <code>domElement</code> argument. If any
-     * part of the tree rooted in <code>domElement</code> violates SOAP rules, a
-     * <code>SOAPException</code> will be thrown.
-     *
-     * @param domElement - the <code>Element</code> to be copied.
-     *
-     * @return a new <code>SOAPElement</code> that is a copy of <code>domElement</code>.
-     *
-     * @exception SOAPException if there is an error in creating the
-     *            <code>SOAPElement</code> object
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public SOAPElement createElement(Element domElement) throws SOAPException {
-        throw new UnsupportedOperationException("createElement(org.w3c.dom.Element) must be overridden by all subclasses of SOAPFactory.");
-    }
-
-    /**
-     * Creates a <code>SOAPElement</code> object initialized with the
-     * given <code>Name</code> object. The concrete type of the return value
-     * will depend on the name given to the new <code>SOAPElement</code>. For
-     * instance, a new <code>SOAPElement</code> with the name
-     * "{http://www.w3.org/2003/05/soap-envelope}Envelope" would cause a
-     * <code>SOAPEnvelope</code> that supports SOAP 1.2 behavior to be created.
-     *
-     * @param name a <code>Name</code> object with the XML name for
-     *             the new element
-     *
-     * @return the new <code>SOAPElement</code> object that was
-     *         created
-     *
-     * @exception SOAPException if there is an error in creating the
-     *            <code>SOAPElement</code> object
-     * @see SOAPFactory#createElement(javax.xml.namespace.QName)
-     */
-    public abstract SOAPElement createElement(Name name) throws SOAPException;
-
-    /**
-     * Creates a <code>SOAPElement</code> object initialized with the
-     * given <code>QName</code> object. The concrete type of the return value
-     * will depend on the name given to the new <code>SOAPElement</code>. For
-     * instance, a new <code>SOAPElement</code> with the name
-     * "{http://www.w3.org/2003/05/soap-envelope}Envelope" would cause a
-     * <code>SOAPEnvelope</code> that supports SOAP 1.2 behavior to be created.
-     *
-     * @param qname a <code>QName</code> object with the XML name for
-     *             the new element
-     *
-     * @return the new <code>SOAPElement</code> object that was
-     *         created
-     *
-     * @exception SOAPException if there is an error in creating the
-     *            <code>SOAPElement</code> object
-     * @see SOAPFactory#createElement(Name)
-     * @since 1.6, SAAJ 1.3
-     */
-    public  SOAPElement createElement(QName qname) throws SOAPException {
-        throw new UnsupportedOperationException("createElement(QName) must be overridden by all subclasses of SOAPFactory.");
-    }
-
-    /**
-     * Creates a <code>SOAPElement</code> object initialized with the
-     * given local name.
-     *
-     * @param localName a <code>String</code> giving the local name for
-     *             the new element
-     *
-     * @return the new <code>SOAPElement</code> object that was
-     *         created
-     *
-     * @exception SOAPException if there is an error in creating the
-     *            <code>SOAPElement</code> object
-     */
-    public abstract SOAPElement createElement(String localName)
-        throws SOAPException;
-
-
-    /**
-     * Creates a new <code>SOAPElement</code> object with the given
-     * local name, prefix and uri. The concrete type of the return value
-     * will depend on the name given to the new <code>SOAPElement</code>. For
-     * instance, a new <code>SOAPElement</code> with the name
-     * "{http://www.w3.org/2003/05/soap-envelope}Envelope" would cause a
-     * <code>SOAPEnvelope</code> that supports SOAP 1.2 behavior to be created.
-     *
-     * @param localName a <code>String</code> giving the local name
-     *                  for the new element
-     * @param prefix the prefix for this <code>SOAPElement</code>
-     * @param uri a <code>String</code> giving the URI of the
-     *            namespace to which the new element belongs
-     *
-     * @exception SOAPException if there is an error in creating the
-     *            <code>SOAPElement</code> object
-     */
-    public abstract SOAPElement createElement(
-        String localName,
-        String prefix,
-        String uri)
-        throws SOAPException;
-
-    /**
-     * Creates a new <code>Detail</code> object which serves as a container
-     * for <code>DetailEntry</code> objects.
-     * <P>
-     * This factory method creates <code>Detail</code> objects for use in
-     * situations where it is not practical to use the <code>SOAPFault</code>
-     * abstraction.
-     *
-     * @return a <code>Detail</code> object
-     * @throws SOAPException if there is a SOAP error
-     * @throws UnsupportedOperationException if the protocol specified
-     *         for the SOAPFactory was <code>DYNAMIC_SOAP_PROTOCOL</code>
-     */
-    public abstract Detail createDetail() throws SOAPException;
-
-    /**
-     *Creates a new <code>SOAPFault</code> object initialized with the given <code>reasonText</code>
-     *  and <code>faultCode</code>
-     *@param reasonText the ReasonText/FaultString for the fault
-     *@param faultCode the FaultCode for the fault
-     *@return a <code>SOAPFault</code> object
-     *@throws SOAPException if there is a SOAP error
-     *@since 1.6, SAAJ 1.3
-     */
-    public abstract SOAPFault createFault(String reasonText, QName faultCode) throws SOAPException;
-
-    /**
-     *Creates a new default <code>SOAPFault</code> object
-     *@return a <code>SOAPFault</code> object
-     *@throws SOAPException if there is a SOAP error
-     *@since 1.6, SAAJ 1.3
-     */
-    public abstract SOAPFault createFault() throws SOAPException;
-
-    /**
-     * Creates a new <code>Name</code> object initialized with the
-     * given local name, namespace prefix, and namespace URI.
-     * <P>
-     * This factory method creates <code>Name</code> objects for use in
-     * situations where it is not practical to use the <code>SOAPEnvelope</code>
-     * abstraction.
-     *
-     * @param localName a <code>String</code> giving the local name
-     * @param prefix a <code>String</code> giving the prefix of the namespace
-     * @param uri a <code>String</code> giving the URI of the namespace
-     * @return a <code>Name</code> object initialized with the given
-     *         local name, namespace prefix, and namespace URI
-     * @throws SOAPException if there is a SOAP error
-     */
-    public abstract Name createName(
-        String localName,
-        String prefix,
-        String uri)
-        throws SOAPException;
-
-    /**
-     * Creates a new <code>Name</code> object initialized with the
-     * given local name.
-     * <P>
-     * This factory method creates <code>Name</code> objects for use in
-     * situations where it is not practical to use the <code>SOAPEnvelope</code>
-     * abstraction.
-     *
-     * @param localName a <code>String</code> giving the local name
-     * @return a <code>Name</code> object initialized with the given
-     *         local name
-     * @throws SOAPException if there is a SOAP error
-     */
-    public abstract Name createName(String localName) throws SOAPException;
-
-    /**
-     * Creates a new <code>SOAPFactory</code> object that is an instance of
-     * the default implementation (SOAP 1.1),
-     *
-     * This method uses the following ordered lookup procedure to determine the SOAPFactory implementation class to load:
-     * <UL>
-     *  <LI> Use the javax.xml.soap.SOAPFactory system property.
-     *  <LI> Use the properties file "lib/jaxm.properties" in the JRE directory. This configuration file is in standard
-     * java.util.Properties format and contains the fully qualified name of the implementation class with the key being the
-     * system property defined above.
-     *  <LI> Use the Services API (as detailed in the JAR specification), if available, to determine the classname. The Services API
-     * will look for a classname in the file META-INF/services/javax.xml.soap.SOAPFactory in jars available to the runtime.
-     *  <LI> Use the SAAJMetaFactory instance to locate the SOAPFactory implementation class.
-     * </UL>
-     *
-     * @return a new instance of a <code>SOAPFactory</code>
-     *
-     * @exception SOAPException if there was an error creating the
-     *            default <code>SOAPFactory</code>
-     * @see SAAJMetaFactory
-     */
-    public static SOAPFactory newInstance()
-        throws SOAPException
-    {
-        try {
-            SOAPFactory factory = (SOAPFactory) FactoryFinder.find(
-                    SOAP_FACTORY_PROPERTY, DEFAULT_SOAP_FACTORY, false);
-            if (factory != null)
-                return factory;
-            return newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
-        } catch (Exception ex) {
-            throw new SOAPException(
-                "Unable to create SOAP Factory: " + ex.getMessage());
-        }
-
-    }
-
-    /**
-     * Creates a new <code>SOAPFactory</code> object that is an instance of
-     * the specified implementation, this method uses the SAAJMetaFactory to
-     * locate the implementation class and create the SOAPFactory instance.
-     *
-     * @return a new instance of a <code>SOAPFactory</code>
-     *
-     * @param protocol  a string constant representing the protocol of the
-     *                   specified SOAP factory implementation. May be
-     *                   either <code>DYNAMIC_SOAP_PROTOCOL</code>,
-     *                   <code>DEFAULT_SOAP_PROTOCOL</code> (which is the same
-     *                   as) <code>SOAP_1_1_PROTOCOL</code>, or
-     *                   <code>SOAP_1_2_PROTOCOL</code>.
-     *
-     * @exception SOAPException if there was an error creating the
-     *            specified <code>SOAPFactory</code>
-     * @see SAAJMetaFactory
-     * @since 1.6, SAAJ 1.3
-     */
-    public static SOAPFactory newInstance(String protocol)
-        throws SOAPException {
-            return SAAJMetaFactory.getInstance().newSOAPFactory(protocol);
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPFault.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,513 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-import java.util.Iterator;
-import java.util.Locale;
-
-import javax.xml.namespace.QName;
-
-/**
- * An element in the <code>SOAPBody</code> object that contains
- * error and/or status information. This information may relate to
- * errors in the <code>SOAPMessage</code> object or to problems
- * that are not related to the content in the message itself. Problems
- * not related to the message itself are generally errors in
- * processing, such as the inability to communicate with an upstream
- * server.
- * <P>
- * Depending on the <code>protocol</code> specified while creating the
- * <code>MessageFactory</code> instance,  a <code>SOAPFault</code> has
- * sub-elements as defined in the SOAP 1.1/SOAP 1.2 specification.
- *
- * @since 1.6
- */
-public interface SOAPFault extends SOAPBodyElement {
-
-    /**
-     * Sets this <code>SOAPFault</code> object with the given fault code.
-     *
-     * <P> Fault codes, which give information about the fault, are defined
-     * in the SOAP 1.1 specification. A fault code is mandatory and must
-     * be of type <code>Name</code>. This method provides a convenient
-     * way to set a fault code. For example,
-     *
-     * <PRE>
-     * SOAPEnvelope se = ...;
-     * // Create a qualified name in the SOAP namespace with a localName
-     * // of "Client". Note that prefix parameter is optional and is null
-     * // here which causes the implementation to use an appropriate prefix.
-     * Name qname = se.createName("Client", null,
-     *                            SOAPConstants.URI_NS_SOAP_ENVELOPE);
-     * SOAPFault fault = ...;
-     * fault.setFaultCode(qname);
-     * </PRE>
-     * It is preferable to use this method over {@link #setFaultCode(String)}.
-     *
-     * @param faultCodeQName a <code>Name</code> object giving the fault
-     * code to be set. It must be namespace qualified.
-     * @see #getFaultCodeAsName
-     *
-     * @exception SOAPException if there was an error in adding the
-     *            <i>faultcode</i> element to the underlying XML tree.
-     *
-     * @since 1.6, SAAJ 1.2
-     */
-    public void setFaultCode(Name faultCodeQName) throws SOAPException;
-
-    /**
-     * Sets this <code>SOAPFault</code> object with the given fault code.
-     *
-     * It is preferable to use this method over {@link #setFaultCode(Name)}.
-     *
-     * @param faultCodeQName a <code>QName</code> object giving the fault
-     * code to be set. It must be namespace qualified.
-     * @see #getFaultCodeAsQName
-     *
-     * @exception SOAPException if there was an error in adding the
-     *            <code>faultcode</code> element to the underlying XML tree.
-     *
-     * @see #setFaultCode(Name)
-     * @see #getFaultCodeAsQName()
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public void setFaultCode(QName faultCodeQName) throws SOAPException;
-
-    /**
-     * Sets this <code>SOAPFault</code> object with the give fault code.
-     * <P>
-     * Fault codes, which given information about the fault, are defined in
-     * the SOAP 1.1 specification. This element is mandatory in SOAP 1.1.
-     * Because the fault code is required to be a QName it is preferable to
-     * use the {@link #setFaultCode(Name)} form of this method.
-     *
-     * @param faultCode a <code>String</code> giving the fault code to be set.
-     *         It must be of the form "prefix:localName" where the prefix has
-     *         been defined in a namespace declaration.
-     * @see #setFaultCode(Name)
-     * @see #getFaultCode
-     * @see SOAPElement#addNamespaceDeclaration
-     *
-     * @exception SOAPException if there was an error in adding the
-     *            <code>faultCode</code> to the underlying XML tree.
-     */
-    public void setFaultCode(String faultCode) throws SOAPException;
-
-    /**
-     * Gets the mandatory SOAP 1.1 fault code for this
-     * <code>SOAPFault</code> object as a SAAJ <code>Name</code> object.
-     * The SOAP 1.1 specification requires the value of the "faultcode"
-     * element to be of type QName. This method returns the content of the
-     * element as a QName in the form of a SAAJ Name object. This method
-     * should be used instead of the <code>getFaultCode</code> method since
-     * it allows applications to easily access the namespace name without
-     * additional parsing.
-     *
-     * @return a <code>Name</code> representing the faultcode
-     * @see #setFaultCode(Name)
-     *
-     * @since 1.6, SAAJ 1.2
-     */
-    public Name getFaultCodeAsName();
-
-
-    /**
-     * Gets the fault code for this
-     * <code>SOAPFault</code> object as a <code>QName</code> object.
-     *
-     * @return a <code>QName</code> representing the faultcode
-     *
-     * @see #setFaultCode(QName)
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public QName getFaultCodeAsQName();
-
-    /**
-     * Gets the Subcodes for this <code>SOAPFault</code> as an iterator over
-     * <code>QNames</code>.
-     *
-     * @return an <code>Iterator</code> that accesses a sequence of
-     *      <code>QNames</code>. This <code>Iterator</code> should not support
-     *      the optional <code>remove</code> method. The order in which the
-     *      Subcodes are returned reflects the hierarchy of Subcodes present
-     *      in the fault from top to bottom.
-     *
-     * @exception UnsupportedOperationException if this message does not
-     *      support the SOAP 1.2 concept of Subcode.
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public Iterator getFaultSubcodes();
-
-    /**
-     * Removes any Subcodes that may be contained by this
-     * <code>SOAPFault</code>. Subsequent calls to
-     * <code>getFaultSubcodes</code> will return an empty iterator until a call
-     * to <code>appendFaultSubcode</code> is made.
-     *
-     * @exception UnsupportedOperationException if this message does not
-     *      support the SOAP 1.2 concept of Subcode.
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public void removeAllFaultSubcodes();
-
-    /**
-     * Adds a Subcode to the end of the sequence of Subcodes contained by this
-     * <code>SOAPFault</code>. Subcodes, which were introduced in SOAP 1.2, are
-     * represented by a recursive sequence of subelements rooted in the
-     * mandatory Code subelement of a SOAP Fault.
-     *
-     * @param subcode a QName containing the Value of the Subcode.
-     *
-     * @exception SOAPException if there was an error in setting the Subcode
-     * @exception UnsupportedOperationException if this message does not
-     *      support the SOAP 1.2 concept of Subcode.
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public void appendFaultSubcode(QName subcode) throws SOAPException;
-
-    /**
-     * Gets the fault code for this <code>SOAPFault</code> object.
-     *
-     * @return a <code>String</code> with the fault code
-     * @see #getFaultCodeAsName
-     * @see #setFaultCode
-     */
-    public String getFaultCode();
-
-    /**
-     * Sets this <code>SOAPFault</code> object with the given fault actor.
-     * <P>
-     * The fault actor is the recipient in the message path who caused the
-     * fault to happen.
-     * <P>
-     * If this <code>SOAPFault</code> supports SOAP 1.2 then this call is
-     * equivalent to {@link #setFaultRole(String)}
-     *
-     * @param faultActor a <code>String</code> identifying the actor that
-     *        caused this <code>SOAPFault</code> object
-     * @see #getFaultActor
-     *
-     * @exception SOAPException if there was an error in adding the
-     *            <code>faultActor</code> to the underlying XML tree.
-     */
-    public void setFaultActor(String faultActor) throws SOAPException;
-
-    /**
-     * Gets the fault actor for this <code>SOAPFault</code> object.
-     * <P>
-     * If this <code>SOAPFault</code> supports SOAP 1.2 then this call is
-     * equivalent to {@link #getFaultRole()}
-     *
-     * @return a <code>String</code> giving the actor in the message path
-     *         that caused this <code>SOAPFault</code> object
-     * @see #setFaultActor
-     */
-    public String getFaultActor();
-
-    /**
-     * Sets the fault string for this <code>SOAPFault</code> object
-     * to the given string.
-     * <P>
-     * If this
-     * <code>SOAPFault</code> is part of a message that supports SOAP 1.2 then
-     * this call is equivalent to:
-     * <pre>
-     *      addFaultReasonText(faultString, Locale.getDefault());
-     * </pre>
-     *
-     * @param faultString a <code>String</code> giving an explanation of
-     *        the fault
-     * @see #getFaultString
-     *
-     * @exception SOAPException if there was an error in adding the
-     *            <code>faultString</code> to the underlying XML tree.
-     */
-    public void setFaultString(String faultString) throws SOAPException;
-
-    /**
-     * Sets the fault string for this <code>SOAPFault</code> object
-     * to the given string and localized to the given locale.
-     * <P>
-     * If this
-     * <code>SOAPFault</code> is part of a message that supports SOAP 1.2 then
-     * this call is equivalent to:
-     * <pre>
-     *      addFaultReasonText(faultString, locale);
-     * </pre>
-     *
-     * @param faultString a <code>String</code> giving an explanation of
-     *         the fault
-     * @param locale a {@link java.util.Locale Locale} object indicating
-     *         the native language of the <code>faultString</code>
-     * @see #getFaultString
-     *
-     * @exception SOAPException if there was an error in adding the
-     *            <code>faultString</code> to the underlying XML tree.
-     *
-     * @since 1.6, SAAJ 1.2
-     */
-    public void setFaultString(String faultString, Locale locale)
-        throws SOAPException;
-
-    /**
-     * Gets the fault string for this <code>SOAPFault</code> object.
-     * <P>
-     * If this
-     * <code>SOAPFault</code> is part of a message that supports SOAP 1.2 then
-     * this call is equivalent to:
-     * <pre>
-     *    String reason = null;
-     *    try {
-     *        reason = (String) getFaultReasonTexts().next();
-     *    } catch (SOAPException e) {}
-     *    return reason;
-     * </pre>
-     *
-     * @return a <code>String</code> giving an explanation of
-     *        the fault
-     * @see #setFaultString(String)
-     * @see #setFaultString(String, Locale)
-     */
-    public String getFaultString();
-
-    /**
-     * Gets the locale of the fault string for this <code>SOAPFault</code>
-     * object.
-     * <P>
-     * If this
-     * <code>SOAPFault</code> is part of a message that supports SOAP 1.2 then
-     * this call is equivalent to:
-     * <pre>
-     *    Locale locale = null;
-     *    try {
-     *        locale = (Locale) getFaultReasonLocales().next();
-     *    } catch (SOAPException e) {}
-     *    return locale;
-     * </pre>
-     *
-     * @return a <code>Locale</code> object indicating the native language of
-     *          the fault string or <code>null</code> if no locale was specified
-     * @see #setFaultString(String, Locale)
-     *
-     * @since 1.6, SAAJ 1.2
-     */
-    public Locale getFaultStringLocale();
-
-    /**
-     * Returns true if this <code>SOAPFault</code> has a <code>Detail</code>
-     * subelement and false otherwise. Equivalent to
-     * <code>(getDetail()!=null)</code>.
-     *
-     * @return true if this <code>SOAPFault</code> has a <code>Detail</code>
-     * subelement and false otherwise.
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public boolean hasDetail();
-
-    /**
-     * Returns the optional detail element for this <code>SOAPFault</code>
-     * object.
-     * <P>
-     * A <code>Detail</code> object carries application-specific error
-     * information, the scope of the error information is restricted to
-     * faults in the <code>SOAPBodyElement</code> objects if this is a
-     * SOAP 1.1 Fault.
-     *
-     * @return a <code>Detail</code> object with application-specific
-     *         error information if present, null otherwise
-     */
-    public Detail getDetail();
-
-    /**
-     * Creates an optional <code>Detail</code> object and sets it as the
-     * <code>Detail</code> object for this <code>SOAPFault</code>
-     * object.
-     * <P>
-     * It is illegal to add a detail when the fault already
-     * contains a detail. Therefore, this method should be called
-     * only after the existing detail has been removed.
-     *
-     * @return the new <code>Detail</code> object
-     *
-     * @exception SOAPException if this
-     *            <code>SOAPFault</code> object already contains a
-     *            valid <code>Detail</code> object
-     */
-    public Detail addDetail() throws SOAPException;
-
-    /**
-     * Returns an <code>Iterator</code> over a distinct sequence of
-     * <code>Locale</code>s for which there are associated Reason Text items.
-     * Any of these <code>Locale</code>s can be used in a call to
-     * <code>getFaultReasonText</code> in order to obtain a localized version
-     * of the Reason Text string.
-     *
-     * @return an <code>Iterator</code> over a sequence of <code>Locale</code>
-     *      objects for which there are associated Reason Text items.
-     *
-     * @exception SOAPException if there was an error in retrieving
-     * the  fault Reason locales.
-     * @exception UnsupportedOperationException if this message does not
-     *      support the SOAP 1.2 concept of Fault Reason.
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public Iterator getFaultReasonLocales() throws SOAPException;
-
-    /**
-     * Returns an <code>Iterator</code> over a sequence of
-     * <code>String</code> objects containing all of the Reason Text items for
-     * this <code>SOAPFault</code>.
-     *
-     * @return an <code>Iterator</code> over env:Fault/env:Reason/env:Text items.
-     *
-     * @exception SOAPException if there was an error in retrieving
-     * the  fault Reason texts.
-     * @exception UnsupportedOperationException if this message does not
-     *      support the SOAP 1.2 concept of Fault Reason.
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public Iterator getFaultReasonTexts() throws SOAPException;
-
-    /**
-     * Returns the Reason Text associated with the given <code>Locale</code>.
-     * If more than one such Reason Text exists the first matching Text is
-     * returned
-     *
-     * @param locale -- the <code>Locale</code> for which a localized
-     *      Reason Text is desired
-     *
-     * @return the Reason Text associated with <code>locale</code>
-     *
-     * @see #getFaultString
-     *
-     * @exception SOAPException if there was an error in retrieving
-     * the  fault Reason text for the specified locale .
-     * @exception UnsupportedOperationException if this message does not
-     *      support the SOAP 1.2 concept of Fault Reason.
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public String getFaultReasonText(Locale locale) throws SOAPException;
-
-    /**
-     * Appends or replaces a Reason Text item containing the specified
-     * text message and an <i>xml:lang</i> derived from
-     * <code>locale</code>. If a Reason Text item with this
-     * <i>xml:lang</i> already exists its text value will be replaced
-     * with <code>text</code>.
-     * The <code>locale</code> parameter should not be <code>null</code>
-     * <P>
-     * Code sample:
-     *
-     * <PRE>
-     * SOAPFault fault = ...;
-     * fault.addFaultReasonText("Version Mismatch", Locale.ENGLISH);
-     * </PRE>
-     *
-     * @param text -- reason message string
-     * @param locale -- Locale object representing the locale of the message
-     *
-     * @exception SOAPException if there was an error in adding the Reason text
-     * or the <code>locale</code> passed was <code>null</code>.
-     * @exception UnsupportedOperationException if this message does not
-     *      support the SOAP 1.2 concept of Fault Reason.
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public void addFaultReasonText(String text, java.util.Locale locale)
-        throws SOAPException;
-
-    /**
-     * Returns the optional Node element value for this
-     * <code>SOAPFault</code> object. The Node element is
-     * optional in SOAP 1.2.
-     *
-     * @return Content of the env:Fault/env:Node element as a String
-     * or <code>null</code> if none
-     *
-     * @exception UnsupportedOperationException if this message does not
-     *      support the SOAP 1.2 concept of Fault Node.
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public String getFaultNode();
-
-    /**
-     * Creates or replaces any existing Node element value for
-     * this <code>SOAPFault</code> object. The Node element
-     * is optional in SOAP 1.2.
-     *
-     * @exception SOAPException  if there was an error in setting the
-     *            Node for this  <code>SOAPFault</code> object.
-     * @exception UnsupportedOperationException if this message does not
-     *      support the SOAP 1.2 concept of Fault Node.
-     *
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public void setFaultNode(String uri) throws SOAPException;
-
-    /**
-     * Returns the optional Role element value for this
-     * <code>SOAPFault</code> object. The Role element is
-     * optional in SOAP 1.2.
-     *
-     * @return Content of the env:Fault/env:Role element as a String
-     * or <code>null</code> if none
-     *
-     * @exception UnsupportedOperationException if this message does not
-     *      support the SOAP 1.2 concept of Fault Role.
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public String getFaultRole();
-
-    /**
-     * Creates or replaces any existing Role element value for
-     * this <code>SOAPFault</code> object. The Role element
-     * is optional in SOAP 1.2.
-     *
-     * @param uri - the URI of the Role
-     *
-     * @exception SOAPException  if there was an error in setting the
-     *            Role for this  <code>SOAPFault</code> object.
-     *
-     * @exception UnsupportedOperationException if this message does not
-     *      support the SOAP 1.2 concept of Fault Role.
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public void setFaultRole(String uri) throws SOAPException;
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPFaultElement.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-/**
- * A representation of the contents in
- * a <code>SOAPFault</code> object.  The <code>Detail</code> interface
- * is a <code>SOAPFaultElement</code>.
- * <P>
- * Content is added to a <code>SOAPFaultElement</code> using the
- * <code>SOAPElement</code> method <code>addTextNode</code>.
- *
- * @since 1.6
- */
-public interface SOAPFaultElement extends SOAPElement {
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPHeader.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,263 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-import java.util.Iterator;
-
-import javax.xml.namespace.QName;
-
-/**
- * A representation of the SOAP header
- * element. A SOAP header element consists of XML data that affects
- * the way the application-specific content is processed by the message
- * provider. For example, transaction semantics, authentication information,
- * and so on, can be specified as the content of a <code>SOAPHeader</code>
- * object.
- * <P>
- * A <code>SOAPEnvelope</code> object contains an empty
- * <code>SOAPHeader</code> object by default. If the <code>SOAPHeader</code>
- * object, which is optional, is not needed, it can be retrieved and deleted
- * with the following line of code. The variable <i>se</i> is a
- * <code>SOAPEnvelope</code> object.
- * <PRE>
- *      se.getHeader().detachNode();
- * </PRE>
- *
- * A <code>SOAPHeader</code> object is created with the <code>SOAPEnvelope</code>
- * method <code>addHeader</code>. This method, which creates a new header and adds it
- * to the envelope, may be called only after the existing header has been removed.
- *
- * <PRE>
- *      se.getHeader().detachNode();
- *      SOAPHeader sh = se.addHeader();
- * </PRE>
- * <P>
- * A <code>SOAPHeader</code> object can have only <code>SOAPHeaderElement</code>
- * objects as its immediate children. The method <code>addHeaderElement</code>
- * creates a new <code>HeaderElement</code> object and adds it to the
- * <code>SOAPHeader</code> object. In the following line of code, the
- * argument to the method <code>addHeaderElement</code> is a <code>Name</code>
- * object that is the name for the new <code>HeaderElement</code> object.
- * <PRE>
- *      SOAPHeaderElement shElement = sh.addHeaderElement(name);
- * </PRE>
- *
- * @see SOAPHeaderElement
- * @since 1.6
- */
-public interface SOAPHeader extends SOAPElement {
-    /**
-     * Creates a new <code>SOAPHeaderElement</code> object initialized with the
-     * specified name and adds it to this <code>SOAPHeader</code> object.
-     *
-     * @param name a <code>Name</code> object with the name of the new
-     *        <code>SOAPHeaderElement</code> object
-     * @return the new <code>SOAPHeaderElement</code> object that was
-     *          inserted into this <code>SOAPHeader</code> object
-     * @exception SOAPException if a SOAP error occurs
-     * @see SOAPHeader#addHeaderElement(javax.xml.namespace.QName)
-     */
-    public SOAPHeaderElement addHeaderElement(Name name)
-        throws SOAPException;
-
-    /**
-     * Creates a new <code>SOAPHeaderElement</code> object initialized with the
-     * specified qname and adds it to this <code>SOAPHeader</code> object.
-     *
-     * @param qname a <code>QName</code> object with the qname of the new
-     *        <code>SOAPHeaderElement</code> object
-     * @return the new <code>SOAPHeaderElement</code> object that was
-     *          inserted into this <code>SOAPHeader</code> object
-     * @exception SOAPException if a SOAP error occurs
-     * @see SOAPHeader#addHeaderElement(Name)
-     * @since 1.6, SAAJ 1.3
-     */
-    public SOAPHeaderElement addHeaderElement(QName qname)
-        throws SOAPException;
-
-    /**
-     * Returns an <code>Iterator</code> over all the <code>SOAPHeaderElement</code> objects
-     * in this <code>SOAPHeader</code> object
-     * that have the specified <i>actor</i> and that have a MustUnderstand attribute
-     * whose value is equivalent to <code>true</code>.
-     * <p>
-     * In SOAP 1.2 the <i>env:actor</i> attribute is replaced by the <i>env:role</i>
-     * attribute, but with essentially the same semantics.
-     *
-     * @param actor a <code>String</code> giving the URI of the <code>actor</code> / <code>role</code>
-     *        for which to search
-     * @return an <code>Iterator</code> object over all the
-     *         <code>SOAPHeaderElement</code> objects that contain the specified
-     *          <code>actor</code> / <code>role</code> and are marked as MustUnderstand
-     * @see #examineHeaderElements
-     * @see #extractHeaderElements
-     * @see SOAPConstants#URI_SOAP_ACTOR_NEXT
-     *
-     * @since 1.6, SAAJ 1.2
-     */
-    public Iterator examineMustUnderstandHeaderElements(String actor);
-
-    /**
-     * Returns an <code>Iterator</code> over all the <code>SOAPHeaderElement</code> objects
-     * in this <code>SOAPHeader</code> object
-     * that have the specified <i>actor</i>.
-     *
-     * An <i>actor</i> is a global attribute that indicates the intermediate
-     * parties that should process a message before it reaches its ultimate
-     * receiver. An actor receives the message and processes it before sending
-     * it on to the next actor. The default actor is the ultimate intended
-     * recipient for the message, so if no actor attribute is included in a
-     * <code>SOAPHeader</code> object, it is sent to the ultimate receiver
-     * along with the message body.
-     * <p>
-     * In SOAP 1.2 the <i>env:actor</i> attribute is replaced by the <i>env:role</i>
-     * attribute, but with essentially the same semantics.
-     *
-     * @param actor a <code>String</code> giving the URI of the <code>actor</code> / <code>role</code>
-     *        for which to search
-     * @return an <code>Iterator</code> object over all the
-     *         <code>SOAPHeaderElement</code> objects that contain the specified
-     *          <code>actor</code> / <code>role</code>
-     * @see #extractHeaderElements
-     * @see SOAPConstants#URI_SOAP_ACTOR_NEXT
-     */
-    public Iterator examineHeaderElements(String actor);
-
-    /**
-     * Returns an <code>Iterator</code> over all the <code>SOAPHeaderElement</code> objects
-     * in this <code>SOAPHeader</code> object
-     * that have the specified <i>actor</i> and detaches them
-     * from this <code>SOAPHeader</code> object.
-     * <P>
-     * This method allows an actor to process the parts of the
-     * <code>SOAPHeader</code> object that apply to it and to remove
-     * them before passing the message on to the next actor.
-     * <p>
-     * In SOAP 1.2 the <i>env:actor</i> attribute is replaced by the <i>env:role</i>
-     * attribute, but with essentially the same semantics.
-     *
-     * @param actor a <code>String</code> giving the URI of the <code>actor</code> / <code>role</code>
-     *        for which to search
-     * @return an <code>Iterator</code> object over all the
-     *         <code>SOAPHeaderElement</code> objects that contain the specified
-     *          <code>actor</code> / <code>role</code>
-     *
-     * @see #examineHeaderElements
-     * @see SOAPConstants#URI_SOAP_ACTOR_NEXT
-     */
-    public Iterator extractHeaderElements(String actor);
-
-    /**
-     * Creates a new NotUnderstood <code>SOAPHeaderElement</code> object initialized
-     * with the specified name and adds it to this <code>SOAPHeader</code> object.
-     * This operation is supported only by SOAP 1.2.
-     *
-     * @param name a <code>QName</code> object with the name of the
-     *        <code>SOAPHeaderElement</code> object that was not understood.
-     * @return the new <code>SOAPHeaderElement</code> object that was
-     *          inserted into this <code>SOAPHeader</code> object
-     * @exception SOAPException if a SOAP error occurs.
-     * @exception UnsupportedOperationException if this is a SOAP 1.1 Header.
-     * @since 1.6, SAAJ 1.3
-     */
-    public SOAPHeaderElement addNotUnderstoodHeaderElement(QName name)
-        throws SOAPException;
-
-    /**
-     * Creates a new Upgrade <code>SOAPHeaderElement</code> object initialized
-     * with the specified List of supported SOAP URIs and adds it to this
-     * <code>SOAPHeader</code> object.
-     * This operation is supported on both SOAP 1.1 and SOAP 1.2 header.
-     *
-     * @param supportedSOAPURIs an <code>Iterator</code> object with the URIs of SOAP
-     *          versions supported.
-     * @return the new <code>SOAPHeaderElement</code> object that was
-     *          inserted into this <code>SOAPHeader</code> object
-     * @exception SOAPException if a SOAP error occurs.
-     * @since 1.6, SAAJ 1.3
-     */
-    public SOAPHeaderElement addUpgradeHeaderElement(Iterator supportedSOAPURIs)
-        throws SOAPException;
-
-    /**
-     * Creates a new Upgrade <code>SOAPHeaderElement</code> object initialized
-     * with the specified array of supported SOAP URIs and adds it to this
-     * <code>SOAPHeader</code> object.
-     * This operation is supported on both SOAP 1.1 and SOAP 1.2 header.
-     *
-     * @param  supportedSoapUris an array of the URIs of SOAP versions supported.
-     * @return the new <code>SOAPHeaderElement</code> object that was
-     *          inserted into this <code>SOAPHeader</code> object
-     * @exception SOAPException if a SOAP error occurs.
-     * @since 1.6, SAAJ 1.3
-     */
-    public SOAPHeaderElement addUpgradeHeaderElement(String[] supportedSoapUris)
-        throws SOAPException;
-
-    /**
-     * Creates a new Upgrade <code>SOAPHeaderElement</code> object initialized
-     * with the specified supported SOAP URI and adds it to this
-     * <code>SOAPHeader</code> object.
-     * This operation is supported on both SOAP 1.1 and SOAP 1.2 header.
-     *
-     * @param supportedSoapUri the URI of SOAP the version that is supported.
-     * @return the new <code>SOAPHeaderElement</code> object that was
-     *          inserted into this <code>SOAPHeader</code> object
-     * @exception SOAPException if a SOAP error occurs.
-     * @since 1.6, SAAJ 1.3
-     */
-    public SOAPHeaderElement addUpgradeHeaderElement(String supportedSoapUri)
-        throws SOAPException;
-
-    /**
-     * Returns an <code>Iterator</code> over all the <code>SOAPHeaderElement</code> objects
-     * in this <code>SOAPHeader</code> object.
-     *
-     * @return an <code>Iterator</code> object over all the
-     *          <code>SOAPHeaderElement</code> objects contained by this
-     *          <code>SOAPHeader</code>
-     * @see #extractAllHeaderElements
-     *
-     * @since 1.6, SAAJ 1.2
-     */
-    public Iterator examineAllHeaderElements();
-
-    /**
-     * Returns an <code>Iterator</code> over all the <code>SOAPHeaderElement</code> objects
-     * in this <code>SOAPHeader</code> object and detaches them
-     * from this <code>SOAPHeader</code> object.
-     *
-     * @return an <code>Iterator</code> object over all the
-     *          <code>SOAPHeaderElement</code> objects contained by this
-     *          <code>SOAPHeader</code>
-     *
-     * @see #examineAllHeaderElements
-     *
-     * @since 1.6, SAAJ 1.2
-     */
-    public Iterator extractAllHeaderElements();
-
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPHeaderElement.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,168 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-/**
- * An object representing the contents in the SOAP header part of the
- * SOAP envelope.
- * The immediate children of a <code>SOAPHeader</code> object can
- * be represented only as <code>SOAPHeaderElement</code> objects.
- * <P>
- * A <code>SOAPHeaderElement</code> object can have other
- * <code>SOAPElement</code> objects as its children.
- *
- * @since 1.6
- */
-public interface SOAPHeaderElement extends SOAPElement {
-
-    /**
-     * Sets the actor associated with this <code>SOAPHeaderElement</code>
-     * object to the specified actor. The default value of an actor is:
-     *          <code>SOAPConstants.URI_SOAP_ACTOR_NEXT</code>
-     * <P>
-     * If this <code>SOAPHeaderElement</code> supports SOAP 1.2 then this call is
-     * equivalent to {@link #setRole(String)}
-     *
-     * @param  actorURI a <code>String</code> giving the URI of the actor
-     *           to set
-     *
-     * @exception IllegalArgumentException if there is a problem in
-     * setting the actor.
-     *
-     * @see #getActor
-     */
-    public void setActor(String actorURI);
-
-    /**
-     * Sets the <code>Role</code> associated with this <code>SOAPHeaderElement</code>
-     * object to the specified <code>Role</code>.
-     *
-     * @param uri - the URI of the <code>Role</code>
-     *
-     * @throws SOAPException if there is an error in setting the role
-     *
-     * @exception UnsupportedOperationException if this message does not
-     *      support the SOAP 1.2 concept of Fault Role.
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public void setRole(String uri) throws SOAPException;
-
-    /**
-     * Returns the uri of the <i>actor</i> attribute of this
-     * <code>SOAPHeaderElement</code>.
-     *<P>
-     * If this <code>SOAPHeaderElement</code> supports SOAP 1.2 then this call is
-     * equivalent to {@link #getRole()}
-     * @return  a <code>String</code> giving the URI of the actor
-     * @see #setActor
-     */
-    public String getActor();
-
-    /**
-     * Returns the value of the <i>Role</i> attribute of this
-     * <code>SOAPHeaderElement</code>.
-     *
-     * @return a <code>String</code> giving the URI of the <code>Role</code>
-     *
-     * @exception UnsupportedOperationException if this message does not
-     *      support the SOAP 1.2 concept of Fault Role.
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public String getRole();
-
-    /**
-     * Sets the mustUnderstand attribute for this <code>SOAPHeaderElement</code>
-     * object to be either true or false.
-     * <P>
-     * If the mustUnderstand attribute is on, the actor who receives the
-     * <code>SOAPHeaderElement</code> must process it correctly. This
-     * ensures, for example, that if the <code>SOAPHeaderElement</code>
-     * object modifies the message, that the message is being modified correctly.
-     *
-     * @param mustUnderstand <code>true</code> to set the mustUnderstand
-     *        attribute to true; <code>false</code> to set it to false
-     *
-     * @exception IllegalArgumentException if there is a problem in
-     * setting the mustUnderstand attribute
-     * @see #getMustUnderstand
-     * @see #setRelay
-     */
-    public void setMustUnderstand(boolean mustUnderstand);
-
-    /**
-     * Returns the boolean value of the mustUnderstand attribute for this
-     * <code>SOAPHeaderElement</code>.
-     *
-     * @return <code>true</code> if the mustUnderstand attribute of this
-     *        <code>SOAPHeaderElement</code> object is turned on; <code>false</code>
-     *         otherwise
-     */
-    public boolean getMustUnderstand();
-
-    /**
-     * Sets the <i>relay</i> attribute for this <code>SOAPHeaderElement</code> to be
-     * either true or false.
-     * <P>
-     * The SOAP relay attribute is set to true to indicate that the SOAP header
-     * block must be relayed by any node that is targeted by the header block
-     * but not actually process it. This attribute is ignored on header blocks
-     * whose mustUnderstand attribute is set to true or that are targeted at
-     * the ultimate reciever (which is the default). The default value of this
-     * attribute is <code>false</code>.
-     *
-     * @param relay the new value of the <i>relay</i> attribute
-     *
-     * @exception SOAPException if there is a problem in setting the
-     * relay attribute.
-     * @exception UnsupportedOperationException if this message does not
-     *      support the SOAP 1.2 concept of Relay attribute.
-     *
-     * @see #setMustUnderstand
-     * @see #getRelay
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public void setRelay(boolean relay) throws SOAPException;
-
-    /**
-     * Returns the boolean value of the <i>relay</i> attribute for this
-     * <code>SOAPHeaderElement</code>
-     *
-     * @return <code>true</code> if the relay attribute is turned on;
-     * <code>false</code> otherwise
-     *
-     * @exception UnsupportedOperationException if this message does not
-     *      support the SOAP 1.2 concept of Relay attribute.
-     *
-     * @see #getMustUnderstand
-     * @see #setRelay
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public boolean getRelay();
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPMessage.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,457 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-import java.io.OutputStream;
-import java.io.IOException;
-
-import java.util.Iterator;
-
-import javax.activation.DataHandler;
-
-/**
- * The root class for all SOAP messages. As transmitted on the "wire", a SOAP
- * message is an XML document or a MIME message whose first body part is an
- * XML/SOAP document.
- * <P>
- * A <code>SOAPMessage</code> object consists of a SOAP part and optionally
- * one or more attachment parts. The SOAP part for a <code>SOAPMessage</code>
- * object is a <code>SOAPPart</code> object, which contains information used
- * for message routing and identification, and which can contain
- * application-specific content. All data in the SOAP Part of a message must be
- * in XML format.
- * <P>
- * A new <code>SOAPMessage</code> object contains the following by default:
- * <UL>
- *   <LI>A <code>SOAPPart</code> object
- *   <LI>A <code>SOAPEnvelope</code> object
- *   <LI>A <code>SOAPBody</code> object
- *   <LI>A <code>SOAPHeader</code> object
- * </UL>
- * The SOAP part of a message can be retrieved by calling the method <code>SOAPMessage.getSOAPPart()</code>.
- * The <code>SOAPEnvelope</code> object is retrieved from the <code>SOAPPart</code>
- * object, and the <code>SOAPEnvelope</code> object is used to retrieve the
- * <code>SOAPBody</code> and <code>SOAPHeader</code> objects.
- *
- * <PRE>
- *     SOAPPart sp = message.getSOAPPart();
- *     SOAPEnvelope se = sp.getEnvelope();
- *     SOAPBody sb = se.getBody();
- *     SOAPHeader sh = se.getHeader();
- * </PRE>
- *
- * <P>
- * In addition to the mandatory <code>SOAPPart</code> object, a <code>SOAPMessage</code>
- * object may contain zero or more <code>AttachmentPart</code> objects, each
- * of which contains application-specific data. The <code>SOAPMessage</code>
- * interface provides methods for creating <code>AttachmentPart</code>
- * objects and also for adding them to a <code>SOAPMessage</code> object. A
- * party that has received a <code>SOAPMessage</code> object can examine its
- * contents by retrieving individual attachment parts.
- * <P>
- * Unlike the rest of a SOAP message, an attachment is not required to be in
- * XML format and can therefore be anything from simple text to an image file.
- * Consequently, any message content that is not in XML format must be in an
- * <code>AttachmentPart</code> object.
- * <P>
- * A <code>MessageFactory</code> object may create <code>SOAPMessage</code>
- * objects with behavior that is specialized to a particular implementation or
- * application of SAAJ. For instance, a <code>MessageFactory</code> object
- * may produce <code>SOAPMessage</code> objects that conform to a particular
- * Profile such as ebXML. In this case a <code>MessageFactory</code> object
- * might produce <code>SOAPMessage</code> objects that are initialized with
- * ebXML headers.
- * <P>
- * In order to ensure backward source compatibility, methods that are added to
- * this class after version 1.1 of the SAAJ specification are all concrete
- * instead of abstract and they all have default implementations. Unless
- * otherwise noted in the JavaDocs for those methods the default
- * implementations simply throw an <code>UnsupportedOperationException</code>
- * and the SAAJ implementation code must override them with methods that
- * provide the specified behavior. Legacy client code does not have this
- * restriction, however, so long as there is no claim made that it conforms to
- * some later version of the specification than it was originally written for.
- * A legacy class that extends the SOAPMessage class can be compiled and/or run
- * against succeeding versions of the SAAJ API without modification. If such a
- * class was correctly implemented then it will continue to behave correctly
- * relative to the version of the specification against which it was written.
- *
- * @see MessageFactory
- * @see AttachmentPart
- * @since 1.6
- */
-public abstract class SOAPMessage {
-    /**
-         * Specifies the character type encoding for the SOAP Message. Valid values
-         * include "utf-8" and "utf-16". See vendor documentation for additional
-         * supported values. The default is "utf-8".
-         *
-         * @see SOAPMessage#setProperty(String, Object) SOAPMessage.setProperty
-         * @since 1.6, SAAJ 1.2
-         */
-    public static final String CHARACTER_SET_ENCODING =
-        "javax.xml.soap.character-set-encoding";
-
-    /**
-     * Specifies whether the SOAP Message will contain an XML declaration when
-     * it is sent. The only valid values are "true" and "false". The default is
-     * "false".
-     *
-     * @see SOAPMessage#setProperty(String, Object) SOAPMessage.setProperty
-     * @since 1.6, SAAJ 1.2
-     */
-    public static final String WRITE_XML_DECLARATION =
-        "javax.xml.soap.write-xml-declaration";
-
-    /**
-     * Sets the description of this <code>SOAPMessage</code> object's
-     * content with the given description.
-     *
-     * @param description a <code>String</code> describing the content of this
-     *         message
-     * @see #getContentDescription
-     */
-    public abstract void setContentDescription(String description);
-
-    /**
-     * Retrieves a description of this <code>SOAPMessage</code> object's
-     * content.
-     *
-     * @return a <code>String</code> describing the content of this
-     *         message or <code>null</code> if no description has been set
-     * @see #setContentDescription
-     */
-    public abstract String getContentDescription();
-
-    /**
-         * Gets the SOAP part of this <code>SOAPMessage</code> object.
-         * <P>
-         * <code>SOAPMessage</code> object contains one or more attachments, the
-         * SOAP Part must be the first MIME body part in the message.
-         *
-         * @return the <code>SOAPPart</code> object for this <code>SOAPMessage</code>
-         *         object
-         */
-    public abstract SOAPPart getSOAPPart();
-
-    /**
-         * Gets the SOAP Body contained in this <code>SOAPMessage</code> object.
-         * <p>
-         *
-         * @return the <code>SOAPBody</code> object contained by this <code>SOAPMessage</code>
-         *         object
-         * @exception SOAPException
-         *               if the SOAP Body does not exist or cannot be retrieved
-         * @since 1.6, SAAJ 1.2
-         */
-    public SOAPBody getSOAPBody() throws SOAPException {
-        throw new UnsupportedOperationException("getSOAPBody must be overridden by all subclasses of SOAPMessage");
-    }
-
-    /**
-         * Gets the SOAP Header contained in this <code>SOAPMessage</code>
-         * object.
-         * <p>
-         *
-         * @return the <code>SOAPHeader</code> object contained by this <code>SOAPMessage</code>
-         *         object
-         * @exception SOAPException
-         *               if the SOAP Header does not exist or cannot be retrieved
-         * @since 1.6, SAAJ 1.2
-         */
-    public SOAPHeader getSOAPHeader() throws SOAPException {
-        throw new UnsupportedOperationException("getSOAPHeader must be overridden by all subclasses of SOAPMessage");
-    }
-
-    /**
-         * Removes all <code>AttachmentPart</code> objects that have been added
-         * to this <code>SOAPMessage</code> object.
-         * <P>
-         * This method does not touch the SOAP part.
-         */
-    public abstract void removeAllAttachments();
-
-    /**
-         * Gets a count of the number of attachments in this message. This count
-         * does not include the SOAP part.
-         *
-         * @return the number of <code>AttachmentPart</code> objects that are
-         *         part of this <code>SOAPMessage</code> object
-         */
-    public abstract int countAttachments();
-
-    /**
-         * Retrieves all the <code>AttachmentPart</code> objects that are part of
-         * this <code>SOAPMessage</code> object.
-         *
-         * @return an iterator over all the attachments in this message
-         */
-    public abstract Iterator getAttachments();
-
-    /**
-         * Retrieves all the <code>AttachmentPart</code> objects that have header
-         * entries that match the specified headers. Note that a returned
-         * attachment could have headers in addition to those specified.
-         *
-         * @param headers
-         *           a <code>MimeHeaders</code> object containing the MIME
-         *           headers for which to search
-         * @return an iterator over all attachments that have a header that matches
-         *         one of the given headers
-         */
-    public abstract Iterator getAttachments(MimeHeaders headers);
-
-    /**
-     * Removes all the <code>AttachmentPart</code> objects that have header
-     * entries that match the specified headers. Note that the removed
-     * attachment could have headers in addition to those specified.
-     *
-     * @param headers
-     *           a <code>MimeHeaders</code> object containing the MIME
-     *           headers for which to search
-     * @since 1.6, SAAJ 1.3
-     */
-    public abstract void removeAttachments(MimeHeaders headers);
-
-
-    /**
-     * Returns an <code>AttachmentPart</code> object that is associated with an
-     * attachment that is referenced by this <code>SOAPElement</code> or
-     * <code>null</code> if no such attachment exists. References can be made
-     * via an <code>href</code> attribute as described in
-     * {@link <a href="http://www.w3.org/TR/SOAP-attachments#SOAPReferenceToAttachements">SOAP Messages with Attachments</a>},
-     * or via a single <code>Text</code> child node containing a URI as
-     * described in the WS-I Attachments Profile 1.0 for elements of schema
-     * type {@link <a href="http://www.ws-i.org/Profiles/AttachmentsProfile-1.0-2004-08-24.html">ref:swaRef</a>}.  These two mechanisms must be supported.
-     * The support for references via <code>href</code> attribute also implies that
-     * this method should also be supported on an element that is an
-     * <i>xop:Include</i> element (
-     * {@link <a  href="http://www.w3.org/2000/xp/Group/3/06/Attachments/XOP.html">XOP</a>}).
-     * other reference mechanisms may be supported by individual
-     * implementations of this standard. Contact your vendor for details.
-     *
-     * @param  element The <code>SOAPElement</code> containing the reference to an Attachment
-     * @return the referenced <code>AttachmentPart</code> or null if no such
-     *          <code>AttachmentPart</code> exists or no reference can be
-     *          found in this <code>SOAPElement</code>.
-     * @throws SOAPException if there is an error in the attempt to access the
-     *          attachment
-     *
-     * @since 1.6, SAAJ 1.3
-     */
-    public abstract AttachmentPart getAttachment(SOAPElement element) throws SOAPException;
-
-
-    /**
-     * Adds the given <code>AttachmentPart</code> object to this <code>SOAPMessage</code>
-     * object. An <code>AttachmentPart</code> object must be created before
-     * it can be added to a message.
-     *
-     * @param AttachmentPart
-     *           an <code>AttachmentPart</code> object that is to become part
-     *           of this <code>SOAPMessage</code> object
-     * @exception IllegalArgumentException
-     */
-    public abstract void addAttachmentPart(AttachmentPart AttachmentPart);
-
-    /**
-     * Creates a new empty <code>AttachmentPart</code> object. Note that the
-     * method <code>addAttachmentPart</code> must be called with this new
-     * <code>AttachmentPart</code> object as the parameter in order for it to
-     * become an attachment to this <code>SOAPMessage</code> object.
-     *
-     * @return a new <code>AttachmentPart</code> object that can be populated
-     *         and added to this <code>SOAPMessage</code> object
-     */
-    public abstract AttachmentPart createAttachmentPart();
-
-    /**
-     * Creates an <code>AttachmentPart</code> object and populates it using
-     * the given <code>DataHandler</code> object.
-     *
-     * @param dataHandler
-     *           the <code>javax.activation.DataHandler</code> object that
-     *           will generate the content for this <code>SOAPMessage</code>
-     *           object
-     * @return a new <code>AttachmentPart</code> object that contains data
-     *         generated by the given <code>DataHandler</code> object
-     * @exception IllegalArgumentException
-     *               if there was a problem with the specified <code>DataHandler</code>
-     *               object
-     * @see javax.activation.DataHandler
-     * @see javax.activation.DataContentHandler
-     */
-    public AttachmentPart createAttachmentPart(DataHandler dataHandler) {
-        AttachmentPart attachment = createAttachmentPart();
-        attachment.setDataHandler(dataHandler);
-        return attachment;
-    }
-
-    /**
-     * Returns all the transport-specific MIME headers for this <code>SOAPMessage</code>
-     * object in a transport-independent fashion.
-     *
-     * @return a <code>MimeHeaders</code> object containing the <code>MimeHeader</code>
-     *         objects
-     */
-    public abstract MimeHeaders getMimeHeaders();
-
-    /**
-     * Creates an <code>AttachmentPart</code> object and populates it with
-     * the specified data of the specified content type. The type of the
-     * <code>Object</code> should correspond to the value given for the
-     * <code>Content-Type</code>.
-     *
-     * @param content
-     *           an <code>Object</code> containing the content for the
-     *           <code>AttachmentPart</code> object to be created
-     * @param contentType
-     *           a <code>String</code> object giving the type of content;
-     *           examples are "text/xml", "text/plain", and "image/jpeg"
-     * @return a new <code>AttachmentPart</code> object that contains the
-     *         given data
-     * @exception IllegalArgumentException
-     *               may be thrown if the contentType does not match the type
-     *               of the content object, or if there was no
-     *               <code>DataContentHandler</code> object for the given
-     *               content object
-     * @see javax.activation.DataHandler
-     * @see javax.activation.DataContentHandler
-     */
-    public AttachmentPart createAttachmentPart(
-        Object content,
-        String contentType) {
-        AttachmentPart attachment = createAttachmentPart();
-        attachment.setContent(content, contentType);
-        return attachment;
-    }
-
-    /**
-     * Updates this <code>SOAPMessage</code> object with all the changes that
-     * have been made to it. This method is called automatically when
-     * {@link SOAPMessage#writeTo(OutputStream)} is  called. However, if
-     * changes are made to a message that was received or to one that has
-     * already been sent, the method <code>saveChanges</code> needs to be
-     * called explicitly in order to save the changes. The method <code>saveChanges</code>
-     * also generates any changes that can be read back (for example, a
-     * MessageId in profiles that support a message id). All MIME headers in a
-     * message that is created for sending purposes are guaranteed to have
-     * valid values only after <code>saveChanges</code> has been called.
-     * <P>
-     * In addition, this method marks the point at which the data from all
-     * constituent <code>AttachmentPart</code> objects are pulled into the
-     * message.
-     * <P>
-     *
-     * @exception <code>SOAPException</code> if there was a problem saving
-     *               changes to this message.
-     */
-    public abstract void saveChanges() throws SOAPException;
-
-    /**
-     * Indicates whether this <code>SOAPMessage</code> object needs to have
-     * the method <code>saveChanges</code> called on it.
-     *
-     * @return <code>true</code> if <code>saveChanges</code> needs to be
-     *         called; <code>false</code> otherwise.
-     */
-    public abstract boolean saveRequired();
-
-    /**
-     * Writes this <code>SOAPMessage</code> object to the given output
-     * stream. The externalization format is as defined by the SOAP 1.1 with
-     * Attachments specification.
-     * <P>
-     * If there are no attachments, just an XML stream is written out. For
-     * those messages that have attachments, <code>writeTo</code> writes a
-     * MIME-encoded byte stream.
-     * <P>
-     * Note that this method does not write the transport-specific MIME Headers
-     * of the Message
-     *
-     * @param out
-     *           the <code>OutputStream</code> object to which this <code>SOAPMessage</code>
-     *           object will be written
-     * @exception IOException
-     *               if an I/O error occurs
-     * @exception SOAPException
-     *               if there was a problem in externalizing this SOAP message
-     */
-    public abstract void writeTo(OutputStream out)
-        throws SOAPException, IOException;
-
-    /**
-     * Associates the specified value with the specified property. If there was
-     * already a value associated with this property, the old value is
-     * replaced.
-     * <p>
-     * The valid property names include
-     * {@link SOAPMessage#WRITE_XML_DECLARATION}  and
-     * {@link SOAPMessage#CHARACTER_SET_ENCODING}. All of these standard SAAJ
-     * properties are prefixed by "javax.xml.soap". Vendors may also add
-     * implementation specific properties. These properties must be prefixed
-     * with package names that are unique to the vendor.
-     * <p>
-     * Setting the property <code>WRITE_XML_DECLARATION</code> to <code>"true"</code>
-     * will cause an XML Declaration to be written out at the start of the SOAP
-     * message. The default value of "false" suppresses this declaration.
-     * <p>
-     * The property <code>CHARACTER_SET_ENCODING</code> defaults to the value
-     * <code>"utf-8"</code> which causes the SOAP message to be encoded using
-     * UTF-8. Setting <code>CHARACTER_SET_ENCODING</code> to <code>"utf-16"</code>
-     * causes the SOAP message to be encoded using UTF-16.
-     * <p>
-     * Some implementations may allow encodings in addition to UTF-8 and
-     * UTF-16. Refer to your vendor's documentation for details.
-     *
-     * @param property
-     *           the property with which the specified value is to be
-     *           associated.
-     * @param value
-     *           the value to be associated with the specified property
-     * @exception SOAPException
-     *               if the property name is not recognized.
-     * @since 1.6, SAAJ 1.2
-     */
-    public void setProperty(String property, Object value)
-        throws SOAPException {
-            throw new UnsupportedOperationException("setProperty must be overridden by all subclasses of SOAPMessage");
-    }
-
-    /**
-     * Retrieves value of the specified property.
-     *
-     * @param property
-     *           the name of the property to retrieve
-     * @return the value associated with the named property or <code>null</code>
-     *         if no such property exists.
-     * @exception SOAPException
-     *               if the property name is not recognized.
-     * @since 1.6, SAAJ 1.2
-     */
-    public Object getProperty(String property) throws SOAPException {
-        throw new UnsupportedOperationException("getProperty must be overridden by all subclasses of SOAPMessage");
-    }
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPPart.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,267 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-import java.util.Iterator;
-
-import javax.xml.transform.Source;
-
-/**
- * The container for the SOAP-specific portion of a <code>SOAPMessage</code>
- * object. All messages are required to have a SOAP part, so when a
- * <code>SOAPMessage</code> object is created, it will automatically
- * have a <code>SOAPPart</code> object.
- *<P>
- * A <code>SOAPPart</code> object is a MIME part and has the MIME headers
- * Content-Id, Content-Location, and Content-Type.  Because the value of
- * Content-Type must be "text/xml", a <code>SOAPPart</code> object automatically
- * has a MIME header of Content-Type with its value set to "text/xml".
- * The value must be "text/xml" because content in the SOAP part of a
- * message must be in XML format.  Content that is not of type "text/xml"
- * must be in an <code>AttachmentPart</code> object rather than in the
- * <code>SOAPPart</code> object.
- * <P>
- * When a message is sent, its SOAP part must have the MIME header Content-Type
- * set to "text/xml". Or, from the other perspective, the SOAP part of any
- * message that is received must have the MIME header Content-Type with a
- * value of "text/xml".
- * <P>
- * A client can access the <code>SOAPPart</code> object of a
- * <code>SOAPMessage</code> object by
- * calling the method <code>SOAPMessage.getSOAPPart</code>. The
- * following  line of code, in which <code>message</code> is a
- * <code>SOAPMessage</code> object, retrieves the SOAP part of a message.
- * <PRE>
- *   SOAPPart soapPart = message.getSOAPPart();
- * </PRE>
- * <P>
- * A <code>SOAPPart</code> object contains a <code>SOAPEnvelope</code> object,
- * which in turn contains a <code>SOAPBody</code> object and a
- * <code>SOAPHeader</code> object.
- * The <code>SOAPPart</code> method <code>getEnvelope</code> can be used
- * to retrieve the <code>SOAPEnvelope</code> object.
- * <P>
- *
- * @since 1.6
- */
-public abstract class SOAPPart implements org.w3c.dom.Document, Node {
-
-    /**
-     * Gets the <code>SOAPEnvelope</code> object associated with this
-     * <code>SOAPPart</code> object. Once the SOAP envelope is obtained, it
-     * can be used to get its contents.
-     *
-     * @return the <code>SOAPEnvelope</code> object for this
-     *           <code>SOAPPart</code> object
-     * @exception SOAPException if there is a SOAP error
-     */
-    public abstract SOAPEnvelope getEnvelope() throws SOAPException;
-
-    /**
-     * Retrieves the value of the MIME header whose name is "Content-Id".
-     *
-     * @return a <code>String</code> giving the value of the MIME header
-     *         named "Content-Id"
-     * @see #setContentId
-     */
-    public String getContentId() {
-        String[] values = getMimeHeader("Content-Id");
-        if (values != null && values.length > 0)
-            return values[0];
-        return null;
-    }
-
-    /**
-     * Retrieves the value of the MIME header whose name is "Content-Location".
-     *
-     * @return a <code>String</code> giving the value of the MIME header whose
-     *          name is "Content-Location"
-     * @see #setContentLocation
-     */
-    public String getContentLocation() {
-        String[] values = getMimeHeader("Content-Location");
-        if (values != null && values.length > 0)
-            return values[0];
-        return null;
-    }
-
-    /**
-     * Sets the value of the MIME header named "Content-Id"
-     * to the given <code>String</code>.
-     *
-     * @param contentId a <code>String</code> giving the value of the MIME
-     *        header "Content-Id"
-     *
-     * @exception IllegalArgumentException if there is a problem in
-     * setting the content id
-     * @see #getContentId
-     */
-    public void setContentId(String contentId)
-    {
-        setMimeHeader("Content-Id", contentId);
-    }
-    /**
-     * Sets the value of the MIME header "Content-Location"
-     * to the given <code>String</code>.
-     *
-     * @param contentLocation a <code>String</code> giving the value
-     *        of the MIME
-     *        header "Content-Location"
-     * @exception IllegalArgumentException if there is a problem in
-     *            setting the content location.
-     * @see #getContentLocation
-     */
-    public void setContentLocation(String contentLocation)
-    {
-        setMimeHeader("Content-Location", contentLocation);
-    }
-    /**
-     * Removes all MIME headers that match the given name.
-     *
-     * @param header a <code>String</code> giving the name of the MIME header(s) to
-     *               be removed
-     */
-    public abstract void removeMimeHeader(String header);
-
-    /**
-     * Removes all the <code>MimeHeader</code> objects for this
-     * <code>SOAPEnvelope</code> object.
-     */
-    public abstract void removeAllMimeHeaders();
-
-    /**
-     * Gets all the values of the <code>MimeHeader</code> object
-     * in this <code>SOAPPart</code> object that
-     * is identified by the given <code>String</code>.
-     *
-     * @param name the name of the header; example: "Content-Type"
-     * @return a <code>String</code> array giving all the values for the
-     *         specified header
-     * @see #setMimeHeader
-     */
-    public abstract String[] getMimeHeader(String name);
-
-    /**
-     * Changes the first header entry that matches the given header name
-     * so that its value is the given value, adding a new header with the
-     * given name and value if no
-     * existing header is a match. If there is a match, this method clears
-     * all existing values for the first header that matches and sets the
-     * given value instead. If more than one header has
-     * the given name, this method removes all of the matching headers after
-     * the first one.
-     * <P>
-     * Note that RFC822 headers can contain only US-ASCII characters.
-     *
-     * @param   name    a <code>String</code> giving the header name
-     *                  for which to search
-     * @param   value   a <code>String</code> giving the value to be set.
-     *                  This value will be substituted for the current value(s)
-     *                  of the first header that is a match if there is one.
-     *                  If there is no match, this value will be the value for
-     *                  a new <code>MimeHeader</code> object.
-     *
-     * @exception IllegalArgumentException if there was a problem with
-     *            the specified mime header name or value
-     * @see #getMimeHeader
-     */
-    public abstract void setMimeHeader(String name, String value);
-
-    /**
-     * Creates a <code>MimeHeader</code> object with the specified
-     * name and value and adds it to this <code>SOAPPart</code> object.
-     * If a <code>MimeHeader</code> with the specified name already
-     * exists, this method adds the specified value to the already
-     * existing value(s).
-     * <P>
-     * Note that RFC822 headers can contain only US-ASCII characters.
-     *
-     * @param   name    a <code>String</code> giving the header name
-     * @param   value   a <code>String</code> giving the value to be set
-     *                  or added
-     * @exception IllegalArgumentException if there was a problem with
-     *            the specified mime header name or value
-     */
-    public abstract void addMimeHeader(String name, String value);
-
-    /**
-     * Retrieves all the headers for this <code>SOAPPart</code> object
-     * as an iterator over the <code>MimeHeader</code> objects.
-     *
-     * @return  an <code>Iterator</code> object with all of the Mime
-     *          headers for this <code>SOAPPart</code> object
-     */
-    public abstract Iterator getAllMimeHeaders();
-
-    /**
-     * Retrieves all <code>MimeHeader</code> objects that match a name in
-     * the given array.
-     *
-     * @param names a <code>String</code> array with the name(s) of the
-     *        MIME headers to be returned
-     * @return  all of the MIME headers that match one of the names in the
-     *           given array, returned as an <code>Iterator</code> object
-     */
-    public abstract Iterator getMatchingMimeHeaders(String[] names);
-
-    /**
-     * Retrieves all <code>MimeHeader</code> objects whose name does
-     * not match a name in the given array.
-     *
-     * @param names a <code>String</code> array with the name(s) of the
-     *        MIME headers not to be returned
-     * @return  all of the MIME headers in this <code>SOAPPart</code> object
-     *          except those that match one of the names in the
-     *           given array.  The nonmatching MIME headers are returned as an
-     *           <code>Iterator</code> object.
-     */
-    public abstract Iterator getNonMatchingMimeHeaders(String[] names);
-
-    /**
-     * Sets the content of the <code>SOAPEnvelope</code> object with the data
-     * from the given <code>Source</code> object. This <code>Source</code>
-     * must contain a valid SOAP document.
-     *
-     * @param source the <code>javax.xml.transform.Source</code> object with the
-     *        data to be set
-     *
-     * @exception SOAPException if there is a problem in setting the source
-     * @see #getContent
-     */
-    public abstract void setContent(Source source) throws SOAPException;
-
-    /**
-     * Returns the content of the SOAPEnvelope as a JAXP <code>Source</code>
-     * object.
-     *
-     * @return the content as a <code>javax.xml.transform.Source</code> object
-     *
-     * @exception SOAPException if the implementation cannot convert
-     *                          the specified <code>Source</code> object
-     * @see #setContent
-     */
-    public abstract Source getContent() throws SOAPException;
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/Text.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package javax.xml.soap;
-
-/**
- * A representation of a node whose value is text.  A <code>Text</code> object
- * may represent text that is content or text that is a comment.
- *
- * @since 1.6
- */
-public interface Text extends Node, org.w3c.dom.Text {
-
-    /**
-     * Retrieves whether this <code>Text</code> object represents a comment.
-     *
-     * @return <code>true</code> if this <code>Text</code> object is a
-     *         comment; <code>false</code> otherwise
-     */
-    public boolean isComment();
-}
--- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/package.html	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<!--
- Copyright (c) 1993, 2012, Oracle and/or its affiliates. All rights reserved.
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-
- This code is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License version 2 only, as
- published by the Free Software Foundation.  Oracle designates this
- particular file as subject to the "Classpath" exception as provided
- by Oracle in the LICENSE file that accompanied this code.
-
- This code is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- version 2 for more details (a copy is included in the LICENSE file that
- accompanied this code).
-
- You should have received a copy of the GNU General Public License version
- 2 along with this work; if not, write to the Free Software Foundation,
- Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
- Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- or visit www.oracle.com if you need additional information or have any
- questions.
--->
-
-<html>
-<head>
-   
-  <title></title>
-
-</head>
-   <body bgcolor="white">
-    Provides the API for creating and building SOAP messages. This package
- is defined in the <i>SOAP with Attachments API for Java<sup><font
- size="-2">TM</font></sup> (SAAJ) 1.3</i> specification.
-<p> The API in the <code>javax.xml.soap</code> package allows you to do the
- following: </p>
-
-<ul>
-     <li>create a point-to-point connection to a specified endpoint   </li>
-    <li>create a SOAP message   </li>
-    <li>create an XML fragment   </li>
-    <li>add content to the header of a SOAP message   </li>
-    <li>add content to the body of a SOAP message   </li>
-    <li>create attachment parts and add content to them   </li>
-    <li>access/add/modify parts of a SOAP message   </li>
-    <li>create/add/modify SOAP fault information   </li>
-    <li>extract content from a SOAP message   </li>
-    <li>send a SOAP request-response message   </li>
-
-</ul>
-
-<p>   <!-- <h2>Package Specification</h2> -->  <!-- The SAAJ 1.1 specification gives an overview of the  -->
- <!-- <code>javax.xml.soap</code> package and --> <!-- explains how its classes and interfaces work. -->
- <!-- <ul> --> <!--   <li><a href="http://java.sun.com/xml/downloads/jaxm.html"> -->
- <!-- 	SAAJ 1.1 Specification</a> --> <!-- </ul> -->  <!-- <h2>Related Documentation</h2> -->
- <!-- 	For overviews, tutorials, examples, guides, and tool documentation, please see: -->
- <!-- 	<ul> --> <!-- 	  <li><a href="../../../../tutorial/doc/JAXM.html">JAXM Tutorial</a> -->
- <!-- 	  <li><a href="../../../../jaxm/index.html">JAXM Reference Implementation (RI) -->
- <!-- 			  Documentation</a> --> <!-- 	</ul> -->  </p>
-In addition the APIs in the <code>javax.xml.soap</code> package extend
-their  counterparts in the <code>org.w3c.dom</code> package. This means that
-the  <code>SOAPPart</code> of a <code>SOAPMessage</code> is also a DOM Level
-2 <code>Document</code>, and can be manipulated as such by applications,
-tools and libraries that use DOM (see http://www.w3.org/DOM/ for more information).
-It is important to note that, while it is possible to use DOM APIs to add
-ordinary DOM nodes to a SAAJ tree, the SAAJ APIs are still required to return
-SAAJ types when examining or manipulating the tree. In order to accomplish
-this the SAAJ APIs (specifically {@link javax.xml.soap.SOAPElement#getChildElements()})
-are allowed to silently replace objects that are incorrectly typed relative
-to SAAJ requirements with equivalent objects of the required type. These
-replacements must never cause the logical structure of the tree to change,
-so from the perspective of the DOM APIs the tree will remain unchanged. However,
-the physical composition of the tree will have changed so that references
-to the nodes that were replaced will refer to nodes that are no longer a
-part of the tree. The SAAJ APIs are not allowed to make these replacements
-if they are not required so the replacement objects will never subsequently
-be silently replaced by future calls to the SAAJ API.
-<p>
-What this means in
-practical terms is that an application that starts to use SAAJ APIs on a
-tree after manipulating it using DOM APIs must assume that the tree has been
-translated into an all SAAJ tree and that any references to objects within
-the tree that were obtained using DOM APIs are no longer valid. Switching
-from SAAJ APIs to DOM APIs is not allowed to cause invalid references and
-neither is using SAAJ APIs exclusively. It is only switching from using DOM
-APIs on a particular SAAJ tree to using SAAJ APIs that causes the risk of
-invalid references.<br>
-
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/LazyEnvelopeSource.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPException;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+
+/**
+ * LazyEnvelopeSource provides the source to create lazy Envelope
+ *
+ * @author shih-chang.chen@oracle.com
+ */
+public interface LazyEnvelopeSource extends javax.xml.transform.Source {
+    /**
+     * Retrieve payload qname without materializing its contents
+     * @return
+     * @throws SOAPException
+     */
+    public QName getPayloadQName();
+    public XMLStreamReader readToBodyStarTag() throws XMLStreamException;
+    public XMLStreamReader readPayload();
+    public void writePayloadTo(XMLStreamWriter writer)throws XMLStreamException;
+    public boolean isPayloadStreamReader();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/SOAPExceptionImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,196 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj;
+
+import java.io.PrintStream;
+import java.io.PrintWriter;
+
+import javax.xml.soap.SOAPException;
+
+/**
+ * An exception that signals that a SOAP exception has occurred. A
+ * <code>SOAPExceptionImpl</code> object may contain a <code>String</code>
+ * that gives the reason for the exception, an embedded
+ * <code>Throwable</code> object, or both. This class provides methods
+ * for retrieving reason messages and for retrieving the embedded
+ * <code>Throwable</code> object.
+ *
+ * <P> Typical reasons for throwing a <code>SOAPExceptionImpl</code>
+ * object are problems such as difficulty setting a header, not being
+ * able to send a message, and not being able to get a connection with
+ * the provider.  Reasons for embedding a <code>Throwable</code>
+ * object include problems such as input/output errors or a parsing
+ * problem, such as an error in parsing a header.
+ */
+public class SOAPExceptionImpl extends SOAPException {
+    private Throwable cause;
+
+    /**
+     * Constructs a <code>SOAPExceptionImpl</code> object with no
+     * reason or embedded <code>Throwable</code> object.
+     */
+    public SOAPExceptionImpl() {
+        super();
+        this.cause = null;
+    }
+
+    /**
+     * Constructs a <code>SOAPExceptionImpl</code> object with the given
+     * <code>String</code> as the reason for the exception being thrown.
+     *
+     * @param reason a description of what caused the exception
+     */
+    public SOAPExceptionImpl(String reason) {
+        super(reason);
+        this.cause = null;
+    }
+
+    /**
+     * Constructs a <code>SOAPExceptionImpl</code> object with the given
+     * <code>String</code> as the reason for the exception being thrown
+     * and the given <code>Throwable</code> object as an embedded
+     * exception.
+     *
+     * @param reason a description of what caused the exception
+     * @param cause a <code>Throwable</code> object that is to
+     *        be embedded in this <code>SOAPExceptionImpl</code> object
+     */
+    public SOAPExceptionImpl(String reason, Throwable cause) {
+       super (reason);
+       initCause(cause);
+    }
+
+    /**
+     * Constructs a <code>SOAPExceptionImpl</code> object initialized
+     * with the given <code>Throwable</code> object.
+     */
+    public SOAPExceptionImpl(Throwable cause) {
+        super (cause.toString());
+        initCause(cause);
+    }
+
+    /**
+     * Returns the detail message for this <code>SOAPExceptionImpl</code>
+     * object.
+     * <P>
+     * If there is an embedded <code>Throwable</code> object, and if the
+     * <code>SOAPExceptionImpl</code> object has no detail message of its
+     * own, this method will return the detail message from the embedded
+     * <code>Throwable</code> object.
+     *
+     * @return the error or warning message for this
+     *         <code>SOAPExceptionImpl</code> or, if it has none, the
+     *         message of the embedded <code>Throwable</code> object,
+     *         if there is one
+     */
+    public String getMessage() {
+        String message = super.getMessage ();
+        if (message == null && cause != null) {
+            return cause.getMessage();
+        } else {
+            return message;
+        }
+    }
+
+    /**
+     * Returns the <code>Throwable</code> object embedded in this
+     * <code>SOAPExceptionImpl</code> if there is one. Otherwise, this method
+     * returns <code>null</code>.
+     *
+     * @return the embedded <code>Throwable</code> object or <code>null</code>
+     *         if there is none
+     */
+
+    public Throwable getCause() {
+        return cause;
+    }
+
+    /**
+     * Initializes the <code>cause</code> field of this <code>SOAPExceptionImpl</code>
+     * object with the given <code>Throwable</code> object.
+     * <P>
+     * This method can be called at most once.  It is generally called from
+     * within the constructor or immediately after the constructor has
+     * returned a new <code>SOAPExceptionImpl</code> object.
+     * If this <code>SOAPExceptionImpl</code> object was created with the
+     * constructor {@link #SOAPExceptionImpl(Throwable)} or
+     * {@link #SOAPExceptionImpl(String,Throwable)}, meaning that its
+     * <code>cause</code> field already has a value, this method cannot be
+     * called even once.
+     *
+     * @param  cause the <code>Throwable</code> object that caused this
+     *         <code>SOAPExceptionImpl</code> object to be thrown.  The value of this
+     *         parameter is saved for later retrieval by the
+     *         {@link #getCause()} method.  A <tt>null</tt> value is
+     *         permitted and indicates that the cause is nonexistent or
+     *         unknown.
+     * @return  a reference to this <code>SOAPExceptionImpl</code> instance
+     * @throws IllegalArgumentException if <code>cause</code> is this
+     *         <code>Throwable</code> object.  (A <code>Throwable</code> object
+     *         cannot be its own cause.)
+     * @throws IllegalStateException if this <code>SOAPExceptionImpl</code> object
+     *         was created with {@link #SOAPExceptionImpl(Throwable)} or
+     *         {@link #SOAPExceptionImpl(String,Throwable)}, or this
+     *         method has already been called on this <code>SOAPExceptionImpl</code>
+     *         object
+     */
+    public synchronized Throwable initCause(Throwable cause)
+    {
+        if(this.cause != null) {
+            throw new IllegalStateException("Can't override cause");
+        }
+        if(cause == this) {
+            throw new IllegalArgumentException("Self-causation not permitted");
+        }
+        this.cause = cause;
+
+        return this;
+    }
+
+    public void printStackTrace() {
+        super.printStackTrace();
+        if (cause != null) {
+            System.err.println("\nCAUSE:\n");
+            cause.printStackTrace();
+        }
+    }
+
+    public void printStackTrace(PrintStream s) {
+        super.printStackTrace(s);
+        if (cause != null) {
+            s.println("\nCAUSE:\n");
+            cause.printStackTrace(s);
+        }
+    }
+
+    public void printStackTrace(PrintWriter s) {
+        super.printStackTrace(s);
+        if (cause != null) {
+            s.println("\nCAUSE:\n");
+            cause.printStackTrace(s);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/HttpSOAPConnection.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,657 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.client.p2p;
+
+import java.io.*;
+import java.lang.reflect.Method;
+import java.net.*;
+import java.security.*;
+import java.util.Iterator;
+import java.util.StringTokenizer;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.soap.*;
+
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+import com.sun.xml.internal.messaging.saaj.util.*;
+
+/**
+ * This represents a "connection" to the simple HTTP-based provider.
+ *
+ * @author Anil Vijendran (akv@eng.sun.com)
+ * @author Rajiv Mordani (rajiv.mordani@sun.com)
+ * @author Manveen Kaur (manveen.kaur@sun.com)
+ *
+ */
+class HttpSOAPConnection extends SOAPConnection {
+
+    public static final String vmVendor = SAAJUtil.getSystemProperty("java.vendor.url");
+    private static final String sunVmVendor = "http://java.sun.com/";
+    private static final String ibmVmVendor = "http://www.ibm.com/";
+    private static final boolean isSunVM = sunVmVendor.equals(vmVendor) ? true: false;
+    private static final boolean isIBMVM = ibmVmVendor.equals(vmVendor) ? true : false;
+    private static final String JAXM_URLENDPOINT="javax.xml.messaging.URLEndpoint";
+
+    protected static final Logger log =
+        Logger.getLogger(LogDomainConstants.HTTP_CONN_DOMAIN,
+                         "com.sun.xml.internal.messaging.saaj.client.p2p.LocalStrings");
+
+
+    MessageFactory messageFactory = null;
+
+    boolean closed = false;
+
+    public HttpSOAPConnection() throws SOAPException {
+
+        try {
+            messageFactory = MessageFactory.newInstance(SOAPConstants.DYNAMIC_SOAP_PROTOCOL);
+        } catch (NoSuchMethodError ex) {
+            //fallback to default SOAP 1.1 in this case for backward compatibility
+            messageFactory = MessageFactory.newInstance();
+        } catch (Exception ex) {
+            log.log(Level.SEVERE, "SAAJ0001.p2p.cannot.create.msg.factory", ex);
+            throw new SOAPExceptionImpl("Unable to create message factory", ex);
+        }
+    }
+
+    public void close() throws SOAPException {
+        if (closed) {
+            log.severe("SAAJ0002.p2p.close.already.closed.conn");
+            throw new SOAPExceptionImpl("Connection already closed");
+        }
+
+        messageFactory = null;
+        closed = true;
+    }
+
+   public SOAPMessage call(SOAPMessage message, Object endPoint)
+        throws SOAPException {
+        if (closed) {
+            log.severe("SAAJ0003.p2p.call.already.closed.conn");
+            throw new SOAPExceptionImpl("Connection is closed");
+        }
+
+        Class urlEndpointClass = null;
+        ClassLoader loader = Thread.currentThread().getContextClassLoader();
+        try {
+            if (loader != null) {
+                urlEndpointClass = loader.loadClass(JAXM_URLENDPOINT);
+            } else {
+                urlEndpointClass = Class.forName(JAXM_URLENDPOINT);
+            }
+        } catch (ClassNotFoundException ex) {
+            //Do nothing. URLEndpoint is available only when JAXM is there.
+            if (log.isLoggable(Level.FINEST))
+                log.finest("SAAJ0090.p2p.endpoint.available.only.for.JAXM");
+        }
+
+        if (urlEndpointClass != null) {
+            if (urlEndpointClass.isInstance(endPoint)) {
+                String url = null;
+
+                try {
+                    Method m = urlEndpointClass.getMethod("getURL", (Class[])null);
+                    url = (String) m.invoke(endPoint, (Object[])null);
+                } catch (Exception ex) {
+                    // TBD -- exception chaining
+                    log.log(Level.SEVERE,"SAAJ0004.p2p.internal.err",ex);
+                    throw new SOAPExceptionImpl(
+                        "Internal error: " + ex.getMessage());
+                }
+                try {
+                    endPoint = new URL(url);
+                } catch (MalformedURLException mex) {
+                    log.log(Level.SEVERE,"SAAJ0005.p2p.", mex);
+                    throw new SOAPExceptionImpl("Bad URL: " + mex.getMessage());
+                }
+            }
+        }
+
+        if (endPoint instanceof java.lang.String) {
+            try {
+                endPoint = new URL((String) endPoint);
+            } catch (MalformedURLException mex) {
+                log.log(Level.SEVERE, "SAAJ0006.p2p.bad.URL", mex);
+                throw new SOAPExceptionImpl("Bad URL: " + mex.getMessage());
+            }
+        }
+
+        if (endPoint instanceof URL)
+            try {
+                SOAPMessage response = post(message, (URL)endPoint);
+                return response;
+            } catch (Exception ex) {
+                // TBD -- chaining?
+                throw new SOAPExceptionImpl(ex);
+            } else {
+            log.severe("SAAJ0007.p2p.bad.endPoint.type");
+            throw new SOAPExceptionImpl("Bad endPoint type " + endPoint);
+        }
+    }
+
+    SOAPMessage post(SOAPMessage message, URL endPoint) throws SOAPException, IOException {
+        boolean isFailure = false;
+
+        URL url = null;
+        HttpURLConnection httpConnection = null;
+
+        int responseCode = 0;
+        try {
+            if (endPoint.getProtocol().equals("https"))
+                //if(!setHttps)
+                initHttps();
+            // Process the URL
+            URI uri = new URI(endPoint.toString());
+            String userInfo = uri.getRawUserInfo();
+
+            url = endPoint;
+
+            if (dL > 0)
+                d("uri: " + userInfo + " " + url + " " + uri);
+
+            // TBD
+            //    Will deal with https later.
+            if (!url.getProtocol().equalsIgnoreCase("http")
+                && !url.getProtocol().equalsIgnoreCase("https")) {
+                log.severe("SAAJ0052.p2p.protocol.mustbe.http.or.https");
+                throw new IllegalArgumentException(
+                    "Protocol "
+                        + url.getProtocol()
+                        + " not supported in URL "
+                        + url);
+            }
+            httpConnection = (HttpURLConnection) createConnection(url);
+
+            httpConnection.setRequestMethod("POST");
+
+            httpConnection.setDoOutput(true);
+            httpConnection.setDoInput(true);
+            httpConnection.setUseCaches(false);
+            httpConnection.setInstanceFollowRedirects(true);
+
+            if (message.saveRequired())
+                message.saveChanges();
+
+            MimeHeaders headers = message.getMimeHeaders();
+
+            Iterator it = headers.getAllHeaders();
+            boolean hasAuth = false; // true if we find explicit Auth header
+            while (it.hasNext()) {
+                MimeHeader header = (MimeHeader) it.next();
+
+                String[] values = headers.getHeader(header.getName());
+                if (values.length == 1)
+                    httpConnection.setRequestProperty(
+                        header.getName(),
+                        header.getValue());
+                else {
+                    StringBuffer concat = new StringBuffer();
+                    int i = 0;
+                    while (i < values.length) {
+                        if (i != 0)
+                            concat.append(',');
+                        concat.append(values[i]);
+                        i++;
+                    }
+
+                    httpConnection.setRequestProperty(
+                        header.getName(),
+                        concat.toString());
+                }
+
+                if ("Authorization".equals(header.getName())) {
+                    hasAuth = true;
+                    if (log.isLoggable(Level.FINE))
+                        log.fine("SAAJ0091.p2p.https.auth.in.POST.true");
+                }
+            }
+
+            if (!hasAuth && userInfo != null) {
+                initAuthUserInfo(httpConnection, userInfo);
+            }
+
+            OutputStream out = httpConnection.getOutputStream();
+            try {
+                message.writeTo(out);
+                out.flush();
+            } finally {
+                out.close();
+            }
+
+            httpConnection.connect();
+
+            try {
+
+                responseCode = httpConnection.getResponseCode();
+
+                // let HTTP_INTERNAL_ERROR (500) through because it is used for SOAP faults
+                if (responseCode == HttpURLConnection.HTTP_INTERNAL_ERROR) {
+                    isFailure = true;
+                }
+                //else if (responseCode != HttpURLConnection.HTTP_OK)
+                //else if (!(responseCode >= HttpURLConnection.HTTP_OK && responseCode < 207))
+                else if ((responseCode / 100) != 2) {
+                    log.log(Level.SEVERE,
+                            "SAAJ0008.p2p.bad.response",
+                            new String[] {httpConnection.getResponseMessage()});
+                    throw new SOAPExceptionImpl(
+                        "Bad response: ("
+                            + responseCode
+                            + httpConnection.getResponseMessage());
+
+                }
+            } catch (IOException e) {
+                // on JDK1.3.1_01, we end up here, but then getResponseCode() succeeds!
+                responseCode = httpConnection.getResponseCode();
+                if (responseCode == HttpURLConnection.HTTP_INTERNAL_ERROR) {
+                    isFailure = true;
+                } else {
+                    throw e;
+                }
+
+            }
+
+        } catch (SOAPException ex) {
+            throw ex;
+        } catch (Exception ex) {
+            log.severe("SAAJ0009.p2p.msg.send.failed");
+            throw new SOAPExceptionImpl("Message send failed", ex);
+        }
+
+        SOAPMessage response = null;
+        InputStream httpIn = null;
+        if (responseCode == HttpURLConnection.HTTP_OK || isFailure) {
+            try {
+                MimeHeaders headers = new MimeHeaders();
+
+                String key, value;
+
+                // Header field 0 is the status line so we skip it.
+
+                int i = 1;
+
+                while (true) {
+                    key = httpConnection.getHeaderFieldKey(i);
+                    value = httpConnection.getHeaderField(i);
+
+                    if (key == null && value == null)
+                        break;
+
+                    if (key != null) {
+                        StringTokenizer values =
+                            new StringTokenizer(value, ",");
+                        while (values.hasMoreTokens())
+                            headers.addHeader(key, values.nextToken().trim());
+                    }
+                    i++;
+                }
+
+                httpIn =
+                    (isFailure
+                        ? httpConnection.getErrorStream()
+                        : httpConnection.getInputStream());
+
+                byte[] bytes = readFully(httpIn);
+
+                int length =
+                    httpConnection.getContentLength() == -1
+                        ? bytes.length
+                        : httpConnection.getContentLength();
+
+                // If no reply message is returned,
+                // content-Length header field value is expected to be zero.
+                if (length == 0) {
+                    response = null;
+                    log.warning("SAAJ0014.p2p.content.zero");
+                } else {
+                    ByteInputStream in = new ByteInputStream(bytes, length);
+                    response = messageFactory.createMessage(headers, in);
+                }
+
+            } catch (SOAPException ex) {
+                throw ex;
+            } catch (Exception ex) {
+                log.log(Level.SEVERE,"SAAJ0010.p2p.cannot.read.resp", ex);
+                throw new SOAPExceptionImpl(
+                    "Unable to read response: " + ex.getMessage());
+            } finally {
+               if (httpIn != null)
+                   httpIn.close();
+               httpConnection.disconnect();
+            }
+        }
+        return response;
+    }
+
+    // Object identifies where the request should be sent.
+    // It is required to support objects of type String and java.net.URL.
+
+    public SOAPMessage get(Object endPoint) throws SOAPException {
+        if (closed) {
+            log.severe("SAAJ0011.p2p.get.already.closed.conn");
+            throw new SOAPExceptionImpl("Connection is closed");
+        }
+        Class urlEndpointClass = null;
+
+        try {
+            urlEndpointClass = Class.forName("javax.xml.messaging.URLEndpoint");
+        } catch (Exception ex) {
+            //Do nothing. URLEndpoint is available only when JAXM is there.
+        }
+
+        if (urlEndpointClass != null) {
+            if (urlEndpointClass.isInstance(endPoint)) {
+                String url = null;
+
+                try {
+                    Method m = urlEndpointClass.getMethod("getURL", (Class[])null);
+                    url = (String) m.invoke(endPoint, (Object[])null);
+                } catch (Exception ex) {
+                    log.severe("SAAJ0004.p2p.internal.err");
+                    throw new SOAPExceptionImpl(
+                        "Internal error: " + ex.getMessage());
+                }
+                try {
+                    endPoint = new URL(url);
+                } catch (MalformedURLException mex) {
+                    log.severe("SAAJ0005.p2p.");
+                    throw new SOAPExceptionImpl("Bad URL: " + mex.getMessage());
+                }
+            }
+        }
+
+        if (endPoint instanceof java.lang.String) {
+            try {
+                endPoint = new URL((String) endPoint);
+            } catch (MalformedURLException mex) {
+                log.severe("SAAJ0006.p2p.bad.URL");
+                throw new SOAPExceptionImpl("Bad URL: " + mex.getMessage());
+            }
+        }
+
+        if (endPoint instanceof URL)
+            try {
+                SOAPMessage response = doGet((URL)endPoint);
+                return response;
+            } catch (Exception ex) {
+                throw new SOAPExceptionImpl(ex);
+            } else
+            throw new SOAPExceptionImpl("Bad endPoint type " + endPoint);
+    }
+
+    SOAPMessage doGet(URL endPoint) throws SOAPException, IOException {
+        boolean isFailure = false;
+
+        URL url = null;
+        HttpURLConnection httpConnection = null;
+
+        int responseCode = 0;
+        try {
+            /// Is https GET allowed??
+            if (endPoint.getProtocol().equals("https"))
+                initHttps();
+            // Process the URL
+            URI uri = new URI(endPoint.toString());
+            String userInfo = uri.getRawUserInfo();
+
+            url = endPoint;
+
+            if (dL > 0)
+                d("uri: " + userInfo + " " + url + " " + uri);
+
+            // TBD
+            //    Will deal with https later.
+            if (!url.getProtocol().equalsIgnoreCase("http")
+                && !url.getProtocol().equalsIgnoreCase("https")) {
+                log.severe("SAAJ0052.p2p.protocol.mustbe.http.or.https");
+                throw new IllegalArgumentException(
+                    "Protocol "
+                        + url.getProtocol()
+                        + " not supported in URL "
+                        + url);
+            }
+            httpConnection = (HttpURLConnection) createConnection(url);
+
+            httpConnection.setRequestMethod("GET");
+
+            httpConnection.setDoOutput(true);
+            httpConnection.setDoInput(true);
+            httpConnection.setUseCaches(false);
+            httpConnection.setFollowRedirects(true);
+
+            httpConnection.connect();
+
+            try {
+
+                responseCode = httpConnection.getResponseCode();
+
+                // let HTTP_INTERNAL_ERROR (500) through because it is used for SOAP faults
+                if (responseCode == HttpURLConnection.HTTP_INTERNAL_ERROR) {
+                    isFailure = true;
+                } else if ((responseCode / 100) != 2) {
+                    log.log(Level.SEVERE,
+                            "SAAJ0008.p2p.bad.response",
+                            new String[] { httpConnection.getResponseMessage()});
+                    throw new SOAPExceptionImpl(
+                        "Bad response: ("
+                            + responseCode
+                            + httpConnection.getResponseMessage());
+
+                }
+            } catch (IOException e) {
+                // on JDK1.3.1_01, we end up here, but then getResponseCode() succeeds!
+                responseCode = httpConnection.getResponseCode();
+                if (responseCode == HttpURLConnection.HTTP_INTERNAL_ERROR) {
+                    isFailure = true;
+                } else {
+                    throw e;
+                }
+
+            }
+
+        } catch (SOAPException ex) {
+            throw ex;
+        } catch (Exception ex) {
+            log.severe("SAAJ0012.p2p.get.failed");
+            throw new SOAPExceptionImpl("Get failed", ex);
+        }
+
+        SOAPMessage response = null;
+        InputStream httpIn = null;
+        if (responseCode == HttpURLConnection.HTTP_OK || isFailure) {
+            try {
+                MimeHeaders headers = new MimeHeaders();
+
+                String key, value;
+
+                // Header field 0 is the status line so we skip it.
+
+                int i = 1;
+
+                while (true) {
+                    key = httpConnection.getHeaderFieldKey(i);
+                    value = httpConnection.getHeaderField(i);
+
+                    if (key == null && value == null)
+                        break;
+
+                    if (key != null) {
+                        StringTokenizer values =
+                            new StringTokenizer(value, ",");
+                        while (values.hasMoreTokens())
+                            headers.addHeader(key, values.nextToken().trim());
+                    }
+                    i++;
+                }
+
+                httpIn =
+                        (isFailure
+                        ? httpConnection.getErrorStream()
+                        : httpConnection.getInputStream());
+                // If no reply message is returned,
+                // content-Length header field value is expected to be zero.
+                // java SE 6 documentation says :
+                // available() : an estimate of the number of bytes that can be read
+                //(or skipped over) from this input stream without blocking
+                //or 0 when it reaches the end of the input stream.
+                if ((httpIn == null )
+                        || (httpConnection.getContentLength() == 0)
+                        || (httpIn.available() == 0)) {
+                    response = null;
+                    log.warning("SAAJ0014.p2p.content.zero");
+                } else {
+                    response = messageFactory.createMessage(headers, httpIn);
+                }
+
+            } catch (SOAPException ex) {
+                throw ex;
+            } catch (Exception ex) {
+                log.log(Level.SEVERE,
+                        "SAAJ0010.p2p.cannot.read.resp",
+                        ex);
+                throw new SOAPExceptionImpl(
+                    "Unable to read response: " + ex.getMessage());
+            } finally {
+               if (httpIn != null)
+                   httpIn.close();
+               httpConnection.disconnect();
+            }
+        }
+        return response;
+    }
+
+    private byte[] readFully(InputStream istream) throws IOException {
+        ByteArrayOutputStream bout = new ByteArrayOutputStream();
+        byte[] buf = new byte[1024];
+        int num = 0;
+
+        while ((num = istream.read(buf)) != -1) {
+            bout.write(buf, 0, num);
+        }
+
+        byte[] ret = bout.toByteArray();
+
+        return ret;
+    }
+
+    //private static String SSL_PKG = "com.sun.net.ssl.internal.www.protocol";
+    //private static String SSL_PROVIDER =
+      //  "com.sun.net.ssl.internal.ssl.Provider";
+    private static final String SSL_PKG;
+    private static final String SSL_PROVIDER;
+
+    static {
+        if (isIBMVM) {
+            SSL_PKG ="com.ibm.net.ssl.internal.www.protocol";
+            SSL_PROVIDER ="com.ibm.net.ssl.internal.ssl.Provider";
+        } else {
+            //if not IBM VM default to Sun.
+            SSL_PKG = "com.sun.net.ssl.internal.www.protocol";
+            SSL_PROVIDER ="com.sun.net.ssl.internal.ssl.Provider";
+        }
+    }
+
+    private void initHttps() {
+        //if(!setHttps) {
+        String pkgs = SAAJUtil.getSystemProperty("java.protocol.handler.pkgs");
+        if (log.isLoggable(Level.FINE))
+            log.log(Level.FINE, "SAAJ0053.p2p.providers", new String[] { pkgs });
+
+        if (pkgs == null || pkgs.indexOf(SSL_PKG) < 0) {
+            if (pkgs == null)
+                pkgs = SSL_PKG;
+            else
+                pkgs = pkgs + "|" + SSL_PKG;
+            System.setProperty("java.protocol.handler.pkgs", pkgs);
+            if (log.isLoggable(Level.FINE))
+                log.log(Level.FINE, "SAAJ0054.p2p.set.providers",
+                        new String[] { pkgs });
+            try {
+                Class c = Class.forName(SSL_PROVIDER);
+                Provider p = (Provider) c.newInstance();
+                Security.addProvider(p);
+                if (log.isLoggable(Level.FINE))
+                    log.log(Level.FINE, "SAAJ0055.p2p.added.ssl.provider",
+                            new String[] { SSL_PROVIDER });
+                //System.out.println("Added SSL_PROVIDER " + SSL_PROVIDER);
+                //setHttps = true;
+            } catch (Exception ex) {
+            }
+        }
+        //}
+    }
+
+    private void initAuthUserInfo(HttpURLConnection conn, String userInfo) {
+        String user;
+        String password;
+        if (userInfo != null) { // get the user and password
+            //System.out.println("UserInfo= " + userInfo );
+            int delimiter = userInfo.indexOf(':');
+            if (delimiter == -1) {
+                user = ParseUtil.decode(userInfo);
+                password = null;
+            } else {
+                user = ParseUtil.decode(userInfo.substring(0, delimiter++));
+                password = ParseUtil.decode(userInfo.substring(delimiter));
+            }
+
+            String plain = user + ":";
+            byte[] nameBytes = plain.getBytes();
+            byte[] passwdBytes = (password == null ? new byte[0] : password
+                    .getBytes());
+
+            // concatenate user name and password bytes and encode them
+            byte[] concat = new byte[nameBytes.length + passwdBytes.length];
+
+            System.arraycopy(nameBytes, 0, concat, 0, nameBytes.length);
+            System.arraycopy(
+                passwdBytes,
+                0,
+                concat,
+                nameBytes.length,
+                passwdBytes.length);
+            String auth = "Basic " + new String(Base64.encode(concat));
+            conn.setRequestProperty("Authorization", auth);
+            if (dL > 0)
+                d("Adding auth " + auth);
+        }
+    }
+
+    private static final int dL = 0;
+    private void d(String s) {
+        log.log(Level.SEVERE,
+                "SAAJ0013.p2p.HttpSOAPConnection",
+                new String[] { s });
+        System.err.println("HttpSOAPConnection: " + s);
+    }
+
+    private java.net.HttpURLConnection createConnection(URL endpoint)
+        throws IOException {
+        return (HttpURLConnection) endpoint.openConnection();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/HttpSOAPConnectionFactory.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.client.p2p;
+
+import javax.xml.soap.*;
+
+/**
+ * Implementation of the SOAPConnectionFactory
+ *
+ * @author Anil Vijendran (anil@sun.com)
+ */
+public class HttpSOAPConnectionFactory extends SOAPConnectionFactory {
+
+    public SOAPConnection createConnection()
+        throws SOAPException
+    {
+        return new HttpSOAPConnection();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,58 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages
+# Error messages
+SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: Unable to create Message Factory
+SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: Connection already closed (from close method)
+SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: Connection already closed (from call)
+SAAJ0004.p2p.internal.err=SAAJ0004: Internal error
+SAAJ0005.p2p.=SAAJ0005: Bad URL (endPoint instance of javax.xml.messaging.URLEndpoint)
+# 0005 : getURL failed on javax.xml.messaging.URLEndpoint
+SAAJ0006.p2p.bad.URL=SAAJ0006: Bad URL (endPoint instance of String)
+SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: Bad endPoint type (endPoint instance of URL)
+SAAJ0008.p2p.bad.response=SAAJ0008: Bad Response; {0}
+SAAJ0009.p2p.msg.send.failed=SAAJ0009: Message send failed
+SAAJ0010.p2p.cannot.read.resp=SAAJ0010: Unable to read response
+SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: Connection already closed (from get)
+SAAJ0012.p2p.get.failed=SAAJ0012: Get failed
+SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0}
+SAAJ0014.p2p.content.zero=SAAJ0014: Invalid reply message. Content length of reply was zero.
+
+# Debug messages
+SAAJ0050.p2p.proxy.host=SAAJ0050: Proxy host: {0}
+SAAJ0051.p2p.proxy.port=SAAJ0051: Proxy Port: {0}
+SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: Protocol not supported in URL, must be http or https
+# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
+SAAJ0053.p2p.providers=SAAJ0053: Providers {0}
+# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
+SAAJ0054.p2p.set.providers=SAAJ0054: Setting Providers {0}
+# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider"
+SAAJ0055.p2p.added.ssl.provider=SAAJ0055: Added SSL_PROVIDER {0}
+
+# Trace messages
+SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: URLEndpoint is available only when JAXM is there
+SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: HTTPS Authorization in POST set to true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_de.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,58 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages
+# Error messages
+SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: Nachrichten-Factory kann nicht erstellt werden
+SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: Verbindung ist bereits beendet (mit close-Methode)
+SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: Verbindung ist bereits beendet (mit call)
+SAAJ0004.p2p.internal.err=SAAJ0004: Interner Fehler
+SAAJ0005.p2p.=SAAJ0005: Ung\u00FCltige URL (endPoint-Instanz von javax.xml.messaging.URLEndpoint)
+# 0005 : getURL failed on javax.xml.messaging.URLEndpoint
+SAAJ0006.p2p.bad.URL=SAAJ0006: Ung\u00FCltige URL (endPoint-Instanz von Zeichenfolge)
+SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: Ung\u00FCltiger endPoint-Typ (endPoint-Instanz von URL)
+SAAJ0008.p2p.bad.response=SAAJ0008: Ung\u00FCltige Antwort; {0}
+SAAJ0009.p2p.msg.send.failed=SAAJ0009: Nachricht konnte nicht gesendet werden
+SAAJ0010.p2p.cannot.read.resp=SAAJ0010: Antwort konnte nicht gelesen werden
+SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: Verbindung ist bereits beendet (mit get)
+SAAJ0012.p2p.get.failed=SAAJ0012: Get-Vorgang nicht erfolgreich
+SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0}
+SAAJ0014.p2p.content.zero=SAAJ0014: Ung\u00FCltige Antwortnachricht. Contentl\u00E4nge von Antwort war null.
+
+# Debug messages
+SAAJ0050.p2p.proxy.host=SAAJ0050: Proxyhost: {0}
+SAAJ0051.p2p.proxy.port=SAAJ0051: Proxyport: {0}
+SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: Protokoll in URL nicht unterst\u00FCtzt, muss http oder https sein
+# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
+SAAJ0053.p2p.providers=SAAJ0053: Provider {0}
+# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
+SAAJ0054.p2p.set.providers=SAAJ0054: Provider {0} werden festgelegt
+# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider"
+SAAJ0055.p2p.added.ssl.provider=SAAJ0055: SSL_PROVIDER {0} hinzugef\u00FCgt
+
+# Trace messages
+SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: URLEndpoint ist nur verf\u00FCgbar, wenn JAXM vorhanden ist
+SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: HTTPS-Autorisierung in POST auf "True" festgelegt
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_es.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,58 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages
+# Error messages
+SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: no se ha podido crear la f\u00E1brica de mensajes
+SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: la conexi\u00F3n ya est\u00E1 cerrada (desde el m\u00E9todo de cierre)
+SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: la conexi\u00F3n ya est\u00E1 cerrada (desde la llamada)
+SAAJ0004.p2p.internal.err=SAAJ0004: error interno
+SAAJ0005.p2p.=SAAJ0005: URL err\u00F3nea (instancia endPoint de javax.xml.messaging.URLEndpoint)
+# 0005 : getURL failed on javax.xml.messaging.URLEndpoint
+SAAJ0006.p2p.bad.URL=SAAJ0006: URL err\u00F3nea (instancia endPoint de String)
+SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: tipo endPoint err\u00F3neo (instancia endPoint de URL)
+SAAJ0008.p2p.bad.response=SAAJ0008: respuesta err\u00F3nea; {0}
+SAAJ0009.p2p.msg.send.failed=SAAJ0009: fallo de env\u00EDo de mensaje
+SAAJ0010.p2p.cannot.read.resp=SAAJ0010: no se ha podido leer la respuesta
+SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: la conexi\u00F3n ya est\u00E1 cerrada (desde la obtenci\u00F3n)
+SAAJ0012.p2p.get.failed=SAAJ0012: fallo de obtenci\u00F3n
+SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0}
+SAAJ0014.p2p.content.zero=SAAJ0014: mensaje de respuesta no v\u00E1lido. La longitud del contenido de respuesta es cero.
+
+# Debug messages
+SAAJ0050.p2p.proxy.host=SAAJ0050: Host de proxy: {0}
+SAAJ0051.p2p.proxy.port=SAAJ0051: Puerto de proxy: {0}
+SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: el protocolo no est\u00E1 soportado en la URL. Debe ser http o https
+# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
+SAAJ0053.p2p.providers=SAAJ0053: proveedores {0}
+# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
+SAAJ0054.p2p.set.providers=SAAJ0054: definici\u00F3n de Proveedores {0}
+# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider"
+SAAJ0055.p2p.added.ssl.provider=SAAJ0055: se ha agregado SSL_PROVIDER {0}
+
+# Trace messages
+SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: URLEndpoint s\u00F3lo est\u00E1 disponible cuando JAXM est\u00E1 all\u00ED
+SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: la autorizaci\u00F3n de HTTPS en POST se ha definido en true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_fr.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,58 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages
+# Error messages
+SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001 : impossible de cr\u00E9er une fabrique de messages
+SAAJ0002.p2p.close.already.closed.conn=SAAJ0002 : connexion d\u00E9j\u00E0 ferm\u00E9e (\u00E0 partir de la m\u00E9thode de fermeture)
+SAAJ0003.p2p.call.already.closed.conn=SAAJ0003 : connexion d\u00E9j\u00E0 ferm\u00E9e (\u00E0 partir de l'appel)
+SAAJ0004.p2p.internal.err=SAAJ0004 : erreur interne
+SAAJ0005.p2p.=SAAJ0005 : URL incorrecte (instance d'adresse de javax.xml.messaging.URLEndpoint)
+# 0005 : getURL failed on javax.xml.messaging.URLEndpoint
+SAAJ0006.p2p.bad.URL=SAAJ0006 : URL incorrecte (instance d'adresse de la cha\u00EEne)
+SAAJ0007.p2p.bad.endPoint.type=SAAJ0007 : type d'adresse incorrect (instance d'adresse de l'URL)
+SAAJ0008.p2p.bad.response=SAAJ0008 : r\u00E9ponse incorrecte ; {0}
+SAAJ0009.p2p.msg.send.failed=SAAJ0009 : \u00E9chec de l'envoi du message
+SAAJ0010.p2p.cannot.read.resp=SAAJ0010 : impossible de lire la r\u00E9ponse
+SAAJ0011.p2p.get.already.closed.conn=SAAJ0011 : connexion d\u00E9j\u00E0 ferm\u00E9e (\u00E0 partir de la m\u00E9thode get)
+SAAJ0012.p2p.get.failed=SAAJ0012 : \u00E9chec de la m\u00E9thode get
+SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013 : HttpSOAPConnection : {0}
+SAAJ0014.p2p.content.zero=SAAJ0014 : message de r\u00E9ponse non valide. La longueur du contenu de la r\u00E9ponse \u00E9tait de z\u00E9ro.
+
+# Debug messages
+SAAJ0050.p2p.proxy.host=SAAJ0050 : h\u00F4te proxy : {0}
+SAAJ0051.p2p.proxy.port=SAAJ0051 : port proxy : {0}
+SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052 : protocole non pris en charge dans l'URL, il doit s'agir de http ou https
+# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
+SAAJ0053.p2p.providers=SAAJ0053 : fournisseurs {0}
+# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
+SAAJ0054.p2p.set.providers=SAAJ0054 : d\u00E9finition des fournisseurs {0}
+# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider"
+SAAJ0055.p2p.added.ssl.provider=SAAJ0055 : SSL_PROVIDER {0} ajout\u00E9
+
+# Trace messages
+SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090 : URLEndpoint est disponible uniquement lorsque JAXM est pr\u00E9sent
+SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091 : autorisation HTTPS dans POST d\u00E9finie sur True
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_it.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,58 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages
+# Error messages
+SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: Impossibile creare il message factory
+SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: Connessione gi\u00E0 chiusa (dal metodo close)
+SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: Connessione gi\u00E0 chiusa (dal metodo call)
+SAAJ0004.p2p.internal.err=SAAJ0004: Errore interno
+SAAJ0005.p2p.=SAAJ0005: URL non valido (istanza endPoint di javax.xml.messaging.URLEndpoint)
+# 0005 : getURL failed on javax.xml.messaging.URLEndpoint
+SAAJ0006.p2p.bad.URL=SAAJ0006: URL non valido (istanza endPoint di String)
+SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: Tipo endPoint non valido (istanza endPoint dell'URL)
+SAAJ0008.p2p.bad.response=SAAJ0008: Risposta non valida; {0}
+SAAJ0009.p2p.msg.send.failed=SAAJ0009: Invio del messaggio non riuscito
+SAAJ0010.p2p.cannot.read.resp=SAAJ0010: Impossibile leggere la risposta
+SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: Connessione gi\u00E0 chiusa (dal metodo get)
+SAAJ0012.p2p.get.failed=SAAJ0012: Metodo get non riuscito
+SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0}
+SAAJ0014.p2p.content.zero=SAAJ0014: Messaggio di risposta non valido. La lunghezza del contenuto della risposta era pari a zero.
+
+# Debug messages
+SAAJ0050.p2p.proxy.host=SAAJ0050: Host proxy: {0}
+SAAJ0051.p2p.proxy.port=SAAJ0051: Porta proxy: {0}
+SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: Protocollo non supportato nell'URL, deve essere http o https
+# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
+SAAJ0053.p2p.providers=SAAJ0053: Provider {0}
+# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
+SAAJ0054.p2p.set.providers=SAAJ0054: Impostazione dei provider {0}
+# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider"
+SAAJ0055.p2p.added.ssl.provider=SAAJ0055: SSL_PROVIDER {0} aggiunto
+
+# Trace messages
+SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: L'endpoint dell'URL \u00E8 disponibile solo quando \u00E8 presente JAXM
+SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: Autorizzazione HTTPS in POST impostata su true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_ja.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,58 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages
+# Error messages
+SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: \u30E1\u30C3\u30BB\u30FC\u30B8\u30FB\u30D5\u30A1\u30AF\u30C8\u30EA\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093
+SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: (close\u30E1\u30BD\u30C3\u30C9\u304B\u3089)\u63A5\u7D9A\u306F\u3059\u3067\u306B\u30AF\u30ED\u30FC\u30BA\u3055\u308C\u3066\u3044\u307E\u3059
+SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: (call\u304B\u3089)\u63A5\u7D9A\u306F\u3059\u3067\u306B\u30AF\u30ED\u30FC\u30BA\u3055\u308C\u3066\u3044\u307E\u3059
+SAAJ0004.p2p.internal.err=SAAJ0004: \u5185\u90E8\u30A8\u30E9\u30FC
+SAAJ0005.p2p.=SAAJ0005: \u7121\u52B9\u306AURL (javax.xml.messaging.URLEndpoint\u306EendPoint\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9)
+# 0005 : getURL failed on javax.xml.messaging.URLEndpoint
+SAAJ0006.p2p.bad.URL=SAAJ0006: \u7121\u52B9\u306AURL (\u6587\u5B57\u5217\u306EendPoint\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9)
+SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: \u7121\u52B9\u306AendPoint\u30BF\u30A4\u30D7(URL\u306EendPoint\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9)
+SAAJ0008.p2p.bad.response=SAAJ0008: \u4E0D\u6B63\u306A\u30EC\u30B9\u30DD\u30F3\u30B9; {0}
+SAAJ0009.p2p.msg.send.failed=SAAJ0009: \u30E1\u30C3\u30BB\u30FC\u30B8\u9001\u4FE1\u306B\u5931\u6557\u3057\u307E\u3057\u305F
+SAAJ0010.p2p.cannot.read.resp=SAAJ0010: \u30EC\u30B9\u30DD\u30F3\u30B9\u3092\u8AAD\u307F\u53D6\u308C\u307E\u305B\u3093
+SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: (get\u304B\u3089)\u63A5\u7D9A\u306F\u3059\u3067\u306B\u30AF\u30ED\u30FC\u30BA\u3055\u308C\u3066\u3044\u307E\u3059
+SAAJ0012.p2p.get.failed=SAAJ0012: \u53D6\u5F97\u306B\u5931\u6557\u3057\u307E\u3057\u305F
+SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0}
+SAAJ0014.p2p.content.zero=SAAJ0014: \u5FDC\u7B54\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u7121\u52B9\u3067\u3059\u3002\u5FDC\u7B54\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u9577\u304C\u30BC\u30ED\u3067\u3057\u305F\u3002
+
+# Debug messages
+SAAJ0050.p2p.proxy.host=SAAJ0050: \u30D7\u30ED\u30AD\u30B7\u30FB\u30DB\u30B9\u30C8: {0}
+SAAJ0051.p2p.proxy.port=SAAJ0051: \u30D7\u30ED\u30AD\u30B7\u30FB\u30DD\u30FC\u30C8: {0}
+SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: URL\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u30D7\u30ED\u30C8\u30B3\u30EB\u3067\u3059\u3002http\u307E\u305F\u306Fhttps\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
+SAAJ0053.p2p.providers=SAAJ0053: \u30D7\u30ED\u30D0\u30A4\u30C0{0}
+# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
+SAAJ0054.p2p.set.providers=SAAJ0054: \u30D7\u30ED\u30D0\u30A4\u30C0{0}\u3092\u8A2D\u5B9A\u3057\u3066\u3044\u307E\u3059
+# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider"
+SAAJ0055.p2p.added.ssl.provider=SAAJ0055: SSL_PROVIDER {0}\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3057\u305F
+
+# Trace messages
+SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: URLEndpoint\u3092\u4F7F\u7528\u3067\u304D\u308B\u306E\u306FJAXM\u304C\u5B58\u5728\u3059\u308B\u5834\u5408\u306E\u307F\u3067\u3059
+SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: POST\u306EHTTPS\u8A8D\u8A3C\u304Ctrue\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_ko.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,58 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages
+# Error messages
+SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: \uBA54\uC2DC\uC9C0 \uD329\uD1A0\uB9AC\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: close \uBA54\uC18C\uB4DC\uC5D0\uC11C \uC811\uC18D\uC774 \uC774\uBBF8 \uD574\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: \uD638\uCD9C\uC5D0\uC11C \uC811\uC18D\uC774 \uC774\uBBF8 \uD574\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+SAAJ0004.p2p.internal.err=SAAJ0004: \uB0B4\uBD80 \uC624\uB958
+SAAJ0005.p2p.=SAAJ0005: URL(javax.xml.messaging.URLEndpoint\uC758 \uB05D\uC810 \uC778\uC2A4\uD134\uC2A4)\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+# 0005 : getURL failed on javax.xml.messaging.URLEndpoint
+SAAJ0006.p2p.bad.URL=SAAJ0006: URL(\uBB38\uC790\uC5F4\uC758 \uB05D\uC810 \uC778\uC2A4\uD134\uC2A4)\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: \uB05D\uC810 \uC720\uD615(URL\uC758 \uB05D\uC810 \uC778\uC2A4\uD134\uC2A4)\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+SAAJ0008.p2p.bad.response=SAAJ0008: \uC798\uBABB\uB41C \uC751\uB2F5: {0}
+SAAJ0009.p2p.msg.send.failed=SAAJ0009: \uBA54\uC2DC\uC9C0 \uC804\uC1A1\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+SAAJ0010.p2p.cannot.read.resp=SAAJ0010: \uC751\uB2F5\uC744 \uC77D\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: \uAC00\uC838\uC624\uAE30\uC5D0\uC11C \uC811\uC18D\uC774 \uC774\uBBF8 \uD574\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+SAAJ0012.p2p.get.failed=SAAJ0012: \uAC00\uC838\uC624\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0}
+SAAJ0014.p2p.content.zero=SAAJ0014: \uD68C\uC2E0 \uBA54\uC2DC\uC9C0\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. \uD68C\uC2E0\uC758 \uCF58\uD150\uCE20 \uAE38\uC774\uAC00 0\uC785\uB2C8\uB2E4.
+
+# Debug messages
+SAAJ0050.p2p.proxy.host=SAAJ0050: \uD504\uB85D\uC2DC \uD638\uC2A4\uD2B8: {0}
+SAAJ0051.p2p.proxy.port=SAAJ0051: \uD504\uB85D\uC2DC \uD3EC\uD2B8: {0}
+SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: URL\uC5D0\uC11C \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uB294 \uD504\uB85C\uD1A0\uCF5C\uC785\uB2C8\uB2E4. http \uB610\uB294 https\uC5EC\uC57C \uD569\uB2C8\uB2E4.
+# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
+SAAJ0053.p2p.providers=SAAJ0053: {0} \uC81C\uACF5\uC790
+# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
+SAAJ0054.p2p.set.providers=SAAJ0054: {0} \uC81C\uACF5\uC790\uB97C \uC124\uC815\uD558\uB294 \uC911
+# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider"
+SAAJ0055.p2p.added.ssl.provider=SAAJ0055: SSL_PROVIDER {0}\uC744(\uB97C) \uCD94\uAC00\uD588\uC2B5\uB2C8\uB2E4.
+
+# Trace messages
+SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: JAXM\uC774 \uC788\uB294 \uACBD\uC6B0\uC5D0\uB9CC URLEndpoint\uB97C \uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
+SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: POST\uC758 HTTPS \uAD8C\uD55C \uBD80\uC5EC\uAC00 true\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_pt_BR.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,58 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages
+# Error messages
+SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: n\u00E3o \u00E9 poss\u00EDvel criar a factory da mensagem
+SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: a conex\u00E3o j\u00E1 foi fechada (do m\u00E9todo de fechamento)
+SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: conex\u00E3o j\u00E1 fechada (da chamada)
+SAAJ0004.p2p.internal.err=SAAJ0004: erro interno
+SAAJ0005.p2p.=SAAJ0005: URL incorreto (a inst\u00E2ncia do endPoint de javax.xml.messaging.URLEndpoint)
+# 0005 : getURL failed on javax.xml.messaging.URLEndpoint
+SAAJ0006.p2p.bad.URL=SAAJ0006: URL incorreto (inst\u00E2ncia de endPoint da String)
+SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: tipo de endPoint incorreto (inst\u00E2ncia de endPoint do URL)
+SAAJ0008.p2p.bad.response=SAAJ0008: Resposta Incorreta; {0}
+SAAJ0009.p2p.msg.send.failed=SAAJ0009: falha no envio da mensagem
+SAAJ0010.p2p.cannot.read.resp=SAAJ0010: n\u00E3o \u00E9 poss\u00EDvel ler a resposta
+SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: conex\u00E3o j\u00E1 fechada (de get)
+SAAJ0012.p2p.get.failed=SAAJ0012: falha de get
+SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0}
+SAAJ0014.p2p.content.zero=SAAJ0014: mensagem de resposta inv\u00E1lida. O tamanho do conte\u00FAdo da resposta era zero.
+
+# Debug messages
+SAAJ0050.p2p.proxy.host=SAAJ0050: host proxy: {0}
+SAAJ0051.p2p.proxy.port=SAAJ0051: porta proxy: {0}
+SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: protocolo n\u00E3o suportado no URL, deve ser http ou https
+# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
+SAAJ0053.p2p.providers=SAAJ0053: provedores {0}
+# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
+SAAJ0054.p2p.set.providers=SAAJ0054: definindo provedores {0}
+# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider"
+SAAJ0055.p2p.added.ssl.provider=SAAJ0055: SSL_PROVIDER {0} adicionado
+
+# Trace messages
+SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: URLEndpoint est\u00E1 dispon\u00EDvel s\u00F3 quando JAXM est\u00E1 presente
+SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: autoriza\u00E7\u00E3o de HTTPS no POST definida como verdadeira
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_zh_CN.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,58 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages
+# Error messages
+SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: \u65E0\u6CD5\u521B\u5EFA\u6D88\u606F\u5DE5\u5382
+SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: \u8FDE\u63A5\u5DF2\u5173\u95ED (\u4ECE close \u65B9\u6CD5)
+SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: \u8FDE\u63A5\u5DF2\u5173\u95ED (\u4ECE\u8C03\u7528)
+SAAJ0004.p2p.internal.err=SAAJ0004: \u5185\u90E8\u9519\u8BEF
+SAAJ0005.p2p.=SAAJ0005: URL \u9519\u8BEF (javax.xml.messaging.URLEndpoint \u7684 endPoint \u5B9E\u4F8B)
+# 0005 : getURL failed on javax.xml.messaging.URLEndpoint
+SAAJ0006.p2p.bad.URL=SAAJ0006: URL \u9519\u8BEF (\u5B57\u7B26\u4E32\u7684 endPoint \u5B9E\u4F8B)
+SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: endPoint \u7C7B\u578B\u9519\u8BEF (URL \u7684 endPoint \u5B9E\u4F8B)
+SAAJ0008.p2p.bad.response=SAAJ0008: \u54CD\u5E94\u9519\u8BEF; {0}
+SAAJ0009.p2p.msg.send.failed=SAAJ0009: \u672A\u80FD\u53D1\u9001\u6D88\u606F
+SAAJ0010.p2p.cannot.read.resp=SAAJ0010: \u65E0\u6CD5\u8BFB\u53D6\u54CD\u5E94
+SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: \u8FDE\u63A5\u5DF2\u5173\u95ED (\u4ECE get \u65B9\u6CD5)
+SAAJ0012.p2p.get.failed=SAAJ0012: Get \u5931\u8D25
+SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0}
+SAAJ0014.p2p.content.zero=SAAJ0014: \u56DE\u590D\u6D88\u606F\u65E0\u6548\u3002\u56DE\u590D\u7684\u5185\u5BB9\u957F\u5EA6\u4E3A\u96F6\u3002
+
+# Debug messages
+SAAJ0050.p2p.proxy.host=SAAJ0050: \u4EE3\u7406\u4E3B\u673A: {0}
+SAAJ0051.p2p.proxy.port=SAAJ0051: \u4EE3\u7406\u7AEF\u53E3: {0}
+SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: URL \u4E2D\u4E0D\u652F\u6301\u534F\u8BAE, \u5FC5\u987B\u662F http \u6216 https
+# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
+SAAJ0053.p2p.providers=SAAJ0053: \u63D0\u4F9B\u65B9{0}
+# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
+SAAJ0054.p2p.set.providers=SAAJ0054: \u8BBE\u7F6E\u63D0\u4F9B\u65B9{0}
+# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider"
+SAAJ0055.p2p.added.ssl.provider=SAAJ0055: \u5DF2\u6DFB\u52A0 SSL_PROVIDER {0}
+
+# Trace messages
+SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: \u53EA\u6709\u5728\u4F7F\u7528 JAXM \u65F6, URLEndpoint \u624D\u53EF\u7528
+SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: POST \u4E2D\u7684 HTTPS \u6388\u6743\u8BBE\u7F6E\u4E3A\u201C\u771F\u201D
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_zh_TW.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,58 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages
+# Error messages
+SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: \u7121\u6CD5\u5EFA\u7ACB\u8A0A\u606F\u8655\u7406\u7AD9
+SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: \u9023\u7DDA\u5DF2\u7D93\u95DC\u9589 (\u5F9E\u95DC\u9589\u65B9\u6CD5)
+SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: \u9023\u7DDA\u5DF2\u7D93\u95DC\u9589 (\u5F9E\u547C\u53EB)
+SAAJ0004.p2p.internal.err=SAAJ0004: \u5167\u90E8\u932F\u8AA4
+SAAJ0005.p2p.=SAAJ0005: \u932F\u8AA4\u7684 URL (javax.xml.messaging.URLEndpoint \u7684 endPoint \u57F7\u884C\u8655\u7406)
+# 0005 : getURL failed on javax.xml.messaging.URLEndpoint
+SAAJ0006.p2p.bad.URL=SAAJ0006: \u932F\u8AA4\u7684 URL (\u5B57\u4E32\u7684 endPoint \u57F7\u884C\u8655\u7406)
+SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: \u932F\u8AA4\u7684 endPoint \u985E\u578B (URL \u7684 endPoint \u57F7\u884C\u8655\u7406)
+SAAJ0008.p2p.bad.response=SAAJ0008: \u932F\u8AA4\u7684\u56DE\u61C9; {0}
+SAAJ0009.p2p.msg.send.failed=SAAJ0009: \u8A0A\u606F\u50B3\u9001\u5931\u6557
+SAAJ0010.p2p.cannot.read.resp=SAAJ0010: \u7121\u6CD5\u8B80\u53D6\u56DE\u61C9
+SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: \u9023\u7DDA\u5DF2\u7D93\u95DC\u9589 (\u5F9E\u53D6\u5F97)
+SAAJ0012.p2p.get.failed=SAAJ0012: \u53D6\u5F97\u5931\u6557
+SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0}
+SAAJ0014.p2p.content.zero=SAAJ0014: \u7121\u6548\u7684\u56DE\u8986\u8A0A\u606F. \u56DE\u8986\u7684\u5167\u5BB9\u9577\u5EA6\u70BA\u96F6.
+
+# Debug messages
+SAAJ0050.p2p.proxy.host=SAAJ0050: \u4EE3\u7406\u4E3B\u6A5F: {0}
+SAAJ0051.p2p.proxy.port=SAAJ0051: \u4EE3\u7406\u4E3B\u6A5F\u9023\u63A5\u57E0: {0}
+SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: \u4E0D\u652F\u63F4 URL \u4E2D\u7684\u5354\u5B9A, \u5FC5\u9808\u662F http \u6216 https
+# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
+SAAJ0053.p2p.providers=SAAJ0053: \u63D0\u4F9B\u8005 {0}
+# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo")
+SAAJ0054.p2p.set.providers=SAAJ0054: \u8A2D\u5B9A\u63D0\u4F9B\u8005 {0}
+# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider"
+SAAJ0055.p2p.added.ssl.provider=SAAJ0055: \u5DF2\u65B0\u589E SSL_PROVIDER {0}
+
+# Trace messages
+SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: \u53EA\u6709\u5728\u6709 JAXM \u6642\u624D\u80FD\u4F7F\u7528 URLEndpoint
+SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: POST \u4E2D\u7684 HTTPS \u6388\u6B0A\u8A2D\u70BA true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/Header.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)Header.java    1.3 02/03/27
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime;
+
+
+/**
+ * The Header class stores a name/value pair to represent headers.
+ *
+ * @author John Mani
+ */
+
+public interface Header {
+
+    /**
+     * Returns the name of this header.
+     *
+     * @return          name of the header
+     */
+    String getName();
+
+    /**
+     * Returns the value of this header.
+     *
+     * @return          value of the header
+     */
+    String getValue();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/MessagingException.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,147 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)MessagingException.java        1.10 02/06/13
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime;
+
+
+/**
+ * The base class for all exceptions thrown by the Messaging classes
+ *
+ * @author John Mani
+ * @author Bill Shannon
+ */
+
+public class MessagingException extends Exception {
+
+    /**
+     * The next exception in the chain.
+     *
+     * @serial
+     */
+    private Exception next;
+
+    /**
+     * Constructs a MessagingException with no detail message.
+     */
+    public MessagingException() {
+        super();
+    }
+
+    /**
+     * Constructs a MessagingException with the specified detail message.
+     * @param s         the detail message
+     */
+    public MessagingException(String s) {
+        super(s);
+    }
+
+    /**
+     * Constructs a MessagingException with the specified
+     * Exception and detail message. The specified exception is chained
+     * to this exception.
+     * @param s         the detail message
+     * @param e         the embedded exception
+     * @see     #getNextException
+     * @see     #setNextException
+     */
+    public MessagingException(String s, Exception e) {
+        super(s);
+        next = e;
+    }
+
+    /**
+     * Get the next exception chained to this one. If the
+     * next exception is a MessagingException, the chain
+     * may extend further.
+     *
+     * @return  next Exception, null if none.
+     */
+    public synchronized Exception getNextException() {
+        return next;
+    }
+
+    /**
+     * Add an exception to the end of the chain. If the end
+     * is <strong>not</strong> a MessagingException, this
+     * exception cannot be added to the end.
+     *
+     * @param   ex      the new end of the Exception chain
+     * @return          <code>true</code> if the this Exception
+     *                  was added, <code>false</code> otherwise.
+     */
+    public synchronized boolean setNextException(Exception ex) {
+        Exception theEnd = this;
+        while (theEnd instanceof MessagingException &&
+               ((MessagingException)theEnd).next != null) {
+            theEnd = ((MessagingException)theEnd).next;
+        }
+        // If the end is a MessagingException, we can add this
+        // exception to the chain.
+        if (theEnd instanceof MessagingException) {
+            ((MessagingException)theEnd).next = ex;
+            return true;
+        } else
+            return false;
+    }
+
+    /**
+     * Produce the message, include the message from the nested
+     * exception if there is one.
+     */
+    public String getMessage() {
+        if (next == null)
+            return super.getMessage();
+        Exception n = next;
+        String s = super.getMessage();
+        StringBuffer sb = new StringBuffer(s == null ? "" : s);
+        while (n != null) {
+            sb.append(";\n  nested exception is:\n\t");
+            if (n instanceof MessagingException) {
+                MessagingException mex = (MessagingException)n;
+                sb.append(n.getClass().toString());
+                String msg = mex.getSuperMessage();
+                if (msg != null) {
+                    sb.append(": ");
+                    sb.append(msg);
+                }
+                n = mex.next;
+            } else {
+                sb.append(n.toString());
+                n = null;
+            }
+        }
+        return sb.toString();
+    }
+
+    private String getSuperMessage() {
+        return super.getMessage();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/MultipartDataSource.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)MultipartDataSource.java       1.6 02/03/27
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime;
+
+import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeBodyPart;
+
+import javax.activation.DataSource;
+
+/**
+ * MultipartDataSource is a <code>DataSource</code> that contains body
+ * parts.  This allows "mail aware" <code>DataContentHandlers</code> to
+ * be implemented more efficiently by being aware of such
+ * <code>DataSources</code> and using the appropriate methods to access
+ * <code>BodyParts</code>. <p>
+ *
+ * Note that the data of a MultipartDataSource is also available as
+ * an input stream. <p>
+ *
+ * This interface will typically be implemented by providers that
+ * preparse multipart bodies, for example an IMAP provider.
+ *
+ * @version     1.6, 02/03/27
+ * @author      John Mani
+ * @see         javax.activation.DataSource
+ */
+
+public interface MultipartDataSource extends DataSource {
+
+    /**
+     * Return the number of enclosed MimeBodyPart objects.
+     *
+     * @return          number of parts
+     */
+    public int getCount();
+
+    /**
+     * Get the specified MimeBodyPart.  Parts are numbered starting at 0.
+     *
+     * @param index     the index of the desired MimeBodyPart
+     * @return          the MimeBodyPart
+     * @exception       IndexOutOfBoundsException if the given index
+     *                  is out of range.
+     * @exception       MessagingException
+     */
+    public MimeBodyPart getBodyPart(int index) throws MessagingException;
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/BMMimeMultipart.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,765 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)MimeMultipart.java     1.31 03/01/29
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
+
+import java.io.*;
+import java.util.BitSet;
+
+import javax.activation.DataSource;
+
+import com.sun.xml.internal.messaging.saaj.packaging.mime.*;
+import com.sun.xml.internal.messaging.saaj.packaging.mime.util.*;
+
+import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;
+
+/**
+ * The MimeMultipart class is an implementation of the abstract Multipart
+ * class that uses MIME conventions for the multipart data. <p>
+ *
+ * A MimeMultipart is obtained from a MimePart whose primary type
+ * is "multipart" (by invoking the part's <code>getContent()</code> method)
+ * or it can be created by a client as part of creating a new MimeMessage. <p>
+ *
+ * The default multipart subtype is "mixed".  The other multipart
+ * subtypes, such as "alternative", "related", and so on, can be
+ * implemented as subclasses of MimeMultipart with additional methods
+ * to implement the additional semantics of that type of multipart
+ * content. The intent is that service providers, mail JavaBean writers
+ * and mail clients will write many such subclasses and their Command
+ * Beans, and will install them into the JavaBeans Activation
+ * Framework, so that any JavaMail implementation and its clients can
+ * transparently find and use these classes. Thus, a MIME multipart
+ * handler is treated just like any other type handler, thereby
+ * decoupling the process of providing multipart handlers from the
+ * JavaMail API. Lacking these additional MimeMultipart subclasses,
+ * all subtypes of MIME multipart data appear as MimeMultipart objects. <p>
+ *
+ * An application can directly construct a MIME multipart object of any
+ * subtype by using the <code>MimeMultipart(String subtype)</code>
+ * constructor.  For example, to create a "multipart/alternative" object,
+ * use <code>new MimeMultipart("alternative")</code>.
+ *
+ */
+
+//TODO: cleanup the SharedInputStream handling
+public  class BMMimeMultipart extends MimeMultipart {
+
+    /*
+     * When true it indicates parsing hasnt been done at all
+     */
+    private boolean begining = true;
+
+    int[] bcs = new int[256];
+    int[] gss = null;
+    private static final int BUFFER_SIZE = 4096;
+    private byte[] buffer = new byte[BUFFER_SIZE];
+    private byte[] prevBuffer = new byte[BUFFER_SIZE];
+    private BitSet lastPartFound = new BitSet(1);
+
+    // cached inputstream which is possibly partially consumed
+    private InputStream in = null;
+    private String boundary = null;
+    // current stream position, set to -1 on EOF
+    int b = 0;
+
+    // property to indicate if lazyAttachments is ON
+    private boolean lazyAttachments = false;
+
+    /**
+     * Default constructor. An empty MimeMultipart object
+     * is created. Its content type is set to "multipart/mixed".
+     * A unique boundary string is generated and this string is
+     * setup as the "boundary" parameter for the
+     * <code>contentType</code> field. <p>
+     *
+     * MimeBodyParts may be added later.
+     */
+    public BMMimeMultipart() {
+        super();
+        //this("mixed");
+    }
+
+    /**
+     * Construct a MimeMultipart object of the given subtype.
+     * A unique boundary string is generated and this string is
+     * setup as the "boundary" parameter for the
+     * <code>contentType</code> field. <p>
+     *
+     * MimeBodyParts may be added later.
+     */
+    public BMMimeMultipart(String subtype) {
+        super(subtype);
+        /*
+         * Compute a boundary string.
+        String boundary = UniqueValue.getUniqueBoundaryValue();
+        ContentType cType = new ContentType("multipart", subtype, null);
+        contentType.setParameter("boundary", boundary);
+         */
+    }
+
+    /**
+     * Constructs a MimeMultipart object and its bodyparts from the
+     * given DataSource. <p>
+     *
+     * This constructor handles as a special case the situation where the
+     * given DataSource is a MultipartDataSource object.  In this case, this
+     * method just invokes the superclass (i.e., Multipart) constructor
+     * that takes a MultipartDataSource object. <p>
+     *
+     * Otherwise, the DataSource is assumed to provide a MIME multipart
+     * byte stream.  The <code>parsed</code> flag is set to false.  When
+     * the data for the body parts are needed, the parser extracts the
+     * "boundary" parameter from the content type of this DataSource,
+     * skips the 'preamble' and reads bytes till the terminating
+     * boundary and creates MimeBodyParts for each part of the stream.
+     *
+     * @param   ds      DataSource, can be a MultipartDataSource
+     */
+    public BMMimeMultipart(DataSource ds, ContentType ct)
+        throws MessagingException {
+        super(ds,ct);
+        boundary = ct.getParameter("boundary");
+        /*
+        if (ds instanceof MultipartDataSource) {
+            // ask super to do this for us.
+            setMultipartDataSource((MultipartDataSource)ds);
+            return;
+        }
+
+        // 'ds' was not a MultipartDataSource, we have
+        // to parse this ourself.
+        parsed = false;
+        this.ds = ds;
+        if (ct==null)
+            contentType = new ContentType(ds.getContentType());
+        else
+            contentType = ct;
+       */
+
+    }
+
+    public InputStream initStream() throws MessagingException {
+
+        if (in == null) {
+            try {
+                in = ds.getInputStream();
+                if (!(in instanceof ByteArrayInputStream) &&
+                    !(in instanceof BufferedInputStream) &&
+                    !(in instanceof SharedInputStream))
+                    in = new BufferedInputStream(in);
+            } catch (Exception ex) {
+                throw new MessagingException("No inputstream from datasource");
+            }
+
+            if (!in.markSupported()) {
+                throw new MessagingException(
+                    "InputStream does not support Marking");
+            }
+        }
+        return in;
+    }
+
+    /**
+     * Parse the InputStream from our DataSource, constructing the
+     * appropriate MimeBodyParts.  The <code>parsed</code> flag is
+     * set to true, and if true on entry nothing is done.  This
+     * method is called by all other methods that need data for
+     * the body parts, to make sure the data has been parsed.
+     *
+     * @since   JavaMail 1.2
+     */
+    protected  void parse() throws  MessagingException {
+        if (parsed)
+            return;
+
+        initStream();
+
+        SharedInputStream sin = null;
+        if (in instanceof SharedInputStream) {
+            sin = (SharedInputStream)in;
+        }
+
+        String bnd = "--" + boundary;
+        byte[] bndbytes = ASCIIUtility.getBytes(bnd);
+        try {
+            parse(in, bndbytes, sin);
+        } catch (IOException ioex) {
+            throw new MessagingException("IO Error", ioex);
+        } catch (Exception ex) {
+            throw new MessagingException("Error", ex);
+        }
+
+        parsed = true;
+    }
+
+    public boolean lastBodyPartFound() {
+        return lastPartFound.get(0);
+    }
+
+    public MimeBodyPart getNextPart(
+        InputStream stream, byte[] pattern, SharedInputStream sin)
+        throws Exception {
+
+        if (!stream.markSupported()) {
+            throw new Exception("InputStream does not support Marking");
+        }
+
+        if (begining) {
+            compile(pattern);
+            if (!skipPreamble(stream, pattern, sin)) {
+                throw new Exception(
+                    "Missing Start Boundary, or boundary does not start on a new line");
+            }
+            begining = false;
+        }
+
+        if (lastBodyPartFound()) {
+            throw new Exception("No parts found in Multipart InputStream");
+        }
+
+        if (sin != null) {
+            long start = sin.getPosition();
+            b = readHeaders(stream);
+            if (b == -1) {
+                throw new Exception(
+                    "End of Stream encountered while reading part headers");
+            }
+            long[] v = new long[1];
+            v[0] = -1; // just to ensure the code later sets it correctly
+            b = readBody(stream, pattern, v, null, sin);
+            // looks like this check has to be disabled
+            // it is allowed to have Mime Package without closing boundary
+            if (!ignoreMissingEndBoundary) {
+                if ((b == -1) && !lastBodyPartFound()) {
+                    throw new MessagingException("Missing End Boundary for Mime Package : EOF while skipping headers");
+                }
+            }
+            long end = v[0];
+            MimeBodyPart mbp = createMimeBodyPart(sin.newStream(start, end));
+            addBodyPart(mbp);
+            return mbp;
+
+        } else {
+            InternetHeaders headers = createInternetHeaders(stream);
+            ByteOutputStream baos = new ByteOutputStream();
+            b = readBody(stream, pattern, null,baos, null);
+            // looks like this check has to be disabled
+            // in the old impl it is allowed to have Mime Package
+            // without closing boundary
+            if (!ignoreMissingEndBoundary) {
+                if ((b == -1) && !lastBodyPartFound()) {
+                    throw new MessagingException("Missing End Boundary for Mime Package : EOF while skipping headers");
+                }
+            }
+            MimeBodyPart mbp = createMimeBodyPart(
+                headers, baos.getBytes(), baos.getCount());
+            addBodyPart(mbp);
+            return mbp;
+        }
+
+    }
+
+    public boolean parse(
+        InputStream stream, byte[] pattern, SharedInputStream sin)
+        throws Exception {
+
+        while (!lastPartFound.get(0) && (b != -1)) {
+           getNextPart(stream, pattern, sin);
+        }
+        return true;
+    }
+
+    private int readHeaders(InputStream is) throws Exception {
+        // if the headers are to end properly then there has to be CRLF
+        // actually we just need to mark the start and end positions
+        int b = is.read();
+        while(b != -1) {
+            // when it is a shared input stream no need to copy
+            if (b == '\r') {
+                b = is.read();
+                if (b == '\n') {
+                    b = is.read();
+                    if (b == '\r') {
+                        b = is.read();
+                        if (b == '\n') {
+                           return b;
+                        } else {
+                            continue;
+                        }
+                    } else {
+                        continue;
+                    }
+                } else {
+                    continue;
+                }
+            }
+            b = is.read();
+        }
+        if (b == -1) {
+            throw new Exception(
+            "End of inputstream while reading Mime-Part Headers");
+        }
+        return b;
+    }
+
+    private int readBody(
+        InputStream is, byte[] pattern, long[] posVector,
+        ByteOutputStream baos, SharedInputStream sin)
+        throws Exception {
+        if (!find(is, pattern, posVector, baos, sin)) {
+            throw new Exception(
+            "Missing boundary delimitier while reading Body Part");
+        }
+        return b;
+    }
+
+    private boolean skipPreamble(
+        InputStream is, byte[] pattern, SharedInputStream sin)
+        throws Exception {
+        if (!find(is, pattern, sin)) {
+            return false;
+        }
+        if (lastPartFound.get(0)) {
+            throw new Exception(
+            "Found closing boundary delimiter while trying to skip preamble");
+        }
+        return true;
+    }
+
+
+    public int  readNext(InputStream is, byte[] buff, int patternLength,
+        BitSet eof, long[] posVector, SharedInputStream sin)
+        throws Exception {
+
+        int bufferLength = is.read(buffer, 0, patternLength);
+        if (bufferLength == -1) {
+           eof.flip(0);
+        } else if (bufferLength < patternLength) {
+            //repeatedly read patternLength - bufferLength
+            int temp = 0;
+            long pos = 0;
+            int i = bufferLength;
+            for (; i < patternLength; i++) {
+                if (sin != null) {
+                    pos = sin.getPosition();
+                }
+                temp = is.read();
+                if (temp == -1) {
+                    eof.flip(0);
+                    if (sin != null) {
+                        posVector[0] = pos;
+                    }
+                    break;
+                }
+                buffer[i] = (byte)temp;
+            }
+            bufferLength=i;
+        }
+        return bufferLength;
+    }
+
+    public boolean find(InputStream is, byte[] pattern, SharedInputStream sin)
+        throws Exception {
+        int i;
+        int l = pattern.length;
+        int lx = l -1;
+        BitSet eof = new BitSet(1);
+        long[] posVector = new long[1];
+
+        while (true) {
+            is.mark(l);
+            readNext(is, buffer, l, eof, posVector, sin);
+            if (eof.get(0)) {
+                // End of stream
+                return false;
+            }
+
+            /*
+            if (bufferLength < l) {
+                //is.reset();
+                return false;
+            }*/
+
+            for(i = lx; i >= 0; i--) {
+                if (buffer[i] != pattern[i]) {
+                    break;
+                }
+            }
+
+            if (i < 0) {
+                // found the boundary, skip *LWSP-char and CRLF
+                if (!skipLWSPAndCRLF(is)) {
+                    throw new Exception("Boundary does not terminate with CRLF");
+                }
+                return true;
+            }
+
+            int s = Math.max(i + 1 - bcs[buffer[i] & 0x7f], gss[i]);
+            is.reset();
+            is.skip(s);
+        }
+    }
+
+    public boolean find(
+        InputStream is, byte[] pattern, long[] posVector,
+        ByteOutputStream out, SharedInputStream sin) throws Exception {
+        int i;
+        int l = pattern.length;
+        int lx = l -1;
+        int bufferLength = 0;
+        int s = 0;
+        long endPos = -1;
+        byte[] tmp = null;
+
+        boolean first = true;
+        BitSet eof = new BitSet(1);
+
+        while (true) {
+            is.mark(l);
+            if (!first) {
+                tmp = prevBuffer;
+                prevBuffer = buffer;
+                buffer = tmp;
+            }
+            if (sin != null) {
+                endPos = sin.getPosition();
+            }
+
+            bufferLength = readNext(is, buffer, l, eof, posVector, sin);
+
+            if (bufferLength == -1) {
+                // End of stream
+                // looks like it is allowed to not have a closing boundary
+                //return false;
+                //if (sin != null) {
+                 //   posVector[0] = endPos;
+                //}
+                b = -1;
+                if ((s == l) && (sin == null)) {
+                    out.write(prevBuffer, 0, s);
+                }
+                return true;
+            }
+
+            if (bufferLength < l) {
+                if (sin != null) {
+                    //endPos = sin.getPosition();
+                    //posVector[0] = endPos;
+                } else {
+                    // looks like it is allowed to not have a closing boundary
+                    // in the old implementation
+                        out.write(buffer, 0, bufferLength);
+                }
+                // looks like it is allowed to not have a closing boundary
+                // in the old implementation
+                //return false;
+                b = -1;
+                return true;
+            }
+
+            for(i = lx; i >= 0; i--) {
+                if (buffer[i] != pattern[i]) {
+                    break;
+                }
+            }
+
+            if (i < 0) {
+                if (s > 0) {
+                    //looks like the earlier impl allowed just an LF
+                    // so if s == 1 : it must be an LF
+                    // if s == 2 : it must be a CR LF
+                    if (s <= 2) {
+                        //it could be "some-char\n" so write some-char
+                        if (s == 2) {
+                            if (prevBuffer[1] == '\n') {
+                                if (prevBuffer[0] != '\r' && prevBuffer[0] != '\n') {
+                                    out.write(prevBuffer,0,1);
+                                }
+                                if (sin != null) {
+                                    posVector[0] = endPos;
+                                }
+
+                            } else {
+                                throw new Exception(
+                                        "Boundary characters encountered in part Body " +
+                                        "without a preceeding CRLF");
+                            }
+
+                        } else if (s==1) {
+                            if (prevBuffer[0] != '\n') {
+                                throw new Exception(
+                                        "Boundary characters encountered in part Body " +
+                                        "without a preceeding CRLF");
+                            }else {
+                                if (sin != null) {
+                                    posVector[0] = endPos;
+                                }
+                            }
+                        }
+
+                    } else if (s > 2) {
+                        if ((prevBuffer[s-2] == '\r') && (prevBuffer[s-1] == '\n')) {
+                            if (sin != null) {
+                                posVector[0] = endPos - 2;
+                            } else {
+                                out.write(prevBuffer, 0, s - 2);
+                            }
+                        } else if (prevBuffer[s-1] == '\n') {
+                            //old impl allowed just a \n
+                            if (sin != null) {
+                                posVector[0] = endPos - 1;
+                            } else {
+                                out.write(prevBuffer, 0, s - 1);
+                            }
+                        } else {
+                            throw new Exception(
+                                "Boundary characters encountered in part Body " +
+                                "without a preceeding CRLF");
+                        }
+                    }
+                }
+                // found the boundary, skip *LWSP-char and CRLF
+                if (!skipLWSPAndCRLF(is)) {
+                    //throw new Exception(
+                    //   "Boundary does not terminate with CRLF");
+                }
+                return true;
+            }
+
+            if ((s > 0) && (sin == null)) {
+                if (prevBuffer[s-1] == (byte)13) {
+                    // if buffer[0] == (byte)10
+                    if (buffer[0] == (byte)10) {
+                        int j;
+                        for(j = lx-1; j > 0; j--) {
+                            if (buffer[j+1] != pattern[j]) {
+                                break;
+                             }
+                         }
+                         if (j == 0) {
+                             // matched the pattern excluding the last char of the pattern
+                             // so dont write the CR into stream
+                             out.write(prevBuffer,0,s-1);
+                         } else {
+                             out.write(prevBuffer,0,s);
+                         }
+                    } else {
+                        out.write(prevBuffer, 0, s);
+                    }
+                } else {
+                    out.write(prevBuffer, 0, s);
+                }
+            }
+
+            s = Math.max(i + 1 - bcs[buffer[i] & 0x7f], gss[i]);
+            is.reset();
+            is.skip(s);
+            if (first) {
+                first = false;
+            }
+        }
+    }
+
+    private boolean skipLWSPAndCRLF(InputStream is) throws Exception {
+
+        b = is.read();
+        //looks like old impl allowed just a \n as well
+        if (b == '\n') {
+            return true;
+        }
+
+        if (b == '\r') {
+            b = is.read();
+            //skip any multiple '\r' "\r\n" --> "\r\r\n" on Win2k
+            if (b == '\r') {
+                b = is.read();
+            }
+            if (b == '\n') {
+                return true;
+            } else {
+                throw new Exception(
+                    "transport padding after a Mime Boundary  should end in a CRLF, found CR only");
+            }
+        }
+
+        if (b == '-') {
+            b = is.read();
+            if (b != '-') {
+               throw new Exception(
+                   "Unexpected singular '-' character after Mime Boundary");
+            } else {
+                //System.out.println("Last Part Found");
+                lastPartFound.flip(0);
+                // read the next char
+                b  = is.read();
+            }
+        }
+
+        while ((b != -1) && ((b == ' ') || (b == '\t'))) {
+            b = is.read();
+            if (b == '\n') {
+                return true;
+            }
+            if (b == '\r') {
+                b = is.read();
+                //skip any multiple '\r': "\r\n" --> "\r\r\n" on Win2k
+                if (b == '\r') {
+                    b = is.read();
+                }
+                if (b == '\n') {
+                   return true;
+                }
+            }
+        }
+
+        if (b == -1) {
+            // the last boundary need not have CRLF
+            if (!lastPartFound.get(0)) {
+                throw new Exception(
+                        "End of Multipart Stream before encountering  closing boundary delimiter");
+            }
+            return true;
+        }
+        return false;
+    }
+
+    private void compile(byte[] pattern) {
+        int l = pattern.length;
+
+        int i;
+        int j;
+
+        // Copied from J2SE 1.4 regex code
+        // java.util.regex.Pattern.java
+
+        // Initialise Bad Character Shift table
+        for (i = 0; i < l; i++) {
+            bcs[pattern[i]] = i + 1;
+        }
+
+        // Initialise Good Suffix Shift table
+        gss = new int[l];
+  NEXT: for (i = l; i > 0; i--) {
+            // j is the beginning index of suffix being considered
+            for (j = l - 1; j >= i; j--) {
+                // Testing for good suffix
+                if (pattern[j] == pattern[j - i]) {
+                    // pattern[j..len] is a good suffix
+                    gss[j - 1] = i;
+                } else {
+                   // No match. The array has already been
+                   // filled up with correct values before.
+                   continue NEXT;
+                }
+            }
+            while (j > 0) {
+                gss[--j] = i;
+            }
+        }
+        gss[l - 1] = 1;
+    }
+
+
+    /**
+     * Iterates through all the parts and outputs each Mime part
+     * separated by a boundary.
+     */
+
+    public void writeTo(OutputStream os)
+            throws IOException, MessagingException {
+
+        // inputStream was not null
+        if (in != null) {
+            contentType.setParameter("boundary", this.boundary);
+        }
+
+        String bnd = "--" + contentType.getParameter("boundary");
+        for (int i = 0; i < parts.size(); i++) {
+            OutputUtil.writeln(bnd, os); // put out boundary
+            ((MimeBodyPart)parts.get(i)).writeTo(os);
+            OutputUtil.writeln(os); // put out empty line
+        }
+
+        if (in != null) {
+            OutputUtil.writeln(bnd, os); // put out boundary
+            if ((os instanceof ByteOutputStream) && lazyAttachments) {
+                ((ByteOutputStream) os).write(in);
+            } else {
+                ByteOutputStream baos = null;
+                try {
+                    baos = new ByteOutputStream(in.available());
+                    baos.write(in);
+                    baos.writeTo(os);
+                    // reset the inputstream so that we can support a
+                    // getAttachment later
+                    in = baos.newInputStream();
+                } finally {
+                    if (baos != null)
+                        baos.close();
+                }
+            }
+
+            // this will endup writing the end boundary
+        } else {
+            // put out last boundary
+            OutputUtil.writeAsAscii(bnd, os);
+            OutputUtil.writeAsAscii("--", os);
+        }
+    }
+
+    public void setInputStream(InputStream is) {
+        this.in = is;
+    }
+
+    public InputStream getInputStream() {
+        return this.in;
+    }
+
+    public void setBoundary(String bnd) {
+        this.boundary = bnd;
+        if (this.contentType != null) {
+            this.contentType.setParameter("boundary", bnd);
+        }
+    }
+    public String getBoundary() {
+        return this.boundary;
+    }
+
+    public boolean isEndOfStream() {
+        return (b == -1);
+    }
+
+    public void setLazyAttachments(boolean flag) {
+        lazyAttachments = flag;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ContentDisposition.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,180 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)ContentDisposition.java        1.6 02/03/27
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
+
+
+/**
+ * This class represents a MIME ContentDisposition value. It provides
+ * methods to parse a ContentDisposition string into individual components
+ * and to generate a MIME style ContentDisposition string.
+ *
+ * @version 1.6, 02/03/27
+ * @author  John Mani
+ */
+
+public class ContentDisposition {
+
+    private String disposition; // disposition
+    private ParameterList list; // parameter list
+
+    /**
+     * No-arg Constructor.
+     */
+    public ContentDisposition() { }
+
+    /**
+     * Constructor.
+     *
+     * @param   disposition     disposition
+     * @param   list    ParameterList
+     * @since           JavaMail 1.2
+     */
+    public ContentDisposition(String disposition, ParameterList list) {
+        this.disposition = disposition;
+        this.list = list;
+    }
+
+    /**
+     * Constructor that takes a ContentDisposition string. The String
+     * is parsed into its constituents: dispostion and parameters.
+     * A ParseException is thrown if the parse fails.
+     *
+     * @param   s       the ContentDisposition string.
+     * @exception       ParseException if the parse fails.
+     * @since           JavaMail 1.2
+     */
+    public ContentDisposition(String s) throws ParseException {
+        HeaderTokenizer h = new HeaderTokenizer(s, HeaderTokenizer.MIME);
+        HeaderTokenizer.Token tk;
+
+        // First "disposition" ..
+        tk = h.next();
+        if (tk.getType() != HeaderTokenizer.Token.ATOM)
+            throw new ParseException();
+        disposition = tk.getValue();
+
+        // Then parameters ..
+        String rem = h.getRemainder();
+        if (rem != null)
+            list = new ParameterList(rem);
+    }
+
+    /**
+     * Return the disposition value.
+     * @return the disposition
+     * @since           JavaMail 1.2
+     */
+    public String getDisposition() {
+        return disposition;
+    }
+
+    /**
+     * Return the specified parameter value. Returns <code>null</code>
+     * if this parameter is absent.
+     * @return  parameter value
+     * @since           JavaMail 1.2
+     */
+    public String getParameter(String name) {
+        if (list == null)
+            return null;
+
+        return list.get(name);
+    }
+
+    /**
+     * Return a ParameterList object that holds all the available
+     * parameters. Returns null if no parameters are available.
+     *
+     * @return  ParameterList
+     * @since           JavaMail 1.2
+     */
+    public ParameterList getParameterList() {
+        return list;
+    }
+
+    /**
+     * Set the primary type. Overrides existing primary type.
+     * @param   primaryType     primary type
+     * @since           JavaMail 1.2
+     */
+    public void setDisposition(String disposition) {
+        this.disposition = disposition;
+    }
+
+    /**
+     * Set the specified parameter. If this parameter already exists,
+     * it is replaced by this new value.
+     *
+     * @param   name    parameter name
+     * @param   value   parameter value
+     * @since           JavaMail 1.2
+     */
+    public void setParameter(String name, String value) {
+        if (list == null)
+            list = new ParameterList();
+
+        list.set(name, value);
+    }
+
+    /**
+     * Set a new ParameterList.
+     * @param   list    ParameterList
+     * @since           JavaMail 1.2
+     */
+    public void setParameterList(ParameterList list) {
+        this.list = list;
+    }
+
+    /**
+     * Retrieve a RFC2045 style string representation of
+     * this ContentDisposition. Returns <code>null</code> if
+     * the conversion failed.
+     *
+     * @return  RFC2045 style string
+     * @since           JavaMail 1.2
+     */
+    public String toString() {
+        if (disposition == null)
+            return null;
+
+        if (list == null)
+            return disposition;
+
+        StringBuffer sb = new StringBuffer(disposition);
+
+        // append the parameter list
+        // use the length of the string buffer + the length of
+        // the header name formatted as follows "Content-Disposition: "
+        sb.append(list.toString(sb.length() + 21));
+        return sb.toString();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ContentType.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,277 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)ContentType.java       1.7 02/03/27
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
+
+
+/**
+ * This class represents a MIME ContentType value. It provides
+ * methods to parse a ContentType string into individual components
+ * and to generate a MIME style ContentType string.
+ *
+ * @version 1.7, 02/03/27
+ * @author  John Mani
+ */
+public final class ContentType {
+
+    private String primaryType; // primary type
+    private String subType;     // subtype
+    private ParameterList list; // parameter list
+
+    /**
+     * No-arg Constructor.
+     */
+    public ContentType() { }
+
+    /**
+     * Constructor.
+     *
+     * @param   primaryType     primary type
+     * @param   subType subType
+     * @param   list    ParameterList
+     */
+    public ContentType(String primaryType, String subType,
+                       ParameterList list) {
+        this.primaryType = primaryType;
+        this.subType = subType;
+        if (list == null)
+            list = new ParameterList();
+        this.list = list;
+    }
+
+    /**
+     * Constructor that takes a Content-Type string. The String
+     * is parsed into its constituents: primaryType, subType
+     * and parameters. A ParseException is thrown if the parse fails.
+     *
+     * @param   s       the Content-Type string.
+     * @exception       ParseException if the parse fails.
+     */
+    public ContentType(String s) throws ParseException {
+        HeaderTokenizer h = new HeaderTokenizer(s, HeaderTokenizer.MIME);
+        HeaderTokenizer.Token tk;
+
+        // First "type" ..
+        tk = h.next();
+        if (tk.getType() != HeaderTokenizer.Token.ATOM)
+            throw new ParseException();
+        primaryType = tk.getValue();
+
+        // The '/' separator ..
+        tk = h.next();
+        if ((char)tk.getType() != '/')
+            throw new ParseException();
+
+        // Then "subType" ..
+        tk = h.next();
+        if (tk.getType() != HeaderTokenizer.Token.ATOM)
+            throw new ParseException();
+        subType = tk.getValue();
+
+        // Finally parameters ..
+        String rem = h.getRemainder();
+        if (rem != null)
+            list = new ParameterList(rem);
+    }
+
+    public ContentType copy() {
+        return new ContentType(primaryType,subType,list.copy());
+    }
+
+    /**
+     * Return the primary type.
+     * @return the primary type
+     */
+    public String getPrimaryType() {
+        return primaryType;
+    }
+
+    /**
+     * Return the subType.
+     * @return the subType
+     */
+    public String getSubType() {
+        return subType;
+    }
+
+    /**
+     * Return the MIME type string, without the parameters.
+     * The returned value is basically the concatenation of
+     * the primaryType, the '/' character and the secondaryType.
+     *
+     * @return the type
+     */
+    public String getBaseType() {
+        return primaryType + '/' + subType;
+    }
+
+    /**
+     * Return the specified parameter value. Returns <code>null</code>
+     * if this parameter is absent.
+     * @return  parameter value
+     */
+    public String getParameter(String name) {
+        if (list == null)
+            return null;
+
+        return list.get(name);
+    }
+
+    /**
+     * Return a ParameterList object that holds all the available
+     * parameters. Returns null if no parameters are available.
+     *
+     * @return  ParameterList
+     */
+    public ParameterList getParameterList() {
+        return list;
+    }
+
+    /**
+     * Set the primary type. Overrides existing primary type.
+     * @param   primaryType     primary type
+     */
+    public void setPrimaryType(String primaryType) {
+        this.primaryType = primaryType;
+    }
+
+    /**
+     * Set the subType. Overrides existing subType
+     * @param   subType subType
+     */
+    public void setSubType(String subType) {
+        this.subType = subType;
+    }
+
+    /**
+     * Set the specified parameter. If this parameter already exists,
+     * it is replaced by this new value.
+     *
+     * @param   name    parameter name
+     * @param   value   parameter value
+     */
+    public void setParameter(String name, String value) {
+        if (list == null)
+            list = new ParameterList();
+
+        list.set(name, value);
+    }
+
+    /**
+     * Set a new ParameterList.
+     * @param   list    ParameterList
+     */
+    public void setParameterList(ParameterList list) {
+        this.list = list;
+    }
+
+    /**
+     * Retrieve a RFC2045 style string representation of
+     * this Content-Type. Returns <code>null</code> if
+     * the conversion failed.
+     *
+     * @return  RFC2045 style string
+     */
+    public String toString() {
+        if (primaryType == null || subType == null) // need both
+            return null;
+
+        StringBuffer sb = new StringBuffer();
+        sb.append(primaryType).append('/').append(subType);
+        if (list != null)
+        // Http Binding section of the "SOAP with attachments" specification says,
+        // "SOAP message senders should send Content-Type headers on a single long line."
+        // (http://www.w3.org/TR/SOAP-attachments#HTTPBinding)
+            sb.append(list.toString());
+
+        return sb.toString();
+    }
+
+    /**
+     * Match with the specified ContentType object. This method
+     * compares <strong>only the <code>primaryType</code> and
+     * <code>subType</code> </strong>. The parameters of both operands
+     * are ignored. <p>
+     *
+     * For example, this method will return <code>true</code> when
+     * comparing the ContentTypes for <strong>"text/plain"</strong>
+     * and <strong>"text/plain; charset=foobar"</strong>.
+     *
+     * If the <code>subType</code> of either operand is the special
+     * character '*', then the subtype is ignored during the match.
+     * For example, this method will return <code>true</code> when
+     * comparing the ContentTypes for <strong>"text/plain"</strong>
+     * and <strong>"text/*" </strong>
+     *
+     * @param   cType to compare this against
+     */
+    public boolean match(ContentType cType) {
+        // Match primaryType
+        if (!primaryType.equalsIgnoreCase(cType.getPrimaryType()))
+            return false;
+
+        String sType = cType.getSubType();
+
+        // If either one of the subTypes is wildcarded, return true
+        if ((subType.charAt(0) == '*') || (sType.charAt(0) == '*'))
+            return true;
+
+        // Match subType
+        if (!subType.equalsIgnoreCase(sType))
+            return false;
+
+        return true;
+    }
+
+    /**
+     * Match with the specified content-type string. This method
+     * compares <strong>only the <code>primaryType</code> and
+     * <code>subType</code> </strong>.
+     * The parameters of both operands are ignored. <p>
+     *
+     * For example, this method will return <code>true</code> when
+     * comparing the ContentType for <strong>"text/plain"</strong>
+     * with <strong>"text/plain; charset=foobar"</strong>.
+     *
+     * If the <code>subType</code> of either operand is the special
+     * character '*', then the subtype is ignored during the match.
+     * For example, this method will return <code>true</code> when
+     * comparing the ContentType for <strong>"text/plain"</strong>
+     * with <strong>"text/*" </strong>
+     */
+    public boolean match(String s) {
+        try {
+            return match(new ContentType(s));
+        } catch (ParseException pex) {
+            return false;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/HeaderTokenizer.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,382 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)HeaderTokenizer.java   1.9 02/03/27
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
+
+
+/**
+ * This class tokenizes RFC822 and MIME headers into the basic
+ * symbols specified by RFC822 and MIME. <p>
+ *
+ * This class handles folded headers (ie headers with embedded
+ * CRLF SPACE sequences). The folds are removed in the returned
+ * tokens.
+ *
+ * @version 1.9, 02/03/27
+ * @author  John Mani
+ */
+
+public class HeaderTokenizer {
+
+    /**
+     * The Token class represents tokens returned by the
+     * HeaderTokenizer.
+     */
+    public static class Token {
+
+        private int type;
+        private String value;
+
+        /**
+         * Token type indicating an ATOM.
+         */
+        public static final int ATOM            = -1;
+
+        /**
+         * Token type indicating a quoted string. The value
+         * field contains the string without the quotes.
+         */
+        public static final int QUOTEDSTRING    = -2;
+
+        /**
+         * Token type indicating a comment. The value field
+         * contains the comment string without the comment
+         * start and end symbols.
+         */
+        public static final int COMMENT         = -3;
+
+        /**
+         * Token type indicating end of input.
+         */
+        public static final int  EOF            = -4;
+
+        /**
+         * Constructor.
+         * @param       type    Token type
+         * @param       value   Token value
+         */
+        public Token(int type, String value) {
+             this.type = type;
+             this.value = value;
+        }
+
+        /**
+         * Return the type of the token. If the token represents a
+         * delimiter or a control character, the type is that character
+         * itself, converted to an integer. Otherwise, it's value is
+         * one of the following:
+         * <ul>
+         * <li><code>ATOM</code> A sequence of ASCII characters
+         *      delimited by either SPACE, CTL, "(", <"> or the
+         *      specified SPECIALS
+         * <li><code>QUOTEDSTRING</code> A sequence of ASCII characters
+         *      within quotes
+         * <li><code>COMMENT</code> A sequence of ASCII characters
+         *      within "(" and ")".
+         * <li><code>EOF</code> End of header
+         * </ul>
+         */
+        public int getType() {
+            return type;
+        }
+
+        /**
+         * Returns the value of the token just read. When the current
+         * token is a quoted string, this field contains the body of the
+         * string, without the quotes. When the current token is a comment,
+         * this field contains the body of the comment.
+         *
+         * @return      token value
+         */
+        public String getValue() {
+            return value;
+        }
+    }
+
+    private String string; // the string to be tokenized
+    private boolean skipComments; // should comments be skipped ?
+    private String delimiters; // delimiter string
+    private int currentPos; // current parse position
+    private int maxPos; // string length
+    private int nextPos; // track start of next Token for next()
+    private int peekPos; // track start of next Token for peek()
+
+    /**
+     * RFC822 specials
+     */
+    public final static String RFC822 = "()<>@,;:\\\"\t .[]";
+
+    /**
+     * MIME specials
+     */
+    public final static String MIME = "()<>@,;:\\\"\t []/?=";
+
+    // The EOF Token
+    private final static Token EOFToken = new Token(Token.EOF, null);
+
+    /**
+     * Constructor that takes a rfc822 style header.
+     *
+     * @param   header  The rfc822 header to be tokenized
+     * @param   delimiters      Set of delimiter characters
+     *                          to be used to delimit ATOMS. These
+     *                          are usually <code>RFC822</code> or
+     *                          <code>MIME</code>
+     * @param   skipComments  If true, comments are skipped and
+     *                          not returned as tokens
+     */
+    public HeaderTokenizer(String header, String delimiters,
+                           boolean skipComments) {
+        string = (header == null) ? "" : header; // paranoia ?!
+        this.skipComments = skipComments;
+        this.delimiters = delimiters;
+        currentPos = nextPos = peekPos = 0;
+        maxPos = string.length();
+    }
+
+    /**
+     * Constructor. Comments are ignored and not returned as tokens
+     *
+     * @param   header  The header that is tokenized
+     * @param   delimiters  The delimiters to be used
+     */
+    public HeaderTokenizer(String header, String delimiters) {
+        this(header, delimiters, true);
+    }
+
+    /**
+     * Constructor. The RFC822 defined delimiters - RFC822 - are
+     * used to delimit ATOMS. Also comments are skipped and not
+     * returned as tokens
+     */
+    public HeaderTokenizer(String header)  {
+        this(header, RFC822);
+    }
+
+    /**
+     * Parses the next token from this String. <p>
+     *
+     * Clients sit in a loop calling next() to parse successive
+     * tokens until an EOF Token is returned.
+     *
+     * @return          the next Token
+     * @exception       ParseException if the parse fails
+     */
+    public Token next() throws ParseException {
+        Token tk;
+
+        currentPos = nextPos; // setup currentPos
+        tk = getNext();
+        nextPos = peekPos = currentPos; // update currentPos and peekPos
+        return tk;
+    }
+
+    /**
+     * Peek at the next token, without actually removing the token
+     * from the parse stream. Invoking this method multiple times
+     * will return successive tokens, until <code>next()</code> is
+     * called. <p>
+     *
+     * @return          the next Token
+     * @exception       ParseException if the parse fails
+     */
+    public Token peek() throws ParseException {
+        Token tk;
+
+        currentPos = peekPos; // setup currentPos
+        tk = getNext();
+        peekPos = currentPos; // update peekPos
+        return tk;
+    }
+
+    /**
+     * Return the rest of the Header.
+     *
+     * @return String   rest of header. null is returned if we are
+     *                  already at end of header
+     */
+    public String getRemainder() {
+        return string.substring(nextPos);
+    }
+
+    /*
+     * Return the next token starting from 'currentPos'. After the
+     * parse, 'currentPos' is updated to point to the start of the
+     * next token.
+     */
+    private Token getNext() throws ParseException {
+        // If we're already at end of string, return EOF
+        if (currentPos >= maxPos)
+            return EOFToken;
+
+        // Skip white-space, position currentPos beyond the space
+        if (skipWhiteSpace() == Token.EOF)
+            return EOFToken;
+
+        char c;
+        int start;
+        boolean filter = false;
+
+        c = string.charAt(currentPos);
+
+        // Check or Skip comments and position currentPos
+        // beyond the comment
+        while (c == '(') {
+            // Parsing comment ..
+            int nesting;
+            for (start = ++currentPos, nesting = 1;
+                 nesting > 0 && currentPos < maxPos;
+                 currentPos++) {
+                c = string.charAt(currentPos);
+                if (c == '\\') {  // Escape sequence
+                    currentPos++; // skip the escaped character
+                    filter = true;
+                } else if (c == '\r')
+                    filter = true;
+                else if (c == '(')
+                    nesting++;
+                else if (c == ')')
+                    nesting--;
+            }
+            if (nesting != 0)
+                throw new ParseException("Unbalanced comments");
+
+            if (!skipComments) {
+                // Return the comment, if we are asked to.
+                // Note that the comment start & end markers are ignored.
+                String s;
+                if (filter) // need to go thru the token again.
+                    s = filterToken(string, start, currentPos-1);
+                else
+                    s = string.substring(start,currentPos-1);
+
+                return new Token(Token.COMMENT, s);
+            }
+
+            // Skip any whitespace after the comment.
+            if (skipWhiteSpace() == Token.EOF)
+                return EOFToken;
+            c = string.charAt(currentPos);
+        }
+
+        // Check for quoted-string and position currentPos
+        //  beyond the terminating quote
+        if (c == '"') {
+            for (start = ++currentPos; currentPos < maxPos; currentPos++) {
+                c = string.charAt(currentPos);
+                if (c == '\\') { // Escape sequence
+                    currentPos++;
+                    filter = true;
+                } else if (c == '\r')
+                    filter = true;
+                else if (c == '"') {
+                    currentPos++;
+                    String s;
+
+                    if (filter)
+                        s = filterToken(string, start, currentPos-1);
+                    else
+                        s = string.substring(start,currentPos-1);
+
+                    return new Token(Token.QUOTEDSTRING, s);
+                }
+            }
+            throw new ParseException("Unbalanced quoted string");
+        }
+
+        // Check for SPECIAL or CTL
+        if (c < 040 || c >= 0177 || delimiters.indexOf(c) >= 0) {
+            currentPos++; // re-position currentPos
+            char ch[] = new char[1];
+            ch[0] = c;
+            return new Token((int)c, new String(ch));
+        }
+
+        // Check for ATOM
+        for (start = currentPos; currentPos < maxPos; currentPos++) {
+            c = string.charAt(currentPos);
+            // ATOM is delimited by either SPACE, CTL, "(", <">
+            // or the specified SPECIALS
+            if (c < 040 || c >= 0177 || c == '(' || c == ' ' ||
+                c == '"' || delimiters.indexOf(c) >= 0)
+                break;
+        }
+        return new Token(Token.ATOM, string.substring(start, currentPos));
+    }
+
+    // Skip SPACE, HT, CR and NL
+    private int skipWhiteSpace() {
+        char c;
+        for (; currentPos < maxPos; currentPos++)
+            if (((c = string.charAt(currentPos)) != ' ') &&
+                (c != '\t') && (c != '\r') && (c != '\n'))
+                return currentPos;
+        return Token.EOF;
+    }
+
+    /* Process escape sequences and embedded LWSPs from a comment or
+     * quoted string.
+     */
+    private static String filterToken(String s, int start, int end) {
+        StringBuffer sb = new StringBuffer();
+        char c;
+        boolean gotEscape = false;
+        boolean gotCR = false;
+
+        for (int i = start; i < end; i++) {
+            c = s.charAt(i);
+            if (c == '\n' && gotCR) {
+                // This LF is part of an unescaped
+                // CRLF sequence (i.e, LWSP). Skip it.
+                gotCR = false;
+                continue;
+            }
+
+            gotCR = false;
+            if (!gotEscape) {
+                // Previous character was NOT '\'
+                if (c == '\\') // skip this character
+                    gotEscape = true;
+                else if (c == '\r') // skip this character
+                    gotCR = true;
+                else // append this character
+                    sb.append(c);
+            } else {
+                // Previous character was '\'. So no need to
+                // bother with any special processing, just
+                // append this character
+                sb.append(c);
+                gotEscape = false;
+            }
+        }
+        return sb.toString();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/InternetHeaders.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,402 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)InternetHeaders.java   1.16 02/08/08
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
+
+import com.sun.xml.internal.messaging.saaj.packaging.mime.Header;
+import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException;
+import com.sun.xml.internal.messaging.saaj.packaging.mime.util.LineInputStream;
+import com.sun.xml.internal.messaging.saaj.util.FinalArrayList;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.AbstractList;
+import java.util.List;
+import java.util.NoSuchElementException;
+
+/**
+ * InternetHeaders is a utility class that manages RFC822 style
+ * headers. Given an RFC822 format message stream, it reads lines
+ * until the blank line that indicates end of header. The input stream
+ * is positioned at the start of the body. The lines are stored
+ * within the object and can be extracted as either Strings or
+ * {@link Header} objects. <p>
+ * <p/>
+ * This class is mostly intended for service providers. MimeMessage
+ * and MimeBody use this class for holding their headers. <p>
+ * <p/>
+ * <hr> <strong>A note on RFC822 and MIME headers</strong><p>
+ * <p/>
+ * RFC822 and MIME header fields <strong>must</strong> contain only
+ * US-ASCII characters. If a header contains non US-ASCII characters,
+ * it must be encoded as per the rules in RFC 2047. The MimeUtility
+ * class provided in this package can be used to to achieve this.
+ * Callers of the <code>setHeader</code>, <code>addHeader</code>, and
+ * <code>addHeaderLine</code> methods are responsible for enforcing
+ * the MIME requirements for the specified headers.  In addition, these
+ * header fields must be folded (wrapped) before being sent if they
+ * exceed the line length limitation for the transport (1000 bytes for
+ * SMTP).  Received headers may have been folded.  The application is
+ * responsible for folding and unfolding headers as appropriate. <p>
+ *
+ * @author John Mani
+ * @author Bill Shannon
+ * @see MimeUtility
+ */
+public final class InternetHeaders {
+
+    private final FinalArrayList headers = new FinalArrayList();
+
+    /**
+     * Lazily cerated view of header lines (Strings).
+     */
+    private List headerValueView;
+
+    /**
+     * Create an empty InternetHeaders object.
+     */
+    public InternetHeaders() {
+    }
+
+    /**
+     * Read and parse the given RFC822 message stream till the
+     * blank line separating the header from the body. The input
+     * stream is left positioned at the start of the body. The
+     * header lines are stored internally. <p>
+     * <p/>
+     * For efficiency, wrap a BufferedInputStream around the actual
+     * input stream and pass it as the parameter.
+     *
+     * @param   is RFC822 input stream
+     */
+    public InternetHeaders(InputStream is) throws MessagingException {
+        load(is);
+    }
+
+    /**
+     * Read and parse the given RFC822 message stream till the
+     * blank line separating the header from the body. Store the
+     * header lines inside this InternetHeaders object. <p>
+     * <p/>
+     * Note that the header lines are added into this InternetHeaders
+     * object, so any existing headers in this object will not be
+     * affected.
+     *
+     * @param   is RFC822 input stream
+     */
+    public void load(InputStream is) throws MessagingException {
+        // Read header lines until a blank line. It is valid
+        // to have BodyParts with no header lines.
+        String line;
+        LineInputStream lis = new LineInputStream(is);
+        String prevline = null; // the previous header line, as a string
+        // a buffer to accumulate the header in, when we know it's needed
+        StringBuffer lineBuffer = new StringBuffer();
+
+        try {
+            //while ((line = lis.readLine()) != null) {
+            do {
+                line = lis.readLine();
+                if (line != null &&
+                        (line.startsWith(" ") || line.startsWith("\t"))) {
+                    // continuation of header
+                    if (prevline != null) {
+                        lineBuffer.append(prevline);
+                        prevline = null;
+                    }
+                    lineBuffer.append("\r\n");
+                    lineBuffer.append(line);
+                } else {
+                    // new header
+                    if (prevline != null)
+                        addHeaderLine(prevline);
+                    else if (lineBuffer.length() > 0) {
+                        // store previous header first
+                        addHeaderLine(lineBuffer.toString());
+                        lineBuffer.setLength(0);
+                    }
+                    prevline = line;
+                }
+            } while (line != null && line.length() > 0);
+        } catch (IOException ioex) {
+            throw new MessagingException("Error in input stream", ioex);
+        }
+    }
+
+    /**
+     * Return all the values for the specified header. The
+     * values are String objects.  Returns <code>null</code>
+     * if no headers with the specified name exist.
+     *
+     * @param   name header name
+     * @return          array of header values, or null if none
+     */
+    public String[] getHeader(String name) {
+        // XXX - should we just step through in index order?
+        FinalArrayList v = new FinalArrayList(); // accumulate return values
+
+        int len = headers.size();
+        for( int i=0; i<len; i++ ) {
+            hdr h = (hdr) headers.get(i);
+            if (name.equalsIgnoreCase(h.name)) {
+                v.add(h.getValue());
+            }
+        }
+        if (v.size() == 0)
+            return (null);
+        // convert Vector to an array for return
+        return (String[]) v.toArray(new String[v.size()]);
+    }
+
+    /**
+     * Get all the headers for this header name, returned as a single
+     * String, with headers separated by the delimiter. If the
+     * delimiter is <code>null</code>, only the first header is
+     * returned.  Returns <code>null</code>
+     * if no headers with the specified name exist.
+     *
+     * @param delimiter delimiter
+     * @return the value fields for all headers with
+     *         this name, or null if none
+     * @param   name header name
+     */
+    public String getHeader(String name, String delimiter) {
+        String[] s = getHeader(name);
+
+        if (s == null)
+            return null;
+
+        if ((s.length == 1) || delimiter == null)
+            return s[0];
+
+        StringBuffer r = new StringBuffer(s[0]);
+        for (int i = 1; i < s.length; i++) {
+            r.append(delimiter);
+            r.append(s[i]);
+        }
+        return r.toString();
+    }
+
+    /**
+     * Change the first header line that matches name
+     * to have value, adding a new header if no existing header
+     * matches. Remove all matching headers but the first. <p>
+     * <p/>
+     * Note that RFC822 headers can only contain US-ASCII characters
+     *
+     * @param   name    header name
+     * @param   value   header value
+     */
+    public void setHeader(String name, String value) {
+        boolean found = false;
+
+        for (int i = 0; i < headers.size(); i++) {
+            hdr h = (hdr) headers.get(i);
+            if (name.equalsIgnoreCase(h.name)) {
+                if (!found) {
+                    int j;
+                    if (h.line != null && (j = h.line.indexOf(':')) >= 0) {
+                        h.line = h.line.substring(0, j + 1) + " " + value;
+                    } else {
+                        h.line = name + ": " + value;
+                    }
+                    found = true;
+                } else {
+                    headers.remove(i);
+                    i--;    // have to look at i again
+                }
+            }
+        }
+
+        if (!found) {
+            addHeader(name, value);
+        }
+    }
+
+    /**
+     * Add a header with the specified name and value to the header list. <p>
+     * <p/>
+     * Note that RFC822 headers can only contain US-ASCII characters.
+     *
+     * @param   name    header name
+     * @param   value   header value
+     */
+    public void addHeader(String name, String value) {
+        int pos = headers.size();
+        for (int i = headers.size() - 1; i >= 0; i--) {
+            hdr h = (hdr) headers.get(i);
+            if (name.equalsIgnoreCase(h.name)) {
+                headers.add(i + 1, new hdr(name, value));
+                return;
+            }
+            // marker for default place to add new headers
+            if (h.name.equals(":"))
+                pos = i;
+        }
+        headers.add(pos, new hdr(name, value));
+    }
+
+    /**
+     * Remove all header entries that match the given name
+     *
+     * @param   name header name
+     */
+    public void removeHeader(String name) {
+        for (int i = 0; i < headers.size(); i++) {
+            hdr h = (hdr) headers.get(i);
+            if (name.equalsIgnoreCase(h.name)) {
+                headers.remove(i);
+                i--;    // have to look at i again
+            }
+        }
+    }
+
+    /**
+     * Return all the headers as an Enumeration of
+     * {@link Header} objects.
+     *
+     * @return  Header objects
+     */
+    public FinalArrayList getAllHeaders() {
+        return headers; // conceptually it should be read-only, but for performance reason I'm not wrapping it here
+    }
+
+    /**
+     * Add an RFC822 header line to the header store.
+     * If the line starts with a space or tab (a continuation line),
+     * add it to the last header line in the list. <p>
+     * <p/>
+     * Note that RFC822 headers can only contain US-ASCII characters
+     *
+     * @param   line    raw RFC822 header line
+     */
+    public void addHeaderLine(String line) {
+        try {
+            char c = line.charAt(0);
+            if (c == ' ' || c == '\t') {
+                hdr h = (hdr) headers.get(headers.size() - 1);
+                h.line += "\r\n" + line;
+            } else
+                headers.add(new hdr(line));
+        } catch (StringIndexOutOfBoundsException e) {
+            // line is empty, ignore it
+            return;
+        } catch (NoSuchElementException e) {
+            // XXX - vector is empty?
+        }
+    }
+
+    /**
+     * Return all the header lines as a collection
+     */
+    public List getAllHeaderLines() {
+        if(headerValueView==null)
+            headerValueView = new AbstractList() {
+                public Object get(int index) {
+                    return ((hdr)headers.get(index)).line;
+                }
+
+                public int size() {
+                    return headers.size();
+                }
+            };
+        return headerValueView;
+    }
+}
+
+/*
+ * A private utility class to represent an individual header.
+ */
+
+class hdr implements Header {
+    // XXX - should these be private?
+    String name;    // the canonicalized (trimmed) name of this header
+    // XXX - should name be stored in lower case?
+    String line;    // the entire RFC822 header "line"
+
+    /*
+     * Constructor that takes a line and splits out
+     * the header name.
+     */
+    hdr(String l) {
+        int i = l.indexOf(':');
+        if (i < 0) {
+            // should never happen
+            name = l.trim();
+        } else {
+            name = l.substring(0, i).trim();
+        }
+        line = l;
+    }
+
+    /*
+     * Constructor that takes a header name and value.
+     */
+    hdr(String n, String v) {
+        name = n;
+        line = n + ": " + v;
+    }
+
+    /*
+     * Return the "name" part of the header line.
+     */
+    public String getName() {
+        return name;
+    }
+
+    /*
+     * Return the "value" part of the header line.
+     */
+    public String getValue() {
+        int i = line.indexOf(':');
+        if (i < 0)
+            return line;
+
+        int j;
+        if (name.equalsIgnoreCase("Content-Description")) {
+            // Content-Description should retain the folded whitespace after header unfolding -
+            // rf. RFC2822 section 2.2.3, rf. RFC2822 section 3.2.3
+            for (j = i + 1; j < line.length(); j++) {
+                char c = line.charAt(j);
+                if (!(/*c == ' ' ||*/c == '\t' || c == '\r' || c == '\n'))
+                    break;
+            }
+        } else {
+            // skip whitespace after ':'
+            for (j = i + 1; j < line.length(); j++) {
+                char c = line.charAt(j);
+                if (!(c == ' ' || c == '\t' || c == '\r' || c == '\n'))
+                    break;
+            }
+        }
+        return line.substring(j);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimeBodyPart.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,1165 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)MimeBodyPart.java      1.52 03/02/12
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
+
+
+import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException;
+import com.sun.xml.internal.messaging.saaj.packaging.mime.util.OutputUtil;
+import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;
+import com.sun.xml.internal.messaging.saaj.util.FinalArrayList;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.activation.DataHandler;
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+import java.util.List;
+import javax.activation.DataSource;
+import com.sun.xml.internal.org.jvnet.mimepull.MIMEPart;
+
+/**
+ * This class represents a MIME body part.
+ * MimeBodyParts are contained in <code>MimeMultipart</code>
+ * objects. <p>
+ *
+ * MimeBodyPart uses the <code>InternetHeaders</code> class to parse
+ * and store the headers of that body part. <p>
+ *
+ * <hr><strong>A note on RFC 822 and MIME headers</strong><p>
+ *
+ * RFC 822 header fields <strong>must</strong> contain only
+ * US-ASCII characters. MIME allows non ASCII characters to be present
+ * in certain portions of certain headers, by encoding those characters.
+ * RFC 2047 specifies the rules for doing this. The MimeUtility
+ * class provided in this package can be used to to achieve this.
+ * Callers of the <code>setHeader</code>, <code>addHeader</code>, and
+ * <code>addHeaderLine</code> methods are responsible for enforcing
+ * the MIME requirements for the specified headers.  In addition, these
+ * header fields must be folded (wrapped) before being sent if they
+ * exceed the line length limitation for the transport (1000 bytes for
+ * SMTP).  Received headers may have been folded.  The application is
+ * responsible for folding and unfolding headers as appropriate. <p>
+ *
+ * @author John Mani
+ * @author Bill Shannon
+ * @see MimeUtility
+ */
+
+public final class MimeBodyPart {
+
+    /**
+     * This part should be presented as an attachment.
+     * @see #getDisposition
+     * @see #setDisposition
+     */
+    public static final String ATTACHMENT = "attachment";
+
+    /**
+     * This part should be presented inline.
+     * @see #getDisposition
+     * @see #setDisposition
+     */
+    public static final String INLINE = "inline";
+
+
+    // Paranoia:
+    // allow this last minute change to be disabled if it causes problems
+    private static boolean setDefaultTextCharset = true;
+
+    static {
+        try {
+            String s = System.getProperty("mail.mime.setdefaulttextcharset");
+            // default to true
+            setDefaultTextCharset = s == null || !s.equalsIgnoreCase("false");
+        } catch (SecurityException sex) {
+            // ignore it
+        }
+    }
+
+    /*
+        Data is represented in one of three forms.
+        Either we have a DataHandler, or byte[] as the raw content image, or the contentStream.
+        It's OK to have more than one of them, provided that they are identical.
+    */
+
+    /**
+     * The DataHandler object representing this MimeBodyPart's content.
+     */
+    private DataHandler dh;
+
+    /**
+     * Byte array that holds the bytes of the content of this MimeBodyPart.
+     * Used in a pair with {@link #contentLength} to denote a regision of a buffer
+     * as a valid data.
+     */
+    private byte[] content;
+    private int contentLength;
+    private int start = 0;
+
+    /**
+     * If the data for this body part was supplied by an
+     * InputStream that implements the SharedInputStream interface,
+     * <code>contentStream</code> is another such stream representing
+     * the content of this body part.  In this case, <code>content</code>
+     * will be null.
+     *
+     * @since   JavaMail 1.2
+     */
+    private InputStream contentStream;
+
+
+
+    /**
+     * The InternetHeaders object that stores all the headers
+     * of this body part.
+     */
+    private final InternetHeaders headers;
+
+    /**
+     * The <code>MimeMultipart</code> object containing this <code>MimeBodyPart</code>,
+     * if known.
+     * @since   JavaMail 1.1
+     */
+    private MimeMultipart parent;
+
+    private MIMEPart mimePart;
+
+    /**
+     * An empty MimeBodyPart object is created.
+     * This body part maybe filled in by a client constructing a multipart
+     * message.
+     */
+    public MimeBodyPart() {
+        headers = new InternetHeaders();
+    }
+
+    /**
+     * Constructs a MimeBodyPart by reading and parsing the data from
+     * the specified input stream. The parser consumes data till the end
+     * of the given input stream.  The input stream must start at the
+     * beginning of a valid MIME body part and must terminate at the end
+     * of that body part. <p>
+     *
+     * Note that the "boundary" string that delimits body parts must
+     * <strong>not</strong> be included in the input stream. The intention
+     * is that the MimeMultipart parser will extract each body part's bytes
+     * from a multipart stream and feed them into this constructor, without
+     * the delimiter strings.
+     *
+     * @param   is      the body part Input Stream
+     */
+    public MimeBodyPart(InputStream is) throws MessagingException {
+        if (!(is instanceof ByteArrayInputStream) &&
+                !(is instanceof BufferedInputStream) &&
+                !(is instanceof SharedInputStream))
+            is = new BufferedInputStream(is);
+
+        headers = new InternetHeaders(is);
+
+        if (is instanceof SharedInputStream) {
+            SharedInputStream sis = (SharedInputStream) is;
+            contentStream = sis.newStream(sis.getPosition(), -1);
+        } else {
+            ByteOutputStream bos = null;
+            try {
+                bos = new ByteOutputStream();
+                bos.write(is);
+                content = bos.getBytes();
+                contentLength = bos.getCount();
+            } catch (IOException ioex) {
+                throw new MessagingException("Error reading input stream", ioex);
+            } finally {
+                if (bos != null)
+                    bos.close();
+            }
+        }
+
+    }
+
+    /**
+     * Constructs a MimeBodyPart using the given header and
+     * content bytes. <p>
+     *
+     * Used by providers.
+     *
+     * @param   headers The header of this part
+     * @param   content bytes representing the body of this part.
+     */
+    public MimeBodyPart(InternetHeaders headers, byte[] content, int len) {
+        this.headers = headers;
+        this.content = content;
+        this.contentLength = len;
+    }
+
+    public MimeBodyPart(
+        InternetHeaders headers, byte[] content, int start,  int len) {
+        this.headers = headers;
+        this.content = content;
+        this.start = start;
+        this.contentLength = len;
+    }
+
+    public MimeBodyPart(MIMEPart part) {
+       mimePart = part;
+       headers = new InternetHeaders();
+       List<? extends com.sun.xml.internal.org.jvnet.mimepull.Header> hdrs = mimePart.getAllHeaders();
+        for (com.sun.xml.internal.org.jvnet.mimepull.Header hd : hdrs) {
+            headers.addHeader(hd.getName(), hd.getValue());
+        }
+    }
+    /**
+     * Return the containing <code>MimeMultipart</code> object,
+     * or <code>null</code> if not known.
+     */
+    public MimeMultipart getParent() {
+        return parent;
+    }
+
+    /**
+     * Set the parent of this <code>MimeBodyPart</code> to be the specified
+     * <code>MimeMultipart</code>.  Normally called by <code>MimeMultipart</code>'s
+     * <code>addBodyPart</code> method.  <code>parent</code> may be
+     * <code>null</code> if the <code>MimeBodyPart</code> is being removed
+     * from its containing <code>MimeMultipart</code>.
+     * @since   JavaMail 1.1
+     */
+    public void setParent(MimeMultipart parent) {
+        this.parent = parent;
+    }
+
+    /**
+     * Return the size of the content of this body part in bytes.
+     * Return -1 if the size cannot be determined. <p>
+     *
+     * Note that this number may not be an exact measure of the
+     * content size and may or may not account for any transfer
+     * encoding of the content. <p>
+     *
+     * This implementation returns the size of the <code>content</code>
+     * array (if not null), or, if <code>contentStream</code> is not
+     * null, and the <code>available</code> method returns a positive
+     * number, it returns that number as the size.  Otherwise, it returns
+     * -1.
+     *
+     * @return size in bytes, or -1 if not known
+     */
+    public int getSize() {
+
+        if (mimePart != null) {
+            try {
+                return mimePart.read().available();
+            } catch (IOException ex) {
+                return -1;
+            }
+        }
+        if (content != null)
+            return contentLength;
+        if (contentStream != null) {
+            try {
+                int size = contentStream.available();
+                // only believe the size if it's greate than zero, since zero
+                // is the default returned by the InputStream class itself
+                if (size > 0)
+                    return size;
+            } catch (IOException ex) {
+                // ignore it
+            }
+        }
+        return -1;
+    }
+
+    /**
+     * Return the number of lines for the content of this MimeBodyPart.
+     * Return -1 if this number cannot be determined. <p>
+     *
+     * Note that this number may not be an exact measure of the
+     * content length and may or may not account for any transfer
+     * encoding of the content. <p>
+     *
+     * This implementation returns -1.
+     *
+     * @return number of lines, or -1 if not known
+     */
+     public int getLineCount() {
+        return -1;
+     }
+
+    /**
+     * Returns the value of the RFC 822 "Content-Type" header field.
+     * This represents the content type of the content of this
+     * body part. This value must not be null. If this field is
+     * unavailable, "text/plain" should be returned. <p>
+     *
+     * This implementation uses <code>getHeader(name)</code>
+     * to obtain the requisite header field.
+     *
+     * @return  Content-Type of this body part
+     */
+    public String getContentType() {
+        if (mimePart != null) {
+            return mimePart.getContentType();
+        }
+        String s = getHeader("Content-Type", null);
+        if (s == null)
+            s = "text/plain";
+
+        return s;
+    }
+
+    /**
+     * Is this MimeBodyPart of the specified MIME type?  This method
+     * compares <strong>only the <code>primaryType</code> and
+     * <code>subType</code></strong>.
+     * The parameters of the content types are ignored. <p>
+     *
+     * For example, this method will return <code>true</code> when
+     * comparing a MimeBodyPart of content type <strong>"text/plain"</strong>
+     * with <strong>"text/plain; charset=foobar"</strong>. <p>
+     *
+     * If the <code>subType</code> of <code>mimeType</code> is the
+     * special character '*', then the subtype is ignored during the
+     * comparison.
+     */
+    public boolean isMimeType(String mimeType) {
+        boolean result;
+        // XXX - lots of room for optimization here!
+        try {
+            ContentType ct = new ContentType(getContentType());
+            result = ct.match(mimeType);
+        } catch (ParseException ex) {
+            result = getContentType().equalsIgnoreCase(mimeType);
+        }
+        return result;
+    }
+
+    /**
+     * Returns the value of the "Content-Disposition" header field.
+     * This represents the disposition of this part. The disposition
+     * describes how the part should be presented to the user. <p>
+     *
+     * If the Content-Disposition field is unavailable,
+     * null is returned. <p>
+     *
+     * This implementation uses <code>getHeader(name)</code>
+     * to obtain the requisite header field.
+     *
+     * @see #headers
+     */
+    public String getDisposition() throws MessagingException {
+        String s = getHeader("Content-Disposition", null);
+
+        if (s == null)
+            return null;
+
+        ContentDisposition cd = new ContentDisposition(s);
+        return cd.getDisposition();
+    }
+
+    /**
+     * Set the "Content-Disposition" header field of this body part.
+     * If the disposition is null, any existing "Content-Disposition"
+     * header field is removed.
+     *
+     * @exception       IllegalStateException if this body part is
+     *                  obtained from a READ_ONLY folder.
+     */
+    public void setDisposition(String disposition) throws MessagingException {
+        if (disposition == null)
+            removeHeader("Content-Disposition");
+        else {
+            String s = getHeader("Content-Disposition", null);
+            if (s != null) {
+                /* A Content-Disposition header already exists ..
+                 *
+                 * Override disposition, but attempt to retain
+                 * existing disposition parameters
+                 */
+                ContentDisposition cd = new ContentDisposition(s);
+                cd.setDisposition(disposition);
+                disposition = cd.toString();
+            }
+            setHeader("Content-Disposition", disposition);
+        }
+    }
+
+    /**
+     * Returns the content transfer encoding from the
+     * "Content-Transfer-Encoding" header
+     * field. Returns <code>null</code> if the header is unavailable
+     * or its value is absent. <p>
+     *
+     * This implementation uses <code>getHeader(name)</code>
+     * to obtain the requisite header field.
+     *
+     * @see #headers
+     */
+    public String getEncoding() throws MessagingException {
+        String s = getHeader("Content-Transfer-Encoding", null);
+
+        if (s == null)
+            return null;
+
+        s = s.trim();   // get rid of trailing spaces
+        // quick check for known values to avoid unnecessary use
+        // of tokenizer.
+        if (s.equalsIgnoreCase("7bit") || s.equalsIgnoreCase("8bit") ||
+            s.equalsIgnoreCase("quoted-printable") ||
+            s.equalsIgnoreCase("base64"))
+            return s;
+
+        // Tokenize the header to obtain the encoding (skip comments)
+        HeaderTokenizer h = new HeaderTokenizer(s, HeaderTokenizer.MIME);
+
+        HeaderTokenizer.Token tk;
+        int tkType;
+
+        for (;;) {
+            tk = h.next(); // get a token
+            tkType = tk.getType();
+            if (tkType == HeaderTokenizer.Token.EOF)
+            break; // done
+            else if (tkType == HeaderTokenizer.Token.ATOM)
+            return tk.getValue();
+            else // invalid token, skip it.
+            continue;
+        }
+        return s;
+    }
+
+    /**
+     * Returns the value of the "Content-ID" header field. Returns
+     * <code>null</code> if the field is unavailable or its value is
+     * absent. <p>
+     *
+     * This implementation uses <code>getHeader(name)</code>
+     * to obtain the requisite header field.
+     */
+    public String getContentID() {
+        return getHeader("Content-ID", null);
+    }
+
+    /**
+     * Set the "Content-ID" header field of this body part.
+     * If the <code>cid</code> parameter is null, any existing
+     * "Content-ID" is removed.
+     *
+     * @exception       IllegalStateException if this body part is
+     *                  obtained from a READ_ONLY folder.
+     * @since           JavaMail 1.3
+     */
+    public void setContentID(String cid) {
+        if (cid == null)
+            removeHeader("Content-ID");
+        else
+            setHeader("Content-ID", cid);
+    }
+
+    /**
+     * Return the value of the "Content-MD5" header field. Returns
+     * <code>null</code> if this field is unavailable or its value
+     * is absent. <p>
+     *
+     * This implementation uses <code>getHeader(name)</code>
+     * to obtain the requisite header field.
+     */
+    public String getContentMD5() {
+        return getHeader("Content-MD5", null);
+    }
+
+    /**
+     * Set the "Content-MD5" header field of this body part.
+     *
+     * @exception       IllegalStateException if this body part is
+     *                  obtained from a READ_ONLY folder.
+     */
+    public void setContentMD5(String md5) {
+        setHeader("Content-MD5", md5);
+    }
+
+    /**
+     * Get the languages specified in the Content-Language header
+     * of this MimeBodyPart. The Content-Language header is defined by
+     * RFC 1766. Returns <code>null</code> if this header is not
+     * available or its value is absent. <p>
+     *
+     * This implementation uses <code>getHeader(name)</code>
+     * to obtain the requisite header field.
+     */
+    public String[] getContentLanguage() throws MessagingException {
+        String s = getHeader("Content-Language", null);
+
+        if (s == null)
+            return null;
+
+        // Tokenize the header to obtain the Language-tags (skip comments)
+        HeaderTokenizer h = new HeaderTokenizer(s, HeaderTokenizer.MIME);
+        FinalArrayList v = new FinalArrayList();
+
+        HeaderTokenizer.Token tk;
+        int tkType;
+
+        while (true) {
+            tk = h.next(); // get a language-tag
+            tkType = tk.getType();
+            if (tkType == HeaderTokenizer.Token.EOF)
+            break; // done
+            else if (tkType == HeaderTokenizer.Token.ATOM) v.add(tk.getValue());
+            else // invalid token, skip it.
+            continue;
+        }
+
+        if (v.size() == 0)
+            return null;
+
+        return (String[])v.toArray(new String[v.size()]);
+    }
+
+    /**
+     * Set the Content-Language header of this MimeBodyPart. The
+     * Content-Language header is defined by RFC 1766.
+     *
+     * @param languages         array of language tags
+     */
+    public void setContentLanguage(String[] languages) {
+        StringBuffer sb = new StringBuffer(languages[0]);
+        for (int i = 1; i < languages.length; i++)
+            sb.append(',').append(languages[i]);
+        setHeader("Content-Language", sb.toString());
+    }
+
+    /**
+     * Returns the "Content-Description" header field of this body part.
+     * This typically associates some descriptive information with
+     * this part. Returns null if this field is unavailable or its
+     * value is absent. <p>
+     *
+     * If the Content-Description field is encoded as per RFC 2047,
+     * it is decoded and converted into Unicode. If the decoding or
+     * conversion fails, the raw data is returned as is. <p>
+     *
+     * This implementation uses <code>getHeader(name)</code>
+     * to obtain the requisite header field.
+     *
+     * @return  content description
+     */
+    public String getDescription() {
+        String rawvalue = getHeader("Content-Description", null);
+
+        if (rawvalue == null)
+            return null;
+
+        try {
+            return MimeUtility.decodeText(MimeUtility.unfold(rawvalue));
+        } catch (UnsupportedEncodingException ex) {
+            return rawvalue;
+        }
+    }
+
+    /**
+     * Set the "Content-Description" header field for this body part.
+     * If the description parameter is <code>null</code>, then any
+     * existing "Content-Description" fields are removed. <p>
+     *
+     * If the description contains non US-ASCII characters, it will
+     * be encoded using the platform's default charset. If the
+     * description contains only US-ASCII characters, no encoding
+     * is done and it is used as is. <p>
+     *
+     * Note that if the charset encoding process fails, a
+     * MessagingException is thrown, and an UnsupportedEncodingException
+     * is included in the chain of nested exceptions within the
+     * MessagingException.
+     *
+     * @param description content description
+     * @exception       IllegalStateException if this body part is
+     *                  obtained from a READ_ONLY folder.
+     * @exception       MessagingException An
+     *                  UnsupportedEncodingException may be included
+     *                  in the exception chain if the charset
+     *                  conversion fails.
+     */
+    public void setDescription(String description) throws MessagingException {
+        setDescription(description, null);
+    }
+
+    /**
+     * Set the "Content-Description" header field for this body part.
+     * If the description parameter is <code>null</code>, then any
+     * existing "Content-Description" fields are removed. <p>
+     *
+     * If the description contains non US-ASCII characters, it will
+     * be encoded using the specified charset. If the description
+     * contains only US-ASCII characters, no encoding  is done and
+     * it is used as is. <p>
+     *
+     * Note that if the charset encoding process fails, a
+     * MessagingException is thrown, and an UnsupportedEncodingException
+     * is included in the chain of nested exceptions within the
+     * MessagingException.
+     *
+     * @param   description     Description
+     * @param   charset         Charset for encoding
+     * @exception       IllegalStateException if this body part is
+     *                  obtained from a READ_ONLY folder.
+     * @exception       MessagingException An
+     *                  UnsupportedEncodingException may be included
+     *                  in the exception chain if the charset
+     *                  conversion fails.
+     */
+    public void setDescription(String description, String charset)
+                throws MessagingException {
+        if (description == null) {
+            removeHeader("Content-Description");
+            return;
+        }
+
+        try {
+            setHeader("Content-Description", MimeUtility.fold(21,
+            MimeUtility.encodeText(description, charset, null)));
+        } catch (UnsupportedEncodingException uex) {
+            throw new MessagingException("Encoding error", uex);
+        }
+    }
+
+    /**
+     * Get the filename associated with this body part. <p>
+     *
+     * Returns the value of the "filename" parameter from the
+     * "Content-Disposition" header field of this body part. If its
+     * not available, returns the value of the "name" parameter from
+     * the "Content-Type" header field of this body part.
+     * Returns <code>null</code> if both are absent.
+     *
+     * @return  filename
+     */
+    public String getFileName() throws MessagingException {
+        String filename = null;
+        String s = getHeader("Content-Disposition", null);
+
+        if (s != null) {
+            // Parse the header ..
+            ContentDisposition cd = new ContentDisposition(s);
+            filename = cd.getParameter("filename");
+        }
+        if (filename == null) {
+            // Still no filename ? Try the "name" ContentType parameter
+            s = getHeader("Content-Type", null);
+            if (s != null) {
+            try {
+                ContentType ct = new ContentType(s);
+                filename = ct.getParameter("name");
+            } catch (ParseException pex) { }    // ignore it
+            }
+        }
+        return filename;
+    }
+
+    /**
+     * Set the filename associated with this body part, if possible. <p>
+     *
+     * Sets the "filename" parameter of the "Content-Disposition"
+     * header field of this body part.
+     *
+     * @exception       IllegalStateException if this body part is
+     *                  obtained from a READ_ONLY folder.
+     */
+    public void setFileName(String filename) throws MessagingException {
+        // Set the Content-Disposition "filename" parameter
+        String s = getHeader("Content-Disposition", null);
+        ContentDisposition cd =
+            new ContentDisposition(s == null ? ATTACHMENT : s);
+        cd.setParameter("filename", filename);
+        setHeader("Content-Disposition", cd.toString());
+
+        /* Also attempt to set the Content-Type "name" parameter,
+         * to satisfy ancient MUAs.
+         * XXX: This is not RFC compliant, and hence should really
+         * be conditional based on some property. Fix this once we
+         * figure out how to get at Properties from here !
+         */
+        s = getHeader("Content-Type", null);
+        if (s != null) {
+            try {
+            ContentType cType = new ContentType(s);
+            cType.setParameter("name", filename);
+            setHeader("Content-Type", cType.toString());
+            } catch (ParseException pex) { }    // ignore it
+        }
+    }
+
+    /**
+     * Return a decoded input stream for this body part's "content". <p>
+     *
+     * This implementation obtains the input stream from the DataHandler.
+     * That is, it invokes getDataHandler().getInputStream();
+     *
+     * @return          an InputStream
+     * @exception       IOException this is typically thrown by the
+     *                  DataHandler. Refer to the documentation for
+     *                  javax.activation.DataHandler for more details.
+     *
+     * @see     #getContentStream
+     * @see     DataHandler#getInputStream
+     */
+    public InputStream getInputStream()
+                throws IOException {
+        return getDataHandler().getInputStream();
+    }
+
+   /**
+     * Produce the raw bytes of the content. This method is used
+     * when creating a DataHandler object for the content. Subclasses
+     * that can provide a separate input stream for just the MimeBodyPart
+     * content might want to override this method. <p>
+     *
+     * @see #content
+     */
+    /*package*/ InputStream getContentStream() throws MessagingException {
+        if (mimePart != null) {
+            return mimePart.read();
+        }
+        if (contentStream != null)
+            return ((SharedInputStream)contentStream).newStream(0, -1);
+        if (content != null)
+            return new ByteArrayInputStream(content,start,contentLength);
+
+        throw new MessagingException("No content");
+    }
+
+    /**
+     * Return an InputStream to the raw data with any Content-Transfer-Encoding
+     * intact.  This method is useful if the "Content-Transfer-Encoding"
+     * header is incorrect or corrupt, which would prevent the
+     * <code>getInputStream</code> method or <code>getContent</code> method
+     * from returning the correct data.  In such a case the application may
+     * use this method and attempt to decode the raw data itself. <p>
+     *
+     * This implementation simply calls the <code>getContentStream</code>
+     * method.
+     *
+     * @see     #getInputStream
+     * @see     #getContentStream
+     * @since   JavaMail 1.2
+     */
+    public InputStream getRawInputStream() throws MessagingException {
+        return getContentStream();
+    }
+
+    /**
+     * Return a DataHandler for this body part's content. <p>
+     *
+     * The implementation provided here works just like the
+     * the implementation in MimeMessage.
+     */
+    public DataHandler getDataHandler() {
+        if (mimePart != null) {
+            //return an inputstream
+            return new DataHandler(new DataSource() {
+
+                public InputStream getInputStream() throws IOException {
+                    return mimePart.read();
+                }
+
+                public OutputStream getOutputStream() throws IOException {
+                    throw new UnsupportedOperationException("getOutputStream cannot be supported : You have enabled LazyAttachments Option");
+                }
+
+                public String getContentType() {
+                    return mimePart.getContentType();
+                }
+
+                public String getName() {
+                    return "MIMEPart Wrapped DataSource";
+                }
+            });
+        }
+        if (dh == null)
+            dh = new DataHandler(new MimePartDataSource(this));
+        return dh;
+    }
+
+    /**
+     * Return the content as a java object. The type of the object
+     * returned is of course dependent on the content itself. For
+     * example, the native format of a text/plain content is usually
+     * a String object. The native format for a "multipart"
+     * content is always a MimeMultipart subclass. For content types that are
+     * unknown to the DataHandler system, an input stream is returned
+     * as the content. <p>
+     *
+     * This implementation obtains the content from the DataHandler.
+     * That is, it invokes getDataHandler().getContent();
+     *
+     * @return          Object
+     * @exception       IOException this is typically thrown by the
+     *                  DataHandler. Refer to the documentation for
+     *                  javax.activation.DataHandler for more details.
+     */
+    public Object getContent() throws IOException {
+        return getDataHandler().getContent();
+    }
+
+    /**
+     * This method provides the mechanism to set this body part's content.
+     * The given DataHandler object should wrap the actual content.
+     *
+     * @param   dh      The DataHandler for the content
+     * @exception       IllegalStateException if this body part is
+     *                  obtained from a READ_ONLY folder.
+     */
+    public void setDataHandler(DataHandler dh) {
+        if (mimePart != null) {
+            mimePart = null;
+        }
+        this.dh = dh;
+        this.content = null;
+        this.contentStream = null;
+        removeHeader("Content-Type");
+        removeHeader("Content-Transfer-Encoding");
+    }
+
+    /**
+     * A convenience method for setting this body part's content. <p>
+     *
+     * The content is wrapped in a DataHandler object. Note that a
+     * DataContentHandler class for the specified type should be
+     * available to the JavaMail implementation for this to work right.
+     * That is, to do <code>setContent(foobar, "application/x-foobar")</code>,
+     * a DataContentHandler for "application/x-foobar" should be installed.
+     * Refer to the Java Activation Framework for more information.
+     *
+     * @param   o       the content object
+     * @param   type    Mime type of the object
+     * @exception       IllegalStateException if this body part is
+     *                  obtained from a READ_ONLY folder.
+     */
+    public void setContent(Object o, String type) {
+        if (mimePart != null) {
+            mimePart = null;
+        }
+        if (o instanceof MimeMultipart) {
+            setContent((MimeMultipart)o);
+        } else {
+            setDataHandler(new DataHandler(o, type));
+        }
+    }
+
+    /**
+     * Convenience method that sets the given String as this
+     * part's content, with a MIME type of "text/plain". If the
+     * string contains non US-ASCII characters, it will be encoded
+     * using the platform's default charset. The charset is also
+     * used to set the "charset" parameter. <p>
+     *
+     * Note that there may be a performance penalty if
+     * <code>text</code> is large, since this method may have
+     * to scan all the characters to determine what charset to
+     * use. <p>
+     * If the charset is already known, use the
+     * setText() version that takes the charset parameter.
+     *
+     * @see     #setText(String text, String charset)
+     */
+    public void setText(String text) {
+        setText(text, null);
+    }
+
+    /**
+     * Convenience method that sets the given String as this part's
+     * content, with a MIME type of "text/plain" and the specified
+     * charset. The given Unicode string will be charset-encoded
+     * using the specified charset. The charset is also used to set
+     * the "charset" parameter.
+     */
+    public void setText(String text, String charset) {
+        if (charset == null) {
+            if (MimeUtility.checkAscii(text) != MimeUtility.ALL_ASCII)
+                charset = MimeUtility.getDefaultMIMECharset();
+            else
+                charset = "us-ascii";
+        }
+        setContent(text, "text/plain; charset=" +
+                MimeUtility.quote(charset, HeaderTokenizer.MIME));
+    }
+
+    /**
+     * This method sets the body part's content to a MimeMultipart object.
+     *
+     * @param  mp       The multipart object that is the Message's content
+     * @exception       IllegalStateException if this body part is
+     *                  obtained from a READ_ONLY folder.
+     */
+    public void setContent(MimeMultipart mp) {
+        if (mimePart != null) {
+            mimePart = null;
+        }
+        setDataHandler(new DataHandler(mp, mp.getContentType().toString()));
+        mp.setParent(this);
+    }
+
+    /**
+     * Output the body part as an RFC 822 format stream.
+     *
+     * @exception MessagingException
+     * @exception IOException   if an error occurs writing to the
+     *                          stream or if an error is generated
+     *                          by the javax.activation layer.
+     * @see DataHandler#writeTo
+     */
+    public void writeTo(OutputStream os)
+                                throws IOException, MessagingException {
+
+        // First, write out the header
+        List hdrLines = headers.getAllHeaderLines();
+        int sz = hdrLines.size();
+        for( int i=0; i<sz; i++ )
+            OutputUtil.writeln((String)hdrLines.get(i),os);
+
+        // The CRLF separator between header and content
+        OutputUtil.writeln(os);
+
+        // Finally, the content.
+        // XXX: May need to account for ESMTP ?
+        if (contentStream != null) {
+            ((SharedInputStream)contentStream).writeTo(0,-1,os);
+        } else
+        if (content != null) {
+            os.write(content,start,contentLength);
+        } else
+        if (dh!=null) {
+            // this is the slowest route, so try it as the last resort
+            OutputStream wos = MimeUtility.encode(os, getEncoding());
+            getDataHandler().writeTo(wos);
+            if(os!=wos)
+                wos.flush(); // Needed to complete encoding
+        } else if (mimePart != null) {
+            OutputStream wos = MimeUtility.encode(os, getEncoding());
+            getDataHandler().writeTo(wos);
+            if(os!=wos)
+                wos.flush(); // Needed to complete encoding
+        }else {
+            throw new MessagingException("no content");
+        }
+    }
+
+    /**
+     * Get all the headers for this header_name. Note that certain
+     * headers may be encoded as per RFC 2047 if they contain
+     * non US-ASCII characters and these should be decoded.
+     *
+     * @param   name    name of header
+     * @return  array of headers
+     * @see     MimeUtility
+     */
+    public String[] getHeader(String name) {
+        return headers.getHeader(name);
+    }
+
+    /**
+     * Get all the headers for this header name, returned as a single
+     * String, with headers separated by the delimiter. If the
+     * delimiter is <code>null</code>, only the first header is
+     * returned.
+     *
+     * @param name              the name of this header
+     * @param delimiter         delimiter between fields in returned string
+     * @return                  the value fields for all headers with
+     *                          this name
+     */
+    public String getHeader(String name, String delimiter) {
+        return headers.getHeader(name, delimiter);
+    }
+
+    /**
+     * Set the value for this header_name. Replaces all existing
+     * header values with this new value. Note that RFC 822 headers
+     * must contain only US-ASCII characters, so a header that
+     * contains non US-ASCII characters must be encoded as per the
+     * rules of RFC 2047.
+     *
+     * @param   name    header name
+     * @param   value   header value
+     * @see     MimeUtility
+     */
+    public void setHeader(String name, String value) {
+        headers.setHeader(name, value);
+    }
+
+    /**
+     * Add this value to the existing values for this header_name.
+     * Note that RFC 822 headers must contain only US-ASCII
+     * characters, so a header that contains non US-ASCII characters
+     * must be encoded as per the rules of RFC 2047.
+     *
+     * @param   name    header name
+     * @param   value   header value
+     * @see     MimeUtility
+     */
+    public void addHeader(String name, String value) {
+        headers.addHeader(name, value);
+    }
+
+    /**
+     * Remove all headers with this name.
+     */
+    public void removeHeader(String name) {
+        headers.removeHeader(name);
+    }
+
+    /**
+     * Return all the headers from this Message as an Enumeration of
+     * Header objects.
+     */
+    public FinalArrayList getAllHeaders() {
+        return headers.getAllHeaders();
+    }
+
+
+    /**
+     * Add a header line to this body part
+     */
+    public void addHeaderLine(String line) {
+        headers.addHeaderLine(line);
+    }
+
+    /**
+     * Examine the content of this body part and update the appropriate
+     * MIME headers.  Typical headers that get set here are
+     * <code>Content-Type</code> and <code>Content-Transfer-Encoding</code>.
+     * Headers might need to be updated in two cases:
+     *
+     * <br>
+     * - A message being crafted by a mail application will certainly
+     * need to activate this method at some point to fill up its internal
+     * headers.
+     *
+     * <br>
+     * - A message read in from a Store will have obtained
+     * all its headers from the store, and so doesn't need this.
+     * However, if this message is editable and if any edits have
+     * been made to either the content or message structure, we might
+     * need to resync our headers.
+     *
+     * <br>
+     * In both cases this method is typically called by the
+     * <code>Message.saveChanges</code> method.
+     */
+    protected void updateHeaders() throws MessagingException {
+        DataHandler dh = getDataHandler();
+        /*
+         * Code flow indicates null is never returned from
+         * getdataHandler() - findbugs
+         */
+        //if (dh == null) // Huh ?
+        //    return;
+
+        try {
+            String type = dh.getContentType();
+            boolean composite = false;
+            boolean needCTHeader = getHeader("Content-Type") == null;
+
+            ContentType cType = new ContentType(type);
+            if (cType.match("multipart/*")) {
+                // If multipart, recurse
+                composite = true;
+                Object o = dh.getContent();
+                ((MimeMultipart) o).updateHeaders();
+            } else if (cType.match("message/rfc822")) {
+                composite = true;
+            }
+
+            // Content-Transfer-Encoding, but only if we don't
+            // already have one
+            if (!composite) {   // not allowed on composite parts
+                if (getHeader("Content-Transfer-Encoding") == null)
+                    setEncoding(MimeUtility.getEncoding(dh));
+
+                if (needCTHeader && setDefaultTextCharset &&
+                        cType.match("text/*") &&
+                        cType.getParameter("charset") == null) {
+                    /*
+                     * Set a default charset for text parts.
+                     * We really should examine the data to determine
+                     * whether or not it's all ASCII, but that's too
+                     * expensive so we make an assumption:  If we
+                     * chose 7bit encoding for this data, it's probably
+                     * ASCII.  (MimeUtility.getEncoding will choose
+                     * 7bit only in this case, but someone might've
+                     * set the Content-Transfer-Encoding header manually.)
+                     */
+                    String charset;
+                    String enc = getEncoding();
+                    if (enc != null && enc.equalsIgnoreCase("7bit"))
+                        charset = "us-ascii";
+                    else
+                        charset = MimeUtility.getDefaultMIMECharset();
+                    cType.setParameter("charset", charset);
+                    type = cType.toString();
+                }
+            }
+
+            // Now, let's update our own headers ...
+
+            // Content-type, but only if we don't already have one
+            if (needCTHeader) {
+                /*
+                 * Pull out "filename" from Content-Disposition, and
+                 * use that to set the "name" parameter. This is to
+                 * satisfy older MUAs (DtMail, Roam and probably
+                 * a bunch of others).
+                 */
+                String s = getHeader("Content-Disposition", null);
+                if (s != null) {
+                    // Parse the header ..
+                    ContentDisposition cd = new ContentDisposition(s);
+                    String filename = cd.getParameter("filename");
+                    if (filename != null) {
+                        cType.setParameter("name", filename);
+                        type = cType.toString();
+                    }
+                }
+
+                setHeader("Content-Type", type);
+            }
+        } catch (IOException ex) {
+            throw new MessagingException("IOException updating headers", ex);
+        }
+    }
+
+    private void setEncoding(String encoding) {
+            setHeader("Content-Transfer-Encoding", encoding);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimeMultipart.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,657 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)MimeMultipart.java     1.31 03/01/29
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
+
+import java.io.*;
+
+import javax.activation.DataSource;
+
+import com.sun.xml.internal.messaging.saaj.packaging.mime.*;
+import com.sun.xml.internal.messaging.saaj.packaging.mime.util.*;
+import com.sun.xml.internal.messaging.saaj.util.FinalArrayList;
+import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;
+import com.sun.xml.internal.messaging.saaj.util.SAAJUtil;
+
+/**
+ * The MimeMultipart class is an implementation
+ * that uses MIME conventions for the multipart data. <p>
+ *
+ * A MimeMultipart is obtained from a MimeBodyPart whose primary type
+ * is "multipart" (by invoking the part's <code>getContent()</code> method)
+ * or it can be created by a client as part of creating a new MimeMessage. <p>
+ *
+ * The default multipart subtype is "mixed".  The other multipart
+ * subtypes, such as "alternative", "related", and so on, can be
+ * implemented as subclasses of MimeMultipart with additional methods
+ * to implement the additional semantics of that type of multipart
+ * content. The intent is that service providers, mail JavaBean writers
+ * and mail clients will write many such subclasses and their Command
+ * Beans, and will install them into the JavaBeans Activation
+ * Framework, so that any JavaMail implementation and its clients can
+ * transparently find and use these classes. Thus, a MIME multipart
+ * handler is treated just like any other type handler, thereby
+ * decoupling the process of providing multipart handlers from the
+ * JavaMail API. Lacking these additional MimeMultipart subclasses,
+ * all subtypes of MIME multipart data appear as MimeMultipart objects. <p>
+ *
+ * An application can directly construct a MIME multipart object of any
+ * subtype by using the <code>MimeMultipart(String subtype)</code>
+ * constructor.  For example, to create a "multipart/alternative" object,
+ * use <code>new MimeMultipart("alternative")</code>.
+ *
+ * @version 1.31, 03/01/29
+ * @author  John Mani
+ * @author  Bill Shannon
+ * @author  Max Spivak
+ */
+
+//BM MimeMultipart can extend this
+public  class MimeMultipart {
+
+    /**
+     * The DataSource supplying our InputStream.
+     */
+    protected DataSource ds = null;
+
+    /**
+     * Have we parsed the data from our InputStream yet?
+     * Defaults to true; set to false when our constructor is
+     * given a DataSource with an InputStream that we need to
+     * parse.
+     */
+    protected boolean parsed = true;
+
+    /**
+     * Vector of MimeBodyPart objects.
+     */
+    protected FinalArrayList parts = new FinalArrayList(); // Holds BodyParts
+
+    /**
+     * This field specifies the content-type of this multipart
+     * object. It defaults to "multipart/mixed".
+     */
+    protected ContentType contentType;
+
+    /**
+     * The <code>MimeBodyPart</code> containing this <code>MimeMultipart</code>,
+     * if known.
+     * @since   JavaMail 1.1
+     */
+    protected MimeBodyPart parent;
+
+    protected static final boolean ignoreMissingEndBoundary;
+    static {
+        ignoreMissingEndBoundary = SAAJUtil.getSystemBoolean("saaj.mime.multipart.ignoremissingendboundary");
+    }
+
+    /**
+     * Default constructor. An empty MimeMultipart object
+     * is created. Its content type is set to "multipart/mixed".
+     * A unique boundary string is generated and this string is
+     * setup as the "boundary" parameter for the
+     * <code>contentType</code> field. <p>
+     *
+     * MimeBodyParts may be added later.
+     */
+    public MimeMultipart() {
+        this("mixed");
+    }
+
+    /**
+     * Construct a MimeMultipart object of the given subtype.
+     * A unique boundary string is generated and this string is
+     * setup as the "boundary" parameter for the
+     * <code>contentType</code> field. <p>
+     *
+     * MimeBodyParts may be added later.
+     */
+    public MimeMultipart(String subtype) {
+        //super();
+        /*
+         * Compute a boundary string.
+         */
+        String boundary = UniqueValue.getUniqueBoundaryValue();
+        contentType = new ContentType("multipart", subtype, null);
+        contentType.setParameter("boundary", boundary);
+    }
+
+    /**
+     * Constructs a MimeMultipart object and its bodyparts from the
+     * given DataSource. <p>
+     *
+     * This constructor handles as a special case the situation where the
+     * given DataSource is a MultipartDataSource object.
+     *
+     * Otherwise, the DataSource is assumed to provide a MIME multipart
+     * byte stream.  The <code>parsed</code> flag is set to false.  When
+     * the data for the body parts are needed, the parser extracts the
+     * "boundary" parameter from the content type of this DataSource,
+     * skips the 'preamble' and reads bytes till the terminating
+     * boundary and creates MimeBodyParts for each part of the stream.
+     *
+     * @param   ds      DataSource, can be a MultipartDataSource
+     * @param ct
+     *      This must be the same information as {@link DataSource#getContentType()}.
+     *      All the callers of this method seem to have this object handy, so
+     *      for performance reason this method accepts it. Can be null.
+     */
+    public MimeMultipart(DataSource ds, ContentType ct) throws MessagingException {
+        // 'ds' was not a MultipartDataSource, we have
+        // to parse this ourself.
+        parsed = false;
+        this.ds = ds;
+        if (ct==null)
+            contentType = new ContentType(ds.getContentType());
+        else
+            contentType = ct;
+    }
+
+    /**
+     * Set the subtype. This method should be invoked only on a new
+     * MimeMultipart object created by the client. The default subtype
+     * of such a multipart object is "mixed". <p>
+     *
+     * @param   subtype         Subtype
+     */
+    public  void setSubType(String subtype) {
+        contentType.setSubType(subtype);
+    }
+
+    /**
+     * Return the number of enclosed MimeBodyPart objects.
+     *
+     * @return          number of parts
+     */
+    public  int getCount() throws MessagingException {
+        parse();
+        if (parts == null)
+            return 0;
+
+        return parts.size();
+    }
+
+    /**
+     * Get the specified MimeBodyPart.  BodyParts are numbered starting at 0.
+     *
+     * @param index     the index of the desired MimeBodyPart
+     * @return          the MimeBodyPart
+     * @exception       MessagingException if no such MimeBodyPart exists
+     */
+    public  MimeBodyPart getBodyPart(int index)
+                        throws MessagingException {
+        parse();
+        if (parts == null)
+            throw new IndexOutOfBoundsException("No such BodyPart");
+
+        return (MimeBodyPart)parts.get(index);
+    }
+
+    /**
+     * Get the MimeBodyPart referred to by the given ContentID (CID).
+     * Returns null if the part is not found.
+     *
+     * @param  CID      the ContentID of the desired part
+     * @return          the MimeBodyPart
+     */
+    public  MimeBodyPart getBodyPart(String CID)
+                        throws MessagingException {
+        parse();
+
+        int count = getCount();
+        for (int i = 0; i < count; i++) {
+           MimeBodyPart part = getBodyPart(i);
+           String s = part.getContentID();
+           // Old versions of AXIS2 put angle brackets around the content
+           // id but not the start param
+           String sNoAngle = (s!= null) ? s.replaceFirst("^<", "").replaceFirst(">$", "")
+                   :null;
+           if (s != null && (s.equals(CID) || CID.equals(sNoAngle)))
+                return part;
+        }
+        return null;
+    }
+
+    /**
+     * Update headers. The default implementation here just
+     * calls the <code>updateHeaders</code> method on each of its
+     * children BodyParts. <p>
+     *
+     * Note that the boundary parameter is already set up when
+     * a new and empty MimeMultipart object is created. <p>
+     *
+     * This method is called when the <code>saveChanges</code>
+     * method is invoked on the Message object containing this
+     * MimeMultipart. This is typically done as part of the Message
+     * send process, however note that a client is free to call
+     * it any number of times. So if the header updating process is
+     * expensive for a specific MimeMultipart subclass, then it
+     * might itself want to track whether its internal state actually
+     * did change, and do the header updating only if necessary.
+     */
+    protected void updateHeaders() throws MessagingException {
+        for (int i = 0; i < parts.size(); i++)
+            ((MimeBodyPart)parts.get(i)).updateHeaders();
+    }
+
+    /**
+     * Iterates through all the parts and outputs each Mime part
+     * separated by a boundary.
+     */
+    public void writeTo(OutputStream os)
+            throws IOException, MessagingException {
+        parse();
+
+        String boundary = "--" + contentType.getParameter("boundary");
+
+        for (int i = 0; i < parts.size(); i++) {
+            OutputUtil.writeln(boundary, os); // put out boundary
+            getBodyPart(i).writeTo(os);
+            OutputUtil.writeln(os); // put out empty line
+        }
+
+        // put out last boundary
+        OutputUtil.writeAsAscii(boundary, os);
+        OutputUtil.writeAsAscii("--", os);
+        os.flush();
+    }
+
+    /**
+     * Parse the InputStream from our DataSource, constructing the
+     * appropriate MimeBodyParts.  The <code>parsed</code> flag is
+     * set to true, and if true on entry nothing is done.  This
+     * method is called by all other methods that need data for
+     * the body parts, to make sure the data has been parsed.
+     *
+     * @since   JavaMail 1.2
+     */
+    protected  void parse() throws MessagingException {
+        if (parsed)
+            return;
+
+        InputStream in;
+        SharedInputStream sin = null;
+        long start = 0, end = 0;
+        boolean foundClosingBoundary = false;
+
+        try {
+            in = ds.getInputStream();
+            if (!(in instanceof ByteArrayInputStream) &&
+                !(in instanceof BufferedInputStream) &&
+                !(in instanceof SharedInputStream))
+                in = new BufferedInputStream(in);
+        } catch (Exception ex) {
+            throw new MessagingException("No inputstream from datasource");
+        }
+        if (in instanceof SharedInputStream)
+            sin = (SharedInputStream)in;
+
+        String boundary = "--" + contentType.getParameter("boundary");
+        byte[] bndbytes = ASCIIUtility.getBytes(boundary);
+        int bl = bndbytes.length;
+
+        ByteOutputStream buf = null;
+        try {
+            // Skip the preamble
+            LineInputStream lin = new LineInputStream(in);
+            String line;
+            while ((line = lin.readLine()) != null) {
+                /*
+                 * Strip trailing whitespace.  Can't use trim method
+                 * because it's too aggressive.  Some bogus MIME
+                 * messages will include control characters in the
+                 * boundary string.
+                 */
+                int i;
+                for (i = line.length() - 1; i >= 0; i--) {
+                    char c = line.charAt(i);
+                    if (!(c == ' ' || c == '\t'))
+                        break;
+                }
+                line = line.substring(0, i + 1);
+                if (line.equals(boundary))
+                    break;
+            }
+            if (line == null)
+                throw new MessagingException("Missing start boundary");
+
+            /*
+             * Read and process body parts until we see the
+             * terminating boundary line (or EOF).
+             */
+            boolean done = false;
+        getparts:
+            while (!done) {
+                InternetHeaders headers = null;
+                if (sin != null) {
+                    start = sin.getPosition();
+                    // skip headers
+                    while ((line = lin.readLine()) != null && line.length() > 0)
+                        ;
+                    if (line == null) {
+                        if (!ignoreMissingEndBoundary) {
+                           throw new MessagingException("Missing End Boundary for Mime Package : EOF while skipping headers");
+                        }
+                        // assume there's just a missing end boundary
+                        break getparts;
+                    }
+                } else {
+                    // collect the headers for this body part
+                    headers = createInternetHeaders(in);
+                }
+
+                if (!in.markSupported())
+                    throw new MessagingException("Stream doesn't support mark");
+
+                buf = null;
+                // if we don't have a shared input stream, we copy the data
+                if (sin == null)
+                    buf = new ByteOutputStream();
+                int b;
+                boolean bol = true;    // beginning of line flag
+                // the two possible end of line characters
+                int eol1 = -1, eol2 = -1;
+
+                /*
+                 * Read and save the content bytes in buf.
+                 */
+                for (;;) {
+                    if (bol) {
+                        /*
+                         * At the beginning of a line, check whether the
+                         * next line is a boundary.
+                         */
+                        int i;
+                        in.mark(bl + 4 + 1000); // bnd + "--\r\n" + lots of LWSP
+                        // read bytes, matching against the boundary
+                        for (i = 0; i < bl; i++)
+                            if (in.read() != bndbytes[i])
+                                break;
+                        if (i == bl) {
+                            // matched the boundary, check for last boundary
+                            int b2 = in.read();
+                            if (b2 == '-') {
+                                if (in.read() == '-') {
+                                    done = true;
+                                    foundClosingBoundary = true;
+                                    break;      // ignore trailing text
+                                }
+                            }
+                            // skip linear whitespace
+                            while (b2 == ' ' || b2 == '\t')
+                                b2 = in.read();
+                            // check for end of line
+                            if (b2 == '\n')
+                                break;  // got it!  break out of the loop
+                            if (b2 == '\r') {
+                                in.mark(1);
+                                if (in.read() != '\n')
+                                    in.reset();
+                                break;  // got it!  break out of the loop
+                            }
+                        }
+                        // failed to match, reset and proceed normally
+                        in.reset();
+
+                        // if this is not the first line, write out the
+                        // end of line characters from the previous line
+                        if (buf != null && eol1 != -1) {
+                            buf.write(eol1);
+                            if (eol2 != -1)
+                                buf.write(eol2);
+                            eol1 = eol2 = -1;
+                        }
+                    }
+
+                    // read the next byte
+                    if ((b = in.read()) < 0) {
+                        done = true;
+                        break;
+                    }
+
+                    /*
+                     * If we're at the end of the line, save the eol characters
+                     * to be written out before the beginning of the next line.
+                     */
+                    if (b == '\r' || b == '\n') {
+                        bol = true;
+                        if (sin != null)
+                            end = sin.getPosition() - 1;
+                        eol1 = b;
+                        if (b == '\r') {
+                            in.mark(1);
+                            if ((b = in.read()) == '\n')
+                                eol2 = b;
+                            else
+                                in.reset();
+                        }
+                    } else {
+                        bol = false;
+                        if (buf != null)
+                            buf.write(b);
+                    }
+                }
+
+                /*
+                 * Create a MimeBody element to represent this body part.
+                 */
+                MimeBodyPart part;
+                if (sin != null)
+                    part = createMimeBodyPart(sin.newStream(start, end));
+                else
+                    part = createMimeBodyPart(headers, buf.getBytes(), buf.getCount());
+                addBodyPart(part);
+            }
+        } catch (IOException ioex) {
+            throw new MessagingException("IO Error", ioex);
+        } finally {
+            if (buf != null)
+                buf.close();
+        }
+
+        if (!ignoreMissingEndBoundary && !foundClosingBoundary && sin== null) {
+            throw new MessagingException("Missing End Boundary for Mime Package : EOF while skipping headers");
+        }
+        parsed = true;
+    }
+
+    /**
+     * Create and return an InternetHeaders object that loads the
+     * headers from the given InputStream.  Subclasses can override
+     * this method to return a subclass of InternetHeaders, if
+     * necessary.  This implementation simply constructs and returns
+     * an InternetHeaders object.
+     *
+     * @param   is      the InputStream to read the headers from
+     * @exception       MessagingException
+     * @since           JavaMail 1.2
+     */
+    protected InternetHeaders createInternetHeaders(InputStream is)
+                                throws MessagingException {
+        return new InternetHeaders(is);
+    }
+
+    /**
+     * Create and return a MimeBodyPart object to represent a
+     * body part parsed from the InputStream.  Subclasses can override
+     * this method to return a subclass of MimeBodyPart, if
+     * necessary.  This implementation simply constructs and returns
+     * a MimeBodyPart object.
+     *
+     * @param   headers         the headers for the body part
+     * @param   content         the content of the body part
+     * @since                   JavaMail 1.2
+     */
+    protected MimeBodyPart createMimeBodyPart(InternetHeaders headers, byte[] content, int len) {
+            return new MimeBodyPart(headers, content,len);
+    }
+
+    /**
+     * Create and return a MimeBodyPart object to represent a
+     * body part parsed from the InputStream.  Subclasses can override
+     * this method to return a subclass of MimeBodyPart, if
+     * necessary.  This implementation simply constructs and returns
+     * a MimeBodyPart object.
+     *
+     * @param   is              InputStream containing the body part
+     * @exception               MessagingException
+     * @since                   JavaMail 1.2
+     */
+    protected MimeBodyPart createMimeBodyPart(InputStream is) throws MessagingException {
+            return new MimeBodyPart(is);
+    }
+
+    /**
+     * Setup this MimeMultipart object from the given MultipartDataSource. <p>
+     *
+     * The method adds the MultipartDataSource's MimeBodyPart
+     * objects into this MimeMultipart. This MimeMultipart's contentType is
+     * set to that of the MultipartDataSource. <p>
+     *
+     * This method is typically used in those cases where one
+     * has a multipart data source that has already been pre-parsed into
+     * the individual body parts (for example, an IMAP datasource), but
+     * needs to create an appropriate MimeMultipart subclass that represents
+     * a specific multipart subtype.
+     *
+     * @param   mp      MimeMultipart datasource
+     */
+
+    protected void setMultipartDataSource(MultipartDataSource mp)
+                        throws MessagingException {
+        contentType = new ContentType(mp.getContentType());
+
+        int count = mp.getCount();
+        for (int i = 0; i < count; i++)
+            addBodyPart(mp.getBodyPart(i));
+    }
+
+    /**
+     * Return the content-type of this MimeMultipart. <p>
+     *
+     * This implementation just returns the value of the
+     * <code>contentType</code> field.
+     *
+     * @return  content-type
+     * @see     #contentType
+     */
+    public ContentType getContentType() {
+            return contentType;
+    }
+
+    /**
+     * Remove the specified part from the multipart message.
+     * Shifts all the parts after the removed part down one.
+     *
+     * @param   part    The part to remove
+     * @return          true if part removed, false otherwise
+     * @exception       MessagingException if no such MimeBodyPart exists
+     */
+    public boolean removeBodyPart(MimeBodyPart part) throws MessagingException {
+        if (parts == null)
+            throw new MessagingException("No such body part");
+
+        boolean ret = parts.remove(part);
+        part.setParent(null);
+        return ret;
+    }
+
+    /**
+     * Remove the part at specified location (starting from 0).
+     * Shifts all the parts after the removed part down one.
+     *
+     * @param   index   Index of the part to remove
+     * @exception       IndexOutOfBoundsException if the given index
+     *                  is out of range.
+     */
+    public void removeBodyPart(int index) {
+        if (parts == null)
+            throw new IndexOutOfBoundsException("No such BodyPart");
+
+        MimeBodyPart part = (MimeBodyPart)parts.get(index);
+        parts.remove(index);
+        part.setParent(null);
+    }
+
+    /**
+     * Adds a MimeBodyPart to the multipart.  The MimeBodyPart is appended to
+     * the list of existing Parts.
+     *
+     * @param  part  The MimeBodyPart to be appended
+     */
+    public synchronized void addBodyPart(MimeBodyPart part) {
+        if (parts == null)
+            parts = new FinalArrayList();
+
+        parts.add(part);
+        part.setParent(this);
+    }
+
+    /**
+     * Adds a MimeBodyPart at position <code>index</code>.
+     * If <code>index</code> is not the last one in the list,
+     * the subsequent parts are shifted up. If <code>index</code>
+     * is larger than the number of parts present, the
+     * MimeBodyPart is appended to the end.
+     *
+     * @param  part  The MimeBodyPart to be inserted
+     * @param  index Location where to insert the part
+     */
+    public synchronized void addBodyPart(MimeBodyPart part, int index) {
+        if (parts == null)
+            parts = new FinalArrayList();
+
+        parts.add(index,part);
+        part.setParent(this);
+    }
+
+    /**
+     * Return the <code>MimeBodyPart</code> that contains this <code>MimeMultipart</code>
+     * object, or <code>null</code> if not known.
+     * @since   JavaMail 1.1
+     */
+    MimeBodyPart getParent() {
+        return parent;
+    }
+
+    /**
+     * Set the parent of this <code>MimeMultipart</code> to be the specified
+     * <code>MimeBodyPart</code>.  Normally called by the <code>Message</code>
+     * or <code>MimeBodyPart</code> <code>setContent(MimeMultipart)</code> method.
+     * <code>parent</code> may be <code>null</code> if the
+     * <code>MimeMultipart</code> is being removed from its containing
+     * <code>MimeBodyPart</code>.
+     * @since   JavaMail 1.1
+     */
+    void setParent(MimeBodyPart parent) {
+        this.parent = parent;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimePartDataSource.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,117 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)MimePartDataSource.java        1.9 02/03/27
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
+
+import java.io.*;
+import java.net.UnknownServiceException;
+
+import javax.activation.DataSource;
+
+import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException;
+
+/**
+ * A utility class that implements a DataSource out of
+ * a MimeBodyPart. This class is primarily meant for service providers.
+ *
+ * @author      John Mani
+ */
+
+public final class MimePartDataSource implements DataSource {
+    private final MimeBodyPart part;
+
+    /**
+     * Constructor, that constructs a DataSource from a MimeBodyPart.
+     */
+    public MimePartDataSource(MimeBodyPart part) {
+        this.part = part;
+    }
+
+    /**
+     * Returns an input stream from this  MimeBodyPart. <p>
+     *
+     * This method applies the appropriate transfer-decoding, based
+     * on the Content-Transfer-Encoding attribute of this MimeBodyPart.
+     * Thus the returned input stream is a decoded stream of bytes.<p>
+     *
+     * This implementation obtains the raw content from the MimeBodyPart
+     * using the <code>getContentStream()</code> method and decodes
+     * it using the <code>MimeUtility.decode()</code> method.
+     *
+     * @return  decoded input stream
+     */
+    public InputStream getInputStream() throws IOException {
+
+        try {
+        InputStream is = part.getContentStream();
+
+            String encoding = part.getEncoding();
+            if (encoding != null)
+                return MimeUtility.decode(is, encoding);
+            else
+                return is;
+        } catch (MessagingException mex) {
+            throw new IOException(mex.getMessage());
+        }
+    }
+
+    /**
+     * DataSource method to return an output stream. <p>
+     *
+     * This implementation throws the UnknownServiceException.
+     */
+    public OutputStream getOutputStream() throws IOException {
+        throw new UnknownServiceException();
+    }
+
+    /**
+     * Returns the content-type of this DataSource. <p>
+     *
+     * This implementation just invokes the <code>getContentType</code>
+     * method on the MimeBodyPart.
+     */
+    public String getContentType() {
+        return part.getContentType();
+    }
+
+    /**
+     * DataSource method to return a name.  <p>
+     *
+     * This implementation just returns an empty string.
+     */
+    public String getName() {
+        try {
+                return part.getFileName();
+        } catch (MessagingException mex) {
+        return "";
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimePullMultipart.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
+
+import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException;
+import com.sun.xml.internal.messaging.saaj.soap.AttachmentPartImpl;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+import javax.activation.DataSource;
+import javax.xml.soap.AttachmentPart;
+import com.sun.xml.internal.org.jvnet.mimepull.MIMEConfig;
+import com.sun.xml.internal.org.jvnet.mimepull.MIMEMessage;
+import com.sun.xml.internal.org.jvnet.mimepull.MIMEPart;
+
+/**
+ *
+ * @author Kumar
+ */
+public class MimePullMultipart  extends MimeMultipart {
+
+    private InputStream in = null;
+    private String boundary = null;
+    private MIMEMessage mm = null;
+    private DataSource dataSource = null;
+    private ContentType contType = null;
+    private String startParam = null;
+    private MIMEPart soapPart = null;
+
+    public MimePullMultipart(DataSource ds, ContentType ct)
+        throws MessagingException {
+        parsed = false;
+        if (ct==null)
+            contType = new ContentType(ds.getContentType());
+        else
+            contType = ct;
+
+        dataSource = ds;
+        boundary = contType.getParameter("boundary");
+    }
+
+    public  MIMEPart readAndReturnSOAPPart() throws  MessagingException {
+         if (soapPart != null) {
+            throw new MessagingException("Inputstream from datasource was already consumed");
+         }
+         readSOAPPart();
+         return soapPart;
+
+    }
+
+    protected  void readSOAPPart() throws  MessagingException {
+        try {
+            if (soapPart != null) {
+                return;
+            }
+            in = dataSource.getInputStream();
+            MIMEConfig config = new MIMEConfig(); //use defaults
+            mm = new MIMEMessage(in, boundary, config);
+            String st = contType.getParameter("start");
+            if(startParam == null) {
+                soapPart = mm.getPart(0);
+            } else {
+                  // Strip <...> from root part's Content-I
+                if (st != null && st.length() > 2 && st.charAt(0) == '<' && st.charAt(st.length()-1) == '>') {
+                    st = st.substring(1, st.length()-1);
+                }
+                startParam = st;
+                soapPart = mm.getPart(startParam);
+
+            }
+        } catch (IOException ex) {
+            throw new MessagingException("No inputstream from datasource", ex);
+        }
+    }
+
+    public void parseAll() throws MessagingException {
+        if (parsed) {
+            return;
+        }
+        if (soapPart == null) {
+            readSOAPPart();
+        }
+
+        List<MIMEPart> prts = mm.getAttachments();
+        for(MIMEPart part : prts) {
+            if (part != soapPart) {
+                new AttachmentPartImpl(part);
+                this.addBodyPart(new MimeBodyPart(part));
+            }
+       }
+       parsed = true;
+    }
+
+    protected  void parse() throws MessagingException {
+        parseAll();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimeUtility.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,1507 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)MimeUtility.java       1.45 03/03/10
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
+
+import java.io.*;
+import java.util.*;
+
+import javax.activation.DataHandler;
+import javax.activation.DataSource;
+
+import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException;
+import com.sun.xml.internal.messaging.saaj.packaging.mime.util.*;
+import com.sun.xml.internal.messaging.saaj.util.SAAJUtil;
+
+/**
+ * This is a utility class that provides various MIME related
+ * functionality. <p>
+ *
+ * There are a set of methods to encode and decode MIME headers as
+ * per RFC 2047. A brief description on handling such headers is
+ * given below: <p>
+ *
+ * RFC 822 mail headers <strong>must</strong> contain only US-ASCII
+ * characters. Headers that contain non US-ASCII characters must be
+ * encoded so that they contain only US-ASCII characters. Basically,
+ * this process involves using either BASE64 or QP to encode certain
+ * characters. RFC 2047 describes this in detail. <p>
+ *
+ * In Java, Strings contain (16 bit) Unicode characters. ASCII is a
+ * subset of Unicode (and occupies the range 0 - 127). A String
+ * that contains only ASCII characters is already mail-safe. If the
+ * String contains non US-ASCII characters, it must be encoded. An
+ * additional complexity in this step is that since Unicode is not
+ * yet a widely used charset, one might want to first charset-encode
+ * the String into another charset and then do the transfer-encoding.
+ * <p>
+ * Note that to get the actual bytes of a mail-safe String (say,
+ * for sending over SMTP), one must do
+ * <p><blockquote><pre>
+ *
+ *      byte[] bytes = string.getBytes("iso-8859-1");
+ *
+ * </pre></blockquote><p>
+ *
+ * The <code>setHeader</code> and <code>addHeader</code> methods
+ * on MimeMessage and MimeBodyPart assume that the given header values
+ * are Unicode strings that contain only US-ASCII characters. Hence
+ * the callers of those methods must insure that the values they pass
+ * do not contain non US-ASCII characters. The methods in this class
+ * help do this. <p>
+ *
+ * The <code>getHeader</code> family of methods on MimeMessage and
+ * MimeBodyPart return the raw header value. These might be encoded
+ * as per RFC 2047, and if so, must be decoded into Unicode Strings.
+ * The methods in this class help to do this. <p>
+ *
+ * Several System properties control strict conformance to the MIME
+ * spec.  Note that these are not session properties but must be set
+ * globally as System properties. <p>
+ *
+ * The <code>mail.mime.decodetext.strict</code> property controls
+ * decoding of MIME encoded words.  The MIME spec requires that encoded
+ * words start at the beginning of a whitespace separated word.  Some
+ * mailers incorrectly include encoded words in the middle of a word.
+ * If the <code>mail.mime.decodetext.strict</code> System property is
+ * set to <code>"false"</code>, an attempt will be made to decode these
+ * illegal encoded words. The default is true. <p>
+ *
+ * The <code>mail.mime.encodeeol.strict</code> property controls the
+ * choice of Content-Transfer-Encoding for MIME parts that are not of
+ * type "text".  Often such parts will contain textual data for which
+ * an encoding that allows normal end of line conventions is appropriate.
+ * In rare cases, such a part will appear to contain entirely textual
+ * data, but will require an encoding that preserves CR and LF characters
+ * without change.  If the <code>mail.mime.decodetext.strict</code>
+ * System property is set to <code>"true"</code>, such an encoding will
+ * be used when necessary.  The default is false. <p>
+ *
+ * In addition, the <code>mail.mime.charset</code> System property can
+ * be used to specify the default MIME charset to use for encoded words
+ * and text parts that don't otherwise specify a charset.  Normally, the
+ * default MIME charset is derived from the default Java charset, as
+ * specified in the <code>file.encoding</code> System property.  Most
+ * applications will have no need to explicitly set the default MIME
+ * charset.  In cases where the default MIME charset to be used for
+ * mail messages is different than the charset used for files stored on
+ * the system, this property should be set.
+ *
+ * @version 1.45, 03/03/10
+ * @author  John Mani
+ * @author  Bill Shannon
+ */
+
+public class MimeUtility {
+
+    // This class cannot be instantiated
+    private MimeUtility() { }
+
+    public static final int ALL = -1;
+
+    private static final int BUFFER_SIZE = 1024;
+    private static boolean decodeStrict = true;
+    private static boolean encodeEolStrict = false;
+    private static boolean foldEncodedWords = false;
+    private static boolean foldText = true;
+
+    static {
+        try {
+            String s = SAAJUtil.getSystemProperty("mail.mime.decodetext.strict");
+            // default to true
+            decodeStrict = s == null || !s.equalsIgnoreCase("false");
+            s = SAAJUtil.getSystemProperty("mail.mime.encodeeol.strict");
+            // default to false
+            encodeEolStrict = s != null && s.equalsIgnoreCase("true");
+            s = SAAJUtil.getSystemProperty("mail.mime.foldencodedwords");
+            // default to false
+            foldEncodedWords = s != null && s.equalsIgnoreCase("true");
+            s = SAAJUtil.getSystemProperty("mail.mime.foldtext");
+            // default to true
+            foldText = s == null || !s.equalsIgnoreCase("false");
+        } catch (SecurityException sex) {
+            // ignore it
+        }
+    }
+
+
+    /**
+     * Get the content-transfer-encoding that should be applied
+     * to the input stream of this datasource, to make it mailsafe. <p>
+     *
+     * The algorithm used here is: <br>
+     * <ul>
+     * <li>
+     * If the primary type of this datasource is "text" and if all
+     * the bytes in its input stream are US-ASCII, then the encoding
+     * is "7bit". If more than half of the bytes are non-US-ASCII, then
+     * the encoding is "base64". If less than half of the bytes are
+     * non-US-ASCII, then the encoding is "quoted-printable".
+     * <li>
+     * If the primary type of this datasource is not "text", then if
+     * all the bytes of its input stream are US-ASCII, the encoding
+     * is "7bit". If there is even one non-US-ASCII character, the
+     * encoding is "base64".
+     * </ul>
+     *
+     * @param   ds      DataSource
+     * @return          the encoding. This is either "7bit",
+     *                  "quoted-printable" or "base64"
+     */
+    public static String getEncoding(DataSource ds) {
+        ContentType cType = null;
+        InputStream is = null;
+        String encoding = null;
+
+        try {
+            cType = new ContentType(ds.getContentType());
+            is = ds.getInputStream();
+        } catch (Exception ex) {
+            return "base64"; // what else ?!
+        }
+
+        boolean isText = cType.match("text/*");
+        // if not text, stop processing when we see non-ASCII
+        int i = checkAscii(is, ALL, !isText);
+        switch (i) {
+        case ALL_ASCII:
+            encoding = "7bit"; // all ascii
+            break;
+        case MOSTLY_ASCII:
+            encoding = "quoted-printable"; // mostly ascii
+            break;
+        default:
+            encoding = "base64"; // mostly binary
+            break;
+        }
+
+        // Close the input stream
+        try {
+            is.close();
+        } catch (IOException ioex) { }
+
+        return encoding;
+    }
+
+    /**
+     * Same as <code>getEncoding(DataSource)</code> except that instead
+     * of reading the data from an <code>InputStream</code> it uses the
+     * <code>writeTo</code> method to examine the data.  This is more
+     * efficient in the common case of a <code>DataHandler</code>
+     * created with an object and a MIME type (for example, a
+     * "text/plain" String) because all the I/O is done in this
+     * thread.  In the case requiring an <code>InputStream</code> the
+     * <code>DataHandler</code> uses a thread, a pair of pipe streams,
+     * and the <code>writeTo</code> method to produce the data. <p>
+     *
+     * @since   JavaMail 1.2
+     */
+    public static String getEncoding(DataHandler dh) {
+        ContentType cType = null;
+        String encoding = null;
+
+        /*
+         * Try to pick the most efficient means of determining the
+         * encoding.  If this DataHandler was created using a DataSource,
+         * the getEncoding(DataSource) method is typically faster.  If
+         * the DataHandler was created with an object, this method is
+         * much faster.  To distinguish the two cases, we use a heuristic.
+         * A DataHandler created with an object will always have a null name.
+         * A DataHandler created with a DataSource will usually have a
+         * non-null name.
+         *
+         * XXX - This is actually quite a disgusting hack, but it makes
+         *       a common case run over twice as fast.
+         */
+        if (dh.getName() != null)
+            return getEncoding(dh.getDataSource());
+
+        try {
+            cType = new ContentType(dh.getContentType());
+        } catch (Exception ex) {
+            return "base64"; // what else ?!
+        }
+
+        if (cType.match("text/*")) {
+            // Check all of the available bytes
+            AsciiOutputStream aos = new AsciiOutputStream(false, false);
+            try {
+                dh.writeTo(aos);
+            } catch (IOException ex) { }        // ignore it
+            switch (aos.getAscii()) {
+            case ALL_ASCII:
+                encoding = "7bit"; // all ascii
+                break;
+            case MOSTLY_ASCII:
+                encoding = "quoted-printable"; // mostly ascii
+                break;
+            default:
+                encoding = "base64"; // mostly binary
+                break;
+            }
+        } else { // not "text"
+            // Check all of available bytes, break out if we find
+            // at least one non-US-ASCII character
+            AsciiOutputStream aos =
+                        new AsciiOutputStream(true, encodeEolStrict);
+            try {
+                dh.writeTo(aos);
+            } catch (IOException ex) { }        // ignore it
+            if (aos.getAscii() == ALL_ASCII) // all ascii
+                encoding = "7bit";
+            else // found atleast one non-ascii character, use b64
+                encoding = "base64";
+        }
+
+        return encoding;
+    }
+
+    /**
+     * Decode the given input stream. The Input stream returned is
+     * the decoded input stream. All the encodings defined in RFC 2045
+     * are supported here. They include "base64", "quoted-printable",
+     * "7bit", "8bit", and "binary". In addition, "uuencode" is also
+     * supported.
+     *
+     * @param   is              input stream
+     * @param   encoding        the encoding of the stream.
+     * @return                  decoded input stream.
+     */
+    public static InputStream decode(InputStream is, String encoding)
+                throws MessagingException {
+        if (encoding.equalsIgnoreCase("base64"))
+            return new BASE64DecoderStream(is);
+        else if (encoding.equalsIgnoreCase("quoted-printable"))
+            return new QPDecoderStream(is);
+        else if (encoding.equalsIgnoreCase("uuencode") ||
+                 encoding.equalsIgnoreCase("x-uuencode") ||
+                 encoding.equalsIgnoreCase("x-uue"))
+            return new UUDecoderStream(is);
+        else if (encoding.equalsIgnoreCase("binary") ||
+                 encoding.equalsIgnoreCase("7bit") ||
+                 encoding.equalsIgnoreCase("8bit"))
+            return is;
+        else
+            throw new MessagingException("Unknown encoding: " + encoding);
+    }
+
+    /**
+     * Wrap an encoder around the given output stream.
+     * All the encodings defined in RFC 2045 are supported here.
+     * They include "base64", "quoted-printable", "7bit", "8bit" and
+     * "binary". In addition, "uuencode" is also supported.
+     *
+     * @param   os              output stream
+     * @param   encoding        the encoding of the stream.
+     * @return                  output stream that applies the
+     *                          specified encoding.
+     */
+    public static OutputStream encode(OutputStream os, String encoding)
+                throws MessagingException {
+        if (encoding == null)
+            return os;
+        else if (encoding.equalsIgnoreCase("base64"))
+            return new BASE64EncoderStream(os);
+        else if (encoding.equalsIgnoreCase("quoted-printable"))
+            return new QPEncoderStream(os);
+        else if (encoding.equalsIgnoreCase("uuencode") ||
+                 encoding.equalsIgnoreCase("x-uuencode") ||
+                 encoding.equalsIgnoreCase("x-uue"))
+            return new UUEncoderStream(os);
+        else if (encoding.equalsIgnoreCase("binary") ||
+                 encoding.equalsIgnoreCase("7bit") ||
+                 encoding.equalsIgnoreCase("8bit"))
+            return os;
+        else
+            throw new MessagingException("Unknown encoding: " +encoding);
+    }
+
+    /**
+     * Wrap an encoder around the given output stream.
+     * All the encodings defined in RFC 2045 are supported here.
+     * They include "base64", "quoted-printable", "7bit", "8bit" and
+     * "binary". In addition, "uuencode" is also supported.
+     * The <code>filename</code> parameter is used with the "uuencode"
+     * encoding and is included in the encoded output.
+     *
+     * @param   os              output stream
+     * @param   encoding        the encoding of the stream.
+     * @param   filename        name for the file being encoded (only used
+     *                          with uuencode)
+     * @return                  output stream that applies the
+     *                          specified encoding.
+     * @since                   JavaMail 1.2
+     */
+    public static OutputStream encode(OutputStream os, String encoding,
+                                      String filename)
+                throws MessagingException {
+        if (encoding == null)
+            return os;
+        else if (encoding.equalsIgnoreCase("base64"))
+            return new BASE64EncoderStream(os);
+        else if (encoding.equalsIgnoreCase("quoted-printable"))
+            return new QPEncoderStream(os);
+        else if (encoding.equalsIgnoreCase("uuencode") ||
+                 encoding.equalsIgnoreCase("x-uuencode") ||
+                 encoding.equalsIgnoreCase("x-uue"))
+            return new UUEncoderStream(os, filename);
+        else if (encoding.equalsIgnoreCase("binary") ||
+                 encoding.equalsIgnoreCase("7bit") ||
+                 encoding.equalsIgnoreCase("8bit"))
+            return os;
+        else
+            throw new MessagingException("Unknown encoding: " +encoding);
+    }
+
+    /**
+     * Encode a RFC 822 "text" token into mail-safe form as per
+     * RFC 2047. <p>
+     *
+     * The given Unicode string is examined for non US-ASCII
+     * characters. If the string contains only US-ASCII characters,
+     * it is returned as-is.  If the string contains non US-ASCII
+     * characters, it is first character-encoded using the platform's
+     * default charset, then transfer-encoded using either the B or
+     * Q encoding. The resulting bytes are then returned as a Unicode
+     * string containing only ASCII  characters. <p>
+     *
+     * Note that this method should be used to encode only
+     * "unstructured" RFC 822 headers. <p>
+     *
+     * Example of usage:
+     * <p><blockquote><pre>
+     *
+     *  MimeBodyPart part = ...
+     *  String rawvalue = "FooBar Mailer, Japanese version 1.1"
+     *  try {
+     *    // If we know for sure that rawvalue contains only US-ASCII
+     *    // characters, we can skip the encoding part
+     *    part.setHeader("X-mailer", MimeUtility.encodeText(rawvalue));
+     *  } catch (UnsupportedEncodingException e) {
+     *    // encoding failure
+     *  } catch (MessagingException me) {
+     *   // setHeader() failure
+     *  }
+     *
+     * </pre></blockquote><p>
+     *
+     * @param   text    unicode string
+     * @return  Unicode string containing only US-ASCII characters
+     * @exception UnsupportedEncodingException if the encoding fails
+     */
+    public static String encodeText(String text)
+                        throws UnsupportedEncodingException {
+        return encodeText(text, null, null);
+    }
+
+    /**
+     * Encode a RFC 822 "text" token into mail-safe form as per
+     * RFC 2047. <p>
+     *
+     * The given Unicode string is examined for non US-ASCII
+     * characters. If the string contains only US-ASCII characters,
+     * it is returned as-is.  If the string contains non US-ASCII
+     * characters, it is first character-encoded using the specified
+     * charset, then transfer-encoded using either the B or Q encoding.
+     * The resulting bytes are then returned as a Unicode string
+     * containing only ASCII characters. <p>
+     *
+     * Note that this method should be used to encode only
+     * "unstructured" RFC 822 headers.
+     *
+     * @param   text    the header value
+     * @param   charset the charset. If this parameter is null, the
+     *          platform's default chatset is used.
+     * @param   encoding the encoding to be used. Currently supported
+     *          values are "B" and "Q". If this parameter is null, then
+     *          the "Q" encoding is used if most of characters to be
+     *          encoded are in the ASCII charset, otherwise "B" encoding
+     *          is used.
+     * @return  Unicode string containing only US-ASCII characters
+     */
+    public static String encodeText(String text, String charset,
+                                    String encoding)
+                        throws UnsupportedEncodingException {
+        return encodeWord(text, charset, encoding, false);
+    }
+
+    /**
+     * Decode "unstructured" headers, that is, headers that are defined
+     * as '*text' as per RFC 822. <p>
+     *
+     * The string is decoded using the algorithm specified in
+     * RFC 2047, Section 6.1.1. If the charset-conversion fails
+     * for any sequence, an UnsupportedEncodingException is thrown.
+     * If the String is not an RFC 2047 style encoded header, it is
+     * returned as-is <p>
+     *
+     * Example of usage:
+     * <p><blockquote><pre>
+     *
+     *  MimeBodyPart part = ...
+     *  String rawvalue = null;
+     *  String  value = null;
+     *  try {
+     *    if ((rawvalue = part.getHeader("X-mailer")[0]) != null)
+     *      value = MimeUtility.decodeText(rawvalue);
+     *  } catch (UnsupportedEncodingException e) {
+     *      // Don't care
+     *      value = rawvalue;
+     *  } catch (MessagingException me) { }
+     *
+     *  return value;
+     *
+     * </pre></blockquote><p>
+     *
+     * @param   etext   the possibly encoded value
+     * @exception       UnsupportedEncodingException if the charset
+     *                  conversion failed.
+     */
+    public static String decodeText(String etext)
+                throws UnsupportedEncodingException {
+        /*
+         * We look for sequences separated by "linear-white-space".
+         * (as per RFC 2047, Section 6.1.1)
+         * RFC 822 defines "linear-white-space" as SPACE | HT | CR | NL.
+         */
+        String lwsp = " \t\n\r";
+        StringTokenizer st;
+
+        /*
+         * First, lets do a quick run thru the string and check
+         * whether the sequence "=?"  exists at all. If none exists,
+         * we know there are no encoded-words in here and we can just
+         * return the string as-is, without suffering thru the later
+         * decoding logic.
+         * This handles the most common case of unencoded headers
+         * efficiently.
+         */
+        if (etext.indexOf("=?") == -1)
+            return etext;
+
+        // Encoded words found. Start decoding ...
+
+        st = new StringTokenizer(etext, lwsp, true);
+        StringBuffer sb = new StringBuffer();  // decode buffer
+        StringBuffer wsb = new StringBuffer(); // white space buffer
+        boolean prevWasEncoded = false;
+
+        while (st.hasMoreTokens()) {
+            char c;
+            String s = st.nextToken();
+            // If whitespace, append it to the whitespace buffer
+            if (((c = s.charAt(0)) == ' ') || (c == '\t') ||
+                (c == '\r') || (c == '\n'))
+                wsb.append(c);
+            else {
+                // Check if token is an 'encoded-word' ..
+                String word;
+                try {
+                    word = decodeWord(s);
+                    // Yes, this IS an 'encoded-word'.
+                    if (!prevWasEncoded && wsb.length() > 0) {
+                        // if the previous word was also encoded, we
+                        // should ignore the collected whitespace. Else
+                        // we include the whitespace as well.
+                        sb.append(wsb);
+                    }
+                    prevWasEncoded = true;
+                } catch (ParseException pex) {
+                    // This is NOT an 'encoded-word'.
+                    word = s;
+                    // possibly decode inner encoded words
+                    if (!decodeStrict)
+                        word = decodeInnerWords(word);
+                    // include colleced whitespace ..
+                    if (wsb.length() > 0)
+                        sb.append(wsb);
+                    prevWasEncoded = false;
+                }
+                sb.append(word); // append the actual word
+                wsb.setLength(0); // reset wsb for reuse
+            }
+        }
+        return sb.toString();
+    }
+
+    /**
+     * Encode a RFC 822 "word" token into mail-safe form as per
+     * RFC 2047. <p>
+     *
+     * The given Unicode string is examined for non US-ASCII
+     * characters. If the string contains only US-ASCII characters,
+     * it is returned as-is.  If the string contains non US-ASCII
+     * characters, it is first character-encoded using the platform's
+     * default charset, then transfer-encoded using either the B or
+     * Q encoding. The resulting bytes are then returned as a Unicode
+     * string containing only ASCII  characters. <p>
+     *
+     * This method is meant to be used when creating RFC 822 "phrases".
+     * The InternetAddress class, for example, uses this to encode
+     * it's 'phrase' component.
+     *
+     * @param   text    unicode string
+     * @return  Array of Unicode strings containing only US-ASCII
+     *          characters.
+     * @exception UnsupportedEncodingException if the encoding fails
+     */
+    public static String encodeWord(String word)
+                        throws UnsupportedEncodingException {
+        return encodeWord(word, null, null);
+    }
+
+    /**
+     * Encode a RFC 822 "word" token into mail-safe form as per
+     * RFC 2047. <p>
+     *
+     * The given Unicode string is examined for non US-ASCII
+     * characters. If the string contains only US-ASCII characters,
+     * it is returned as-is.  If the string contains non US-ASCII
+     * characters, it is first character-encoded using the specified
+     * charset, then transfer-encoded using either the B or Q encoding.
+     * The resulting bytes are then returned as a Unicode string
+     * containing only ASCII characters. <p>
+     *
+     * @param   text    unicode string
+     * @param   charset the MIME charset
+     * @param   encoding the encoding to be used. Currently supported
+     *          values are "B" and "Q". If this parameter is null, then
+     *          the "Q" encoding is used if most of characters to be
+     *          encoded are in the ASCII charset, otherwise "B" encoding
+     *          is used.
+     * @return  Unicode string containing only US-ASCII characters
+     * @exception UnsupportedEncodingException if the encoding fails
+     */
+    public static String encodeWord(String word, String charset,
+                                    String encoding)
+                        throws UnsupportedEncodingException {
+        return encodeWord(word, charset, encoding, true);
+    }
+
+    /*
+     * Encode the given string. The parameter 'encodingWord' should
+     * be true if a RFC 822 "word" token is being encoded and false if a
+     * RFC 822 "text" token is being encoded. This is because the
+     * "Q" encoding defined in RFC 2047 has more restrictions when
+     * encoding "word" tokens. (Sigh)
+     */
+    private static String encodeWord(String string, String charset,
+                                     String encoding, boolean encodingWord)
+                        throws UnsupportedEncodingException {
+
+        // If 'string' contains only US-ASCII characters, just
+        // return it.
+        int ascii = checkAscii(string);
+        if (ascii == ALL_ASCII)
+            return string;
+
+        // Else, apply the specified charset conversion.
+        String jcharset;
+        if (charset == null) { // use default charset
+            jcharset = getDefaultJavaCharset(); // the java charset
+            charset = getDefaultMIMECharset(); // the MIME equivalent
+        } else // MIME charset -> java charset
+            jcharset = javaCharset(charset);
+
+        // If no transfer-encoding is specified, figure one out.
+        if (encoding == null) {
+            if (ascii != MOSTLY_NONASCII)
+                encoding = "Q";
+            else
+                encoding = "B";
+        }
+
+        boolean b64;
+        if (encoding.equalsIgnoreCase("B"))
+            b64 = true;
+        else if (encoding.equalsIgnoreCase("Q"))
+            b64 = false;
+        else
+            throw new UnsupportedEncodingException(
+                        "Unknown transfer encoding: " + encoding);
+
+        StringBuffer outb = new StringBuffer(); // the output buffer
+        doEncode(string, b64, jcharset,
+                 // As per RFC 2047, size of an encoded string should not
+                 // exceed 75 bytes.
+                 // 7 = size of "=?", '?', 'B'/'Q', '?', "?="
+                 75 - 7 - charset.length(), // the available space
+                 "=?" + charset + "?" + encoding + "?", // prefix
+                 true, encodingWord, outb);
+
+        return outb.toString();
+    }
+
+    private static void doEncode(String string, boolean b64,
+                String jcharset, int avail, String prefix,
+                boolean first, boolean encodingWord, StringBuffer buf)
+                        throws UnsupportedEncodingException {
+
+        // First find out what the length of the encoded version of
+        // 'string' would be.
+        byte[] bytes = string.getBytes(jcharset);
+        int len;
+        if (b64) // "B" encoding
+            len = BEncoderStream.encodedLength(bytes);
+        else // "Q"
+            len = QEncoderStream.encodedLength(bytes, encodingWord);
+
+        int size;
+        if ((len > avail) && ((size = string.length()) > 1)) {
+            // If the length is greater than 'avail', split 'string'
+            // into two and recurse.
+            doEncode(string.substring(0, size/2), b64, jcharset,
+                     avail, prefix, first, encodingWord, buf);
+            doEncode(string.substring(size/2, size), b64, jcharset,
+                     avail, prefix, false, encodingWord, buf);
+        } else {
+            // length <= than 'avail'. Encode the given string
+            ByteArrayOutputStream os = new ByteArrayOutputStream(BUFFER_SIZE);
+            OutputStream eos; // the encoder
+            if (b64) // "B" encoding
+                eos = new BEncoderStream(os);
+            else // "Q" encoding
+                eos = new QEncoderStream(os, encodingWord);
+
+            try { // do the encoding
+                eos.write(bytes);
+                eos.close();
+            } catch (IOException ioex) { }
+
+            byte[] encodedBytes = os.toByteArray(); // the encoded stuff
+            // Now write out the encoded (all ASCII) bytes into our
+            // StringBuffer
+            if (!first) // not the first line of this sequence
+                if (foldEncodedWords)
+                    buf.append("\r\n "); // start a continuation line
+                else
+                    buf.append(" "); // line will be folded later
+
+            buf.append(prefix);
+            for (int i = 0; i < encodedBytes.length; i++)
+                buf.append((char)encodedBytes[i]);
+            buf.append("?="); // terminate the current sequence
+        }
+    }
+
+    /**
+     * The string is parsed using the rules in RFC 2047 for parsing
+     * an "encoded-word". If the parse fails, a ParseException is
+     * thrown. Otherwise, it is transfer-decoded, and then
+     * charset-converted into Unicode. If the charset-conversion
+     * fails, an UnsupportedEncodingException is thrown.<p>
+     *
+     * @param   eword   the possibly encoded value
+     * @exception       ParseException if the string is not an
+     *                  encoded-word as per RFC 2047.
+     * @exception       UnsupportedEncodingException if the charset
+     *                  conversion failed.
+     */
+    public static String decodeWord(String eword)
+                throws ParseException, UnsupportedEncodingException {
+
+        if (!eword.startsWith("=?")) // not an encoded word
+            throw new ParseException();
+
+        // get charset
+        int start = 2; int pos;
+        if ((pos = eword.indexOf('?', start)) == -1)
+            throw new ParseException();
+        String charset = javaCharset(eword.substring(start, pos));
+
+        // get encoding
+        start = pos+1;
+        if ((pos = eword.indexOf('?', start)) == -1)
+            throw new ParseException();
+        String encoding = eword.substring(start, pos);
+
+        // get encoded-sequence
+        start = pos+1;
+        if ((pos = eword.indexOf("?=", start)) == -1)
+            throw new ParseException();
+        String word = eword.substring(start, pos);
+
+        try {
+            // Extract the bytes from word
+            ByteArrayInputStream bis =
+                new ByteArrayInputStream(ASCIIUtility.getBytes(word));
+
+            // Get the appropriate decoder
+            InputStream is;
+            if (encoding.equalsIgnoreCase("B"))
+                is = new BASE64DecoderStream(bis);
+            else if (encoding.equalsIgnoreCase("Q"))
+                is = new QDecoderStream(bis);
+            else
+                throw new UnsupportedEncodingException(
+                                "unknown encoding: " + encoding);
+
+            // For b64 & q, size of decoded word <= size of word. So
+            // the decoded bytes must fit into the 'bytes' array. This
+            // is certainly more efficient than writing bytes into a
+            // ByteArrayOutputStream and then pulling out the byte[]
+            // from it.
+            int count = bis.available();
+            byte[] bytes = new byte[count];
+            // count is set to the actual number of decoded bytes
+            count = is.read(bytes, 0, count);
+
+            // Finally, convert the decoded bytes into a String using
+            // the specified charset
+            String s = new String(bytes, 0, count, charset);
+            if (pos + 2 < eword.length()) {
+                // there's still more text in the string
+                String rest = eword.substring(pos + 2);
+                if (!decodeStrict)
+                    rest = decodeInnerWords(rest);
+                s += rest;
+            }
+            return s;
+        } catch (UnsupportedEncodingException uex) {
+            // explicitly catch and rethrow this exception, otherwise
+            // the below IOException catch will swallow this up!
+            throw uex;
+        } catch (IOException ioex) {
+            // Shouldn't happen.
+            throw new ParseException();
+        } catch (IllegalArgumentException iex) {
+            /* An unknown charset of the form ISO-XXX-XXX, will cause
+             * the JDK to throw an IllegalArgumentException ... Since the
+             * JDK will attempt to create a classname using this string,
+             * but valid classnames must not contain the character '-',
+             * and this results in an IllegalArgumentException, rather than
+             * the expected UnsupportedEncodingException. Yikes
+             */
+            throw new UnsupportedEncodingException();
+        }
+    }
+
+    /**
+     * Look for encoded words within a word.  The MIME spec doesn't
+     * allow this, but many broken mailers, especially Japanese mailers,
+     * produce such incorrect encodings.
+     */
+    private static String decodeInnerWords(String word)
+                                throws UnsupportedEncodingException {
+        int start = 0, i;
+        StringBuffer buf = new StringBuffer();
+        while ((i = word.indexOf("=?", start)) >= 0) {
+            buf.append(word.substring(start, i));
+            int end = word.indexOf("?=", i);
+            if (end < 0)
+                break;
+            String s = word.substring(i, end + 2);
+            try {
+                s = decodeWord(s);
+            } catch (ParseException pex) {
+                // ignore it, just use the original string
+            }
+            buf.append(s);
+            start = end + 2;
+        }
+        if (start == 0)
+            return word;
+        if (start < word.length())
+            buf.append(word.substring(start));
+        return buf.toString();
+    }
+
+    /**
+     * A utility method to quote a word, if the word contains any
+     * characters from the specified 'specials' list.<p>
+     *
+     * The <code>HeaderTokenizer</code> class defines two special
+     * sets of delimiters - MIME and RFC 822. <p>
+     *
+     * This method is typically used during the generation of
+     * RFC 822 and MIME header fields.
+     *
+     * @param   word    word to be quoted
+     * @param   specials the set of special characters
+     * @return          the possibly quoted word
+     * @see     javax.mail.internet.HeaderTokenizer#MIME
+     * @see     javax.mail.internet.HeaderTokenizer#RFC822
+     */
+    public static String quote(String word, String specials) {
+        int len = word.length();
+
+        /*
+         * Look for any "bad" characters, Escape and
+         *  quote the entire string if necessary.
+         */
+        boolean needQuoting = false;
+        for (int i = 0; i < len; i++) {
+            char c = word.charAt(i);
+            if (c == '"' || c == '\\' || c == '\r' || c == '\n') {
+                // need to escape them and then quote the whole string
+                StringBuffer sb = new StringBuffer(len + 3);
+                sb.append('"');
+                sb.append(word.substring(0, i));
+                int lastc = 0;
+                for (int j = i; j < len; j++) {
+                    char cc = word.charAt(j);
+                    if ((cc == '"') || (cc == '\\') ||
+                        (cc == '\r') || (cc == '\n'))
+                        if (cc == '\n' && lastc == '\r')
+                            ;   // do nothing, CR was already escaped
+                        else
+                            sb.append('\\');    // Escape the character
+                    sb.append(cc);
+                    lastc = cc;
+                }
+                sb.append('"');
+                return sb.toString();
+            } else if (c < 040 || c >= 0177 || specials.indexOf(c) >= 0)
+                // These characters cause the string to be quoted
+                needQuoting = true;
+        }
+
+        if (needQuoting) {
+            StringBuffer sb = new StringBuffer(len + 2);
+            sb.append('"').append(word).append('"');
+            return sb.toString();
+        } else
+            return word;
+    }
+
+    /**
+     * Fold a string at linear whitespace so that each line is no longer
+     * than 76 characters, if possible.  If there are more than 76
+     * non-whitespace characters consecutively, the string is folded at
+     * the first whitespace after that sequence.  The parameter
+     * <code>used</code> indicates how many characters have been used in
+     * the current line; it is usually the length of the header name. <p>
+     *
+     * Note that line breaks in the string aren't escaped; they probably
+     * should be.
+     *
+     * @param   used    characters used in line so far
+     * @param   s       the string to fold
+     * @return          the folded string
+     */
+    /*public*/ static String fold(int used, String s) {
+        if (!foldText)
+            return s;
+
+        int end;
+        char c;
+        // Strip trailing spaces
+        for (end = s.length() - 1; end >= 0; end--) {
+            c = s.charAt(end);
+            if (c != ' ' && c != '\t')
+                break;
+        }
+        if (end != s.length() - 1)
+            s = s.substring(0, end + 1);
+
+        // if the string fits now, just return it
+        if (used + s.length() <= 76)
+            return s;
+
+        // have to actually fold the string
+        StringBuffer sb = new StringBuffer(s.length() + 4);
+        char lastc = 0;
+        while (used + s.length() > 76) {
+            int lastspace = -1;
+            for (int i = 0; i < s.length(); i++) {
+                if (lastspace != -1 && used + i > 76)
+                    break;
+                c = s.charAt(i);
+                if (c == ' ' || c == '\t')
+                    if (!(lastc == ' ' || lastc == '\t'))
+                        lastspace = i;
+                lastc = c;
+            }
+            if (lastspace == -1) {
+                // no space, use the whole thing
+                sb.append(s);
+                s = "";
+                used = 0;
+                break;
+            }
+            sb.append(s.substring(0, lastspace));
+            sb.append("\r\n");
+            lastc = s.charAt(lastspace);
+            sb.append(lastc);
+            s = s.substring(lastspace + 1);
+            used = 1;
+        }
+        sb.append(s);
+        return sb.toString();
+    }
+
+    /**
+     * Unfold a folded header.  Any line breaks that aren't escaped and
+     * are followed by whitespace are removed.
+     *
+     * @param   s       the string to unfold
+     * @return          the unfolded string
+     */
+    /*public*/ static String unfold(String s) {
+        if (!foldText)
+            return s;
+
+        StringBuffer sb = null;
+        int i;
+        while ((i = indexOfAny(s, "\r\n")) >= 0) {
+            int start = i;
+            int l = s.length();
+            i++;                // skip CR or NL
+            if (i < l && s.charAt(i - 1) == '\r' && s.charAt(i) == '\n')
+                i++;    // skip LF
+            if (start == 0 || s.charAt(start - 1) != '\\') {
+                char c;
+                // if next line starts with whitespace, skip all of it
+                // XXX - always has to be true?
+                if (i < l && ((c = s.charAt(i)) == ' ' || c == '\t')) {
+                    i++;        // skip whitespace
+                    while (i < l && ((c = s.charAt(i)) == ' ' || c == '\t'))
+                        i++;
+                    if (sb == null)
+                        sb = new StringBuffer(s.length());
+                    if (start != 0) {
+                        sb.append(s.substring(0, start));
+                        sb.append(' ');
+                    }
+                    s = s.substring(i);
+                    continue;
+                }
+                // it's not a continuation line, just leave it in
+                if (sb == null)
+                    sb = new StringBuffer(s.length());
+                sb.append(s.substring(0, i));
+                s = s.substring(i);
+            } else {
+                // there's a backslash at "start - 1"
+                // strip it out, but leave in the line break
+                if (sb == null)
+                    sb = new StringBuffer(s.length());
+                sb.append(s.substring(0, start - 1));
+                sb.append(s.substring(start, i));
+                s = s.substring(i);
+            }
+        }
+        if (sb != null) {
+            sb.append(s);
+            return sb.toString();
+        } else
+            return s;
+    }
+
+    /**
+     * Return the first index of any of the characters in "any" in "s",
+     * or -1 if none are found.
+     *
+     * This should be a method on String.
+     */
+    private static int indexOfAny(String s, String any) {
+        return indexOfAny(s, any, 0);
+    }
+
+    private static int indexOfAny(String s, String any, int start) {
+        try {
+            int len = s.length();
+            for (int i = start; i < len; i++) {
+                if (any.indexOf(s.charAt(i)) >= 0)
+                    return i;
+            }
+            return -1;
+        } catch (StringIndexOutOfBoundsException e) {
+            return -1;
+        }
+    }
+
+    /**
+     * Convert a MIME charset name into a valid Java charset name. <p>
+     *
+     * @param charset   the MIME charset name
+     * @return  the Java charset equivalent. If a suitable mapping is
+     *          not available, the passed in charset is itself returned.
+     */
+    public static String javaCharset(String charset) {
+        if (mime2java == null || charset == null)
+            // no mapping table, or charset parameter is null
+            return charset;
+
+        String alias = (String)mime2java.get(charset.toLowerCase());
+        return alias == null ? charset : alias;
+    }
+
+    /**
+     * Convert a java charset into its MIME charset name. <p>
+     *
+     * Note that a future version of JDK (post 1.2) might provide
+     * this functionality, in which case, we may deprecate this
+     * method then.
+     *
+     * @param   charset    the JDK charset
+     * @return          the MIME/IANA equivalent. If a mapping
+     *                  is not possible, the passed in charset itself
+     *                  is returned.
+     * @since           JavaMail 1.1
+     */
+    public static String mimeCharset(String charset) {
+        if (java2mime == null || charset == null)
+            // no mapping table or charset param is null
+            return charset;
+
+        String alias = (String)java2mime.get(charset.toLowerCase());
+        return alias == null ? charset : alias;
+    }
+
+    private static String defaultJavaCharset;
+    private static String defaultMIMECharset;
+
+    /**
+     * Get the default charset corresponding to the system's current
+     * default locale.  If the System property <code>mail.mime.charset</code>
+     * is set, a system charset corresponding to this MIME charset will be
+     * returned. <p>
+     *
+     * @return  the default charset of the system's default locale,
+     *          as a Java charset. (NOT a MIME charset)
+     * @since   JavaMail 1.1
+     */
+    public static String getDefaultJavaCharset() {
+        if (defaultJavaCharset == null) {
+            /*
+             * If mail.mime.charset is set, it controls the default
+             * Java charset as well.
+             */
+            String mimecs = null;
+
+            mimecs = SAAJUtil.getSystemProperty("mail.mime.charset");
+
+            if (mimecs != null && mimecs.length() > 0) {
+                defaultJavaCharset = javaCharset(mimecs);
+                return defaultJavaCharset;
+            }
+
+            try {
+                defaultJavaCharset = System.getProperty("file.encoding",
+                                                        "8859_1");
+            } catch (SecurityException sex) {
+
+                class NullInputStream extends InputStream {
+                    public int read() {
+                        return 0;
+                    }
+                }
+                InputStreamReader reader =
+                        new InputStreamReader(new NullInputStream());
+                defaultJavaCharset = reader.getEncoding();
+                if (defaultJavaCharset == null)
+                    defaultJavaCharset = "8859_1";
+            }
+        }
+
+        return defaultJavaCharset;
+    }
+
+    /*
+     * Get the default MIME charset for this locale.
+     */
+    static String getDefaultMIMECharset() {
+        if (defaultMIMECharset == null) {
+                defaultMIMECharset = SAAJUtil.getSystemProperty("mail.mime.charset");
+        }
+        if (defaultMIMECharset == null)
+            defaultMIMECharset = mimeCharset(getDefaultJavaCharset());
+        return defaultMIMECharset;
+    }
+
+    // Tables to map MIME charset names to Java names and vice versa.
+    // XXX - Should eventually use J2SE 1.4 java.nio.charset.Charset
+    private static Hashtable mime2java;
+    private static Hashtable java2mime;
+
+    static {
+        java2mime = new Hashtable(40);
+        mime2java = new Hashtable(10);
+
+        try {
+            // Use this class's classloader to load the mapping file
+            // XXX - we should use SecuritySupport, but it's in another package
+            InputStream is =
+                    com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeUtility.class.getResourceAsStream(
+                    "/META-INF/javamail.charset.map");
+
+            if (is != null) {
+                is = new LineInputStream(is);
+
+                // Load the JDK-to-MIME charset mapping table
+                loadMappings((LineInputStream)is, java2mime);
+
+                // Load the MIME-to-JDK charset mapping table
+                loadMappings((LineInputStream)is, mime2java);
+            }
+        } catch (Exception ex) { }
+
+        // If we didn't load the tables, e.g., because we didn't have
+        // permission, load them manually.  The entries here should be
+        // the same as the default javamail.charset.map.
+        if (java2mime.isEmpty()) {
+            java2mime.put("8859_1", "ISO-8859-1");
+            java2mime.put("iso8859_1", "ISO-8859-1");
+            java2mime.put("ISO8859-1", "ISO-8859-1");
+
+            java2mime.put("8859_2", "ISO-8859-2");
+            java2mime.put("iso8859_2", "ISO-8859-2");
+            java2mime.put("ISO8859-2", "ISO-8859-2");
+
+            java2mime.put("8859_3", "ISO-8859-3");
+            java2mime.put("iso8859_3", "ISO-8859-3");
+            java2mime.put("ISO8859-3", "ISO-8859-3");
+
+            java2mime.put("8859_4", "ISO-8859-4");
+            java2mime.put("iso8859_4", "ISO-8859-4");
+            java2mime.put("ISO8859-4", "ISO-8859-4");
+
+            java2mime.put("8859_5", "ISO-8859-5");
+            java2mime.put("iso8859_5", "ISO-8859-5");
+            java2mime.put("ISO8859-5", "ISO-8859-5");
+
+            java2mime.put("8859_6", "ISO-8859-6");
+            java2mime.put("iso8859_6", "ISO-8859-6");
+            java2mime.put("ISO8859-6", "ISO-8859-6");
+
+            java2mime.put("8859_7", "ISO-8859-7");
+            java2mime.put("iso8859_7", "ISO-8859-7");
+            java2mime.put("ISO8859-7", "ISO-8859-7");
+
+            java2mime.put("8859_8", "ISO-8859-8");
+            java2mime.put("iso8859_8", "ISO-8859-8");
+            java2mime.put("ISO8859-8", "ISO-8859-8");
+
+            java2mime.put("8859_9", "ISO-8859-9");
+            java2mime.put("iso8859_9", "ISO-8859-9");
+            java2mime.put("ISO8859-9", "ISO-8859-9");
+
+            java2mime.put("SJIS", "Shift_JIS");
+            java2mime.put("MS932", "Shift_JIS");
+            java2mime.put("JIS", "ISO-2022-JP");
+            java2mime.put("ISO2022JP", "ISO-2022-JP");
+            java2mime.put("EUC_JP", "euc-jp");
+            java2mime.put("KOI8_R", "koi8-r");
+            java2mime.put("EUC_CN", "euc-cn");
+            java2mime.put("EUC_TW", "euc-tw");
+            java2mime.put("EUC_KR", "euc-kr");
+        }
+        if (mime2java.isEmpty()) {
+            mime2java.put("iso-2022-cn", "ISO2022CN");
+            mime2java.put("iso-2022-kr", "ISO2022KR");
+            mime2java.put("utf-8", "UTF8");
+            mime2java.put("utf8", "UTF8");
+            mime2java.put("ja_jp.iso2022-7", "ISO2022JP");
+            mime2java.put("ja_jp.eucjp", "EUCJIS");
+            mime2java.put("euc-kr", "KSC5601");
+            mime2java.put("euckr", "KSC5601");
+            mime2java.put("us-ascii", "ISO-8859-1");
+            mime2java.put("x-us-ascii", "ISO-8859-1");
+        }
+    }
+
+    private static void loadMappings(LineInputStream is, Hashtable table) {
+        String currLine;
+
+        while (true) {
+            try {
+                currLine = is.readLine();
+            } catch (IOException ioex) {
+                break; // error in reading, stop
+            }
+
+            if (currLine == null) // end of file, stop
+                break;
+            if (currLine.startsWith("--") && currLine.endsWith("--"))
+                // end of this table
+                break;
+
+            // ignore empty lines and comments
+            if (currLine.trim().length() == 0 || currLine.startsWith("#"))
+                continue;
+
+            // A valid entry is of the form <key><separator><value>
+            // where, <separator> := SPACE | HT. Parse this
+            StringTokenizer tk = new StringTokenizer(currLine, " \t");
+            try {
+                String key = tk.nextToken();
+                String value = tk.nextToken();
+                table.put(key.toLowerCase(), value);
+            } catch (NoSuchElementException nex) { }
+        }
+    }
+
+    static final int ALL_ASCII          = 1;
+    static final int MOSTLY_ASCII       = 2;
+    static final int MOSTLY_NONASCII    = 3;
+
+    /**
+     * Check if the given string contains non US-ASCII characters.
+     * @param   s       string
+     * @return          ALL_ASCII if all characters in the string
+     *                  belong to the US-ASCII charset. MOSTLY_ASCII
+     *                  if more than half of the available characters
+     *                  are US-ASCII characters. Else MOSTLY_NONASCII.
+     */
+    static int checkAscii(String s) {
+        int ascii = 0, non_ascii = 0;
+        int l = s.length();
+
+        for (int i = 0; i < l; i++) {
+            if (nonascii((int)s.charAt(i))) // non-ascii
+                non_ascii++;
+            else
+                ascii++;
+        }
+
+        if (non_ascii == 0)
+            return ALL_ASCII;
+        if (ascii > non_ascii)
+            return MOSTLY_ASCII;
+
+        return MOSTLY_NONASCII;
+    }
+
+    /**
+     * Check if the given byte array contains non US-ASCII characters.
+     * @param   b       byte array
+     * @return          ALL_ASCII if all characters in the string
+     *                  belong to the US-ASCII charset. MOSTLY_ASCII
+     *                  if more than half of the available characters
+     *                  are US-ASCII characters. Else MOSTLY_NONASCII.
+     *
+     * XXX - this method is no longer used
+     */
+    static int checkAscii(byte[] b) {
+        int ascii = 0, non_ascii = 0;
+
+        for (int i=0; i < b.length; i++) {
+            // The '&' operator automatically causes b[i] to be promoted
+            // to an int, and we mask out the higher bytes in the int
+            // so that the resulting value is not a negative integer.
+            if (nonascii(b[i] & 0xff)) // non-ascii
+                non_ascii++;
+            else
+                ascii++;
+        }
+
+        if (non_ascii == 0)
+            return ALL_ASCII;
+        if (ascii > non_ascii)
+            return MOSTLY_ASCII;
+
+        return MOSTLY_NONASCII;
+    }
+
+    /**
+     * Check if the given input stream contains non US-ASCII characters.
+     * Upto <code>max</code> bytes are checked. If <code>max</code> is
+     * set to <code>ALL</code>, then all the bytes available in this
+     * input stream are checked. If <code>breakOnNonAscii</code> is true
+     * the check terminates when the first non-US-ASCII character is
+     * found and MOSTLY_NONASCII is returned. Else, the check continues
+     * till <code>max</code> bytes or till the end of stream.
+     *
+     * @param   is      the input stream
+     * @param   max     maximum bytes to check for. The special value
+     *                  ALL indicates that all the bytes in this input
+     *                  stream must be checked.
+     * @param   breakOnNonAscii if <code>true</code>, then terminate the
+     *                  the check when the first non-US-ASCII character
+     *                  is found.
+     * @return          ALL_ASCII if all characters in the string
+     *                  belong to the US-ASCII charset. MOSTLY_ASCII
+     *                  if more than half of the available characters
+     *                  are US-ASCII characters. Else MOSTLY_NONASCII.
+     */
+    static int checkAscii(InputStream is, int max, boolean breakOnNonAscii) {
+        int ascii = 0, non_ascii = 0;
+        int len;
+        int block = 4096;
+        int linelen = 0;
+        boolean longLine = false, badEOL = false;
+        boolean checkEOL = encodeEolStrict && breakOnNonAscii;
+        byte buf[] = null;
+        if (max != 0) {
+            block = (max == ALL) ? 4096 : Math.min(max, 4096);
+            buf = new byte[block];
+        }
+        while (max != 0) {
+            try {
+                if ((len = is.read(buf, 0, block)) == -1)
+                    break;
+                int lastb = 0;
+                for (int i = 0; i < len; i++) {
+                    // The '&' operator automatically causes b[i] to
+                    // be promoted to an int, and we mask out the higher
+                    // bytes in the int so that the resulting value is
+                    // not a negative integer.
+                    int b = buf[i] & 0xff;
+                    if (checkEOL &&
+                            ((lastb == '\r' && b != '\n') ||
+                            (lastb != '\r' && b == '\n')))
+                        badEOL = true;
+                    if (b == '\r' || b == '\n')
+                        linelen = 0;
+                    else {
+                        linelen++;
+                        if (linelen > 998)      // 1000 - CRLF
+                            longLine = true;
+                    }
+                    if (nonascii(b)) {  // non-ascii
+                        if (breakOnNonAscii) // we are done
+                            return MOSTLY_NONASCII;
+                        else
+                            non_ascii++;
+                    } else
+                        ascii++;
+                    lastb = b;
+                }
+            } catch (IOException ioex) {
+                break;
+            }
+            if (max != ALL)
+                max -= len;
+        }
+
+        if (max == 0 && breakOnNonAscii)
+            // We have been told to break on the first non-ascii character.
+            // We haven't got any non-ascii character yet, but then we
+            // have not checked all of the available bytes either. So we
+            // cannot say for sure that this input stream is ALL_ASCII,
+            // and hence we must play safe and return MOSTLY_NONASCII
+
+            return MOSTLY_NONASCII;
+
+        if (non_ascii == 0) { // no non-us-ascii characters so far
+            // If we're looking at non-text data, and we saw CR without LF
+            // or vice versa, consider this mostly non-ASCII so that it
+            // will be base64 encoded (since the quoted-printable encoder
+            // doesn't encode this case properly).
+            if (badEOL)
+                return MOSTLY_NONASCII;
+            // if we've seen a long line, we degrade to mostly ascii
+            else if (longLine)
+                return MOSTLY_ASCII;
+            else
+                return ALL_ASCII;
+        }
+        if (ascii > non_ascii) // mostly ascii
+            return MOSTLY_ASCII;
+        return MOSTLY_NONASCII;
+    }
+
+    static final boolean nonascii(int b) {
+        return b >= 0177 || (b < 040 && b != '\r' && b != '\n' && b != '\t');
+    }
+}
+
+/**
+ * An OutputStream that determines whether the data written to
+ * it is all ASCII, mostly ASCII, or mostly non-ASCII.
+ */
+class AsciiOutputStream extends OutputStream {
+    private boolean breakOnNonAscii;
+    private int ascii = 0, non_ascii = 0;
+    private int linelen = 0;
+    private boolean longLine = false;
+    private boolean badEOL = false;
+    private boolean checkEOL = false;
+    private int lastb = 0;
+    private int ret = 0;
+
+    public AsciiOutputStream(boolean breakOnNonAscii, boolean encodeEolStrict) {
+        this.breakOnNonAscii = breakOnNonAscii;
+        checkEOL = encodeEolStrict && breakOnNonAscii;
+    }
+
+    public void write(int b) throws IOException {
+        check(b);
+    }
+
+    public void write(byte b[]) throws IOException {
+        write(b, 0, b.length);
+    }
+
+    public void write(byte b[], int off, int len) throws IOException {
+        len += off;
+        for (int i = off; i < len ; i++)
+            check(b[i]);
+    }
+
+    private final void check(int b) throws IOException {
+        b &= 0xff;
+        if (checkEOL &&
+                ((lastb == '\r' && b != '\n') || (lastb != '\r' && b == '\n')))
+            badEOL = true;
+        if (b == '\r' || b == '\n')
+            linelen = 0;
+        else {
+            linelen++;
+            if (linelen > 998)  // 1000 - CRLF
+                longLine = true;
+        }
+        if (MimeUtility.nonascii(b)) { // non-ascii
+            non_ascii++;
+            if (breakOnNonAscii) {      // we are done
+                ret = MimeUtility.MOSTLY_NONASCII;
+                throw new EOFException();
+            }
+        } else
+            ascii++;
+        lastb = b;
+    }
+
+    /**
+     * Return ASCII-ness of data stream.
+     */
+    public int getAscii() {
+        if (ret != 0)
+            return ret;
+        // If we're looking at non-text data, and we saw CR without LF
+        // or vice versa, consider this mostly non-ASCII so that it
+        // will be base64 encoded (since the quoted-printable encoder
+        // doesn't encode this case properly).
+        if (badEOL)
+            return MimeUtility.MOSTLY_NONASCII;
+        else if (non_ascii == 0) { // no non-us-ascii characters so far
+            // if we've seen a long line, we degrade to mostly ascii
+            if (longLine)
+                return MimeUtility.MOSTLY_ASCII;
+            else
+                return MimeUtility.ALL_ASCII;
+        }
+        if (ascii > non_ascii) // mostly ascii
+            return MimeUtility.MOSTLY_ASCII;
+        return MimeUtility.MOSTLY_NONASCII;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ParameterList.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,237 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)ParameterList.java     1.10 03/02/12
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * This class holds MIME parameters (attribute-value pairs).
+ *
+ * @version 1.10, 03/02/12
+ * @author  John Mani
+ */
+
+public final class ParameterList {
+
+    private final HashMap list;
+
+    /**
+     * No-arg Constructor.
+     */
+    public ParameterList() {
+        this.list = new HashMap();
+    }
+
+    private ParameterList(HashMap m) {
+        this.list = m;
+    }
+
+    /**
+     * Constructor that takes a parameter-list string. The String
+     * is parsed and the parameters are collected and stored internally.
+     * A ParseException is thrown if the parse fails.
+     * Note that an empty parameter-list string is valid and will be
+     * parsed into an empty ParameterList.
+     *
+     * @param   s       the parameter-list string.
+     * @exception       ParseException if the parse fails.
+     */
+    public ParameterList(String s) throws ParseException {
+        HeaderTokenizer h = new HeaderTokenizer(s, HeaderTokenizer.MIME);
+        HeaderTokenizer.Token tk;
+        int type;
+        String name;
+
+        list = new HashMap();
+        while (true) {
+            tk = h.next();
+            type = tk.getType();
+
+            if (type == HeaderTokenizer.Token.EOF) // done
+                return;
+
+            if ((char)type == ';') {
+                // expect parameter name
+                tk = h.next();
+                // tolerate trailing semicolon, even though it violates the spec
+                if (tk.getType() == HeaderTokenizer.Token.EOF)
+                    return;
+                // parameter name must be a MIME Atom
+                if (tk.getType() != HeaderTokenizer.Token.ATOM)
+                    throw new ParseException();
+                name = tk.getValue().toLowerCase();
+
+                // expect '='
+                tk = h.next();
+                if ((char)tk.getType() != '=')
+                    throw new ParseException();
+
+                // expect parameter value
+                tk = h.next();
+                type = tk.getType();
+                // parameter value must be a MIME Atom or Quoted String
+                if (type != HeaderTokenizer.Token.ATOM &&
+                    type != HeaderTokenizer.Token.QUOTEDSTRING)
+                    throw new ParseException();
+
+                list.put(name, tk.getValue());
+            } else
+                throw new ParseException();
+        }
+    }
+
+    /**
+     * Return the number of parameters in this list.
+     *
+     * @return  number of parameters.
+     */
+    public int size() {
+        return list.size();
+    }
+
+    /**
+     * Returns the value of the specified parameter. Note that
+     * parameter names are case-insensitive.
+     *
+     * @param name      parameter name.
+     * @return          Value of the parameter. Returns
+     *                  <code>null</code> if the parameter is not
+     *                  present.
+     */
+    public String get(String name) {
+        return (String)list.get(name.trim().toLowerCase());
+    }
+
+    /**
+     * Set a parameter. If this parameter already exists, it is
+     * replaced by this new value.
+     *
+     * @param   name    name of the parameter.
+     * @param   value   value of the parameter.
+     */
+    public void set(String name, String value) {
+        list.put(name.trim().toLowerCase(), value);
+    }
+
+    /**
+     * Removes the specified parameter from this ParameterList.
+     * This method does nothing if the parameter is not present.
+     *
+     * @param   name    name of the parameter.
+     */
+    public void remove(String name) {
+        list.remove(name.trim().toLowerCase());
+    }
+
+    /**
+     * Return an enumeration of the names of all parameters in this
+     * list.
+     *
+     * @return Enumeration of all parameter names in this list.
+     */
+    public Iterator getNames() {
+        return list.keySet().iterator();
+    }
+
+
+    /**
+     * Convert this ParameterList into a MIME String. If this is
+     * an empty list, an empty string is returned.
+     *
+     * @return          String
+     */
+    public String toString() {
+        return toString(0);
+    }
+
+    /**
+     * Convert this ParameterList into a MIME String. If this is
+     * an empty list, an empty string is returned.
+     *
+     * The 'used' parameter specifies the number of character positions
+     * already taken up in the field into which the resulting parameter
+     * list is to be inserted. It's used to determine where to fold the
+     * resulting parameter list.
+     *
+     * @param used      number of character positions already used, in
+     *                  the field into which the parameter list is to
+     *                  be inserted.
+     * @return          String
+     */
+    public String toString(int used) {
+        StringBuffer sb = new StringBuffer();
+        Iterator itr = list.entrySet().iterator();
+
+        while (itr.hasNext()) {
+            Map.Entry e = (Map.Entry)itr.next();
+            String name = (String)e.getKey();
+            String value = quote((String)e.getValue());
+            sb.append("; ");
+            used += 2;
+            int len = name.length() + value.length() + 1;
+            if (used + len > 76) { // overflows ...
+                sb.append("\r\n\t"); // .. start new continuation line
+                used = 8; // account for the starting <tab> char
+            }
+            sb.append(name).append('=');
+            used += name.length() + 1;
+            if (used + value.length() > 76) { // still overflows ...
+                // have to fold value
+                String s = MimeUtility.fold(used, value);
+                sb.append(s);
+                int lastlf = s.lastIndexOf('\n');
+                if (lastlf >= 0)        // always true
+                    used += s.length() - lastlf - 1;
+                else
+                    used += s.length();
+            } else {
+                sb.append(value);
+                used += value.length();
+            }
+        }
+
+        return sb.toString();
+    }
+
+    // Quote a parameter value token if required.
+    private String quote(String value) {
+        if ("".equals(value))
+                return "\"\"";
+        return MimeUtility.quote(value, HeaderTokenizer.MIME);
+    }
+
+    public ParameterList copy() {
+        return new ParameterList((HashMap)list.clone());
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ParseException.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)ParseException.java    1.3 02/03/27
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
+
+import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException;
+
+/**
+ * The exception thrown due to an error in parsing RFC822
+ * or MIME headers
+ *
+ * @author John Mani
+ */
+
+public class ParseException extends MessagingException {
+
+    /**
+     * Constructs a ParseException with no detail message.
+     */
+    public ParseException() {
+        super();
+    }
+
+    /**
+     * Constructs a ParseException with the specified detail message.
+     * @param s         the detail message
+     */
+    public ParseException(String s) {
+        super(s);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/SharedInputStream.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)SharedInputStream.java 1.2 02/03/27
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+
+// SAAJ doesn't utilize this, but I think it should.
+/**
+ * An InputStream that is backed by data that can be shared by multiple
+ * readers may implement this interface.  This allows users of such an
+ * InputStream to determine the current positionin the InputStream, and
+ * to create new InputStreams representing a subset of the data in the
+ * original InputStream.  The new InputStream will access the same
+ * underlying data as the original, without copying the data.
+ *
+ * @version 1.2, 02/03/27
+ * @author  Bill Shannon
+ * @since JavaMail 1.2
+ */
+
+public interface SharedInputStream {
+    /**
+     * Return the current position in the InputStream, as an
+     * offset from the beginning of the InputStream.
+     *
+     * @return  the current position
+     */
+    public long getPosition();
+
+    /**
+     * Return a new InputStream representing a subset of the data
+     * from this InputStream, starting at <code>start</code> (inclusive)
+     * up to <code>end</code> (exclusive).  <code>start</code> must be
+     * non-negative.  If <code>end</code> is -1, the new stream ends
+     * at the same place as this stream.  The returned InputStream
+     * will also implement the SharedInputStream interface.
+     *
+     * @param   start   the starting position
+     * @param   end     the ending position + 1
+     * @return          the new stream
+     */
+    public InputStream newStream(long start, long end);
+
+    /**
+     * Writes the specified region to another {@link OutputStream}.
+     */
+    public void writeTo(long start,long end, OutputStream out);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/UniqueValue.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)UniqueValue.java       1.6 02/03/27
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.internet;
+
+
+/**
+ * This is a utility class that generates unique values. The generated
+ * String contains only US-ASCII characters and hence is safe for use
+ * in RFC822 headers. <p>
+ *
+ * This is a package private class.
+ *
+ * @author John Mani
+ * @author Max Spivak
+ * @author Bill Shannon
+ */
+
+class UniqueValue {
+    /**
+     * A global part number.  Access is not synchronized because the
+     * value is only one part of the unique value and so doesn't need
+     * to be accurate.
+     */
+    private static int part = 0;
+
+    /**
+     * Get a unique value for use in a multipart boundary string.
+     *
+     * This implementation generates it by concatenating a global
+     * part number, a newly created object's <code>hashCode()</code>,
+     * and the current time (in milliseconds).
+     */
+    public static String getUniqueBoundaryValue() {
+        StringBuffer s = new StringBuffer();
+
+        // Unique string is ----=_Part_<part>_<hashcode>.<currentTime>
+        s.append("----=_Part_").append(part++).append("_").
+          append(s.hashCode()).append('.').
+          append(System.currentTimeMillis());
+        return s.toString();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/ASCIIUtility.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)ASCIIUtility.java      1.9 02/03/27
+ */
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
+
+import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;
+
+import java.io.*;
+
+public class ASCIIUtility {
+
+    // Private constructor so that this class is not instantiated
+    private ASCIIUtility() { }
+
+
+    /**
+     * Convert the bytes within the specified range of the given byte
+     * array into a signed integer in the given radix . The range extends
+     * from <code>start</code> till, but not including <code>end</code>. <p>
+     *
+     * Based on java.lang.Integer.parseInt()
+     */
+    public static int parseInt(byte[] b, int start, int end, int radix)
+                throws NumberFormatException {
+        if (b == null)
+            throw new NumberFormatException("null");
+
+        int result = 0;
+        boolean negative = false;
+        int i = start;
+        int limit;
+        int multmin;
+        int digit;
+
+        if (end > start) {
+            if (b[i] == '-') {
+                negative = true;
+                limit = Integer.MIN_VALUE;
+                i++;
+            } else {
+                limit = -Integer.MAX_VALUE;
+            }
+            multmin = limit / radix;
+            if (i < end) {
+                digit = Character.digit((char)b[i++], radix);
+                if (digit < 0) {
+                    throw new NumberFormatException(
+                        "illegal number: " + toString(b, start, end)
+                        );
+                } else {
+                    result = -digit;
+                }
+            }
+            while (i < end) {
+                // Accumulating negatively avoids surprises near MAX_VALUE
+                digit = Character.digit((char)b[i++], radix);
+                if (digit < 0) {
+                    throw new NumberFormatException("illegal number");
+                }
+                if (result < multmin) {
+                    throw new NumberFormatException("illegal number");
+                }
+                result *= radix;
+                if (result < limit + digit) {
+                    throw new NumberFormatException("illegal number");
+                }
+                result -= digit;
+            }
+        } else {
+            throw new NumberFormatException("illegal number");
+        }
+        if (negative) {
+            if (i > start + 1) {
+                return result;
+            } else {    /* Only got "-" */
+                throw new NumberFormatException("illegal number");
+            }
+        } else {
+            return -result;
+        }
+    }
+
+    /**
+     * Convert the bytes within the specified range of the given byte
+     * array into a String. The range extends from <code>start</code>
+     * till, but not including <code>end</code>. <p>
+     */
+    public static String toString(byte[] b, int start, int end) {
+        int size = end - start;
+        char[] theChars = new char[size];
+
+        for (int i = 0, j = start; i < size; )
+            theChars[i++] = (char)(b[j++]&0xff);
+
+        return new String(theChars);
+    }
+
+    public static byte[] getBytes(String s) {
+        char [] chars= s.toCharArray();
+        int size = chars.length;
+        byte[] bytes = new byte[size];
+
+        for (int i = 0; i < size;)
+            bytes[i] = (byte) chars[i++];
+        return bytes;
+    }
+
+    /**
+     *
+     * @deprecated
+     *      this is an expensive operation that require an additional
+     *      buffer reallocation just to get the array of an exact size.
+     *      Unless you absolutely need the exact size array, don't use this.
+     *      Use {@link ByteOutputStream} and {@link ByteOutputStream#write(InputStream)}.
+     */
+    public static byte[] getBytes(InputStream is) throws IOException {
+        ByteOutputStream bos = null;
+        try {
+            bos = new ByteOutputStream();
+            bos.write(is);
+        } finally {
+            if (bos != null)
+                bos.close();
+            is.close();
+        }
+        return bos.toByteArray();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/BASE64DecoderStream.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,256 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)BASE64DecoderStream.java       1.8 02/03/27
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
+
+import java.io.*;
+
+/**
+ * This class implements a BASE64 Decoder. It is implemented as
+ * a FilterInputStream, so one can just wrap this class around
+ * any input stream and read bytes from this filter. The decoding
+ * is done as the bytes are read out.
+ *
+ * @author John Mani
+ * @author Bill Shannon
+ */
+
+public class BASE64DecoderStream extends FilterInputStream {
+    private byte[] buffer;      // cache of decoded bytes
+    private int bufsize = 0;    // size of the cache
+    private int index = 0;      // index into the cache
+
+    /**
+     * Create a BASE64 decoder that decodes the specified input stream
+     * @param in        the input stream
+     */
+    public BASE64DecoderStream(InputStream in) {
+        super(in);
+        buffer = new byte[3];
+    }
+
+    /**
+     * Read the next decoded byte from this input stream. The byte
+     * is returned as an <code>int</code> in the range <code>0</code>
+     * to <code>255</code>. If no byte is available because the end of
+     * the stream has been reached, the value <code>-1</code> is returned.
+     * This method blocks until input data is available, the end of the
+     * stream is detected, or an exception is thrown.
+     *
+     * @return     next byte of data, or <code>-1</code> if the end of the
+     *             stream is reached.
+     * @exception  IOException  if an I/O error occurs.
+     * @see        java.io.FilterInputStream#in
+     */
+    public int read() throws IOException {
+        if (index >= bufsize) {
+            decode(); // Fills up buffer
+            if (bufsize == 0) // buffer is empty
+                return -1;
+            index = 0; // reset index into buffer
+        }
+        return buffer[index++] & 0xff; // Zero off the MSB
+    }
+
+    /**
+     * Reads up to <code>len</code> decoded bytes of data from this input stream
+     * into an array of bytes. This method blocks until some input is
+     * available.
+     * <p>
+     *
+     * @param      buf   the buffer into which the data is read.
+     * @param      off   the start offset of the data.
+     * @param      len   the maximum number of bytes read.
+     * @return     the total number of bytes read into the buffer, or
+     *             <code>-1</code> if there is no more data because the end of
+     *             the stream has been reached.
+     * @exception  IOException  if an I/O error occurs.
+     */
+    public int read(byte[] buf, int off, int len) throws IOException {
+        int i, c;
+        for (i = 0; i < len; i++) {
+            if ((c = read()) == -1) {
+                if (i == 0) // At end of stream, so we should
+                    i = -1; // return -1 , NOT 0.
+                break;
+            }
+            buf[off+i] = (byte)c;
+        }
+
+        return i;
+    }
+
+    /**
+     * Tests if this input stream supports marks. Currently this class
+     * does not support marks
+     */
+    public boolean markSupported() {
+        return false; // Maybe later ..
+    }
+
+    /**
+     * Returns the number of bytes that can be read from this input
+     * stream without blocking. However, this figure is only
+     * a close approximation in case the original encoded stream
+     * contains embedded CRLFs; since the CRLFs are discarded, not decoded
+     */
+    public int available() throws IOException {
+         // This is only an estimate, since in.available()
+         // might include CRLFs too ..
+         return ((in.available() * 3)/4 + (bufsize-index));
+    }
+
+    /**
+     * This character array provides the character to value map
+     * based on RFC1521.
+     */
+    private final static char pem_array[] = {
+        'A','B','C','D','E','F','G','H', // 0
+        'I','J','K','L','M','N','O','P', // 1
+        'Q','R','S','T','U','V','W','X', // 2
+        'Y','Z','a','b','c','d','e','f', // 3
+        'g','h','i','j','k','l','m','n', // 4
+        'o','p','q','r','s','t','u','v', // 5
+        'w','x','y','z','0','1','2','3', // 6
+        '4','5','6','7','8','9','+','/'  // 7
+    };
+
+    private final static byte pem_convert_array[] = new byte[256];
+
+    static {
+        for (int i = 0; i < 255; i++)
+            pem_convert_array[i] = -1;
+        for(int i = 0; i < pem_array.length; i++)
+            pem_convert_array[pem_array[i]] = (byte) i;
+    }
+
+    /* The decoder algorithm */
+    private byte[] decode_buffer = new byte[4];
+    private void decode() throws IOException {
+        bufsize = 0;
+        /*
+         * We need 4 valid base64 characters before we start decoding.
+         * We skip anything that's not a valid base64 character (usually
+         * just CRLF).
+         */
+        int got = 0;
+        while (got < 4) {
+            int i = in.read();
+            if (i == -1) {
+                if (got == 0)
+                    return;     // EOF before any data is ok
+                throw new IOException("Error in encoded stream, got " + got);
+            }
+            if (i >= 0 && i < 256 && i == '=' || pem_convert_array[i] != -1)
+                decode_buffer[got++] = (byte)i;
+        }
+
+        byte a, b;
+        a = pem_convert_array[decode_buffer[0] & 0xff];
+        b = pem_convert_array[decode_buffer[1] & 0xff];
+        // The first decoded byte
+        buffer[bufsize++] = (byte)(((a << 2) & 0xfc) | ((b >>> 4) & 3));
+
+        if (decode_buffer[2] == '=') // End of this BASE64 encoding
+            return;
+        a = b;
+        b = pem_convert_array[decode_buffer[2] & 0xff];
+        // The second decoded byte
+        buffer[bufsize++] = (byte)(((a << 4) & 0xf0) | ((b >>> 2) & 0xf));
+
+        if (decode_buffer[3] == '=') // End of this BASE64 encoding
+            return;
+        a = b;
+        b = pem_convert_array[decode_buffer[3] & 0xff];
+        // The third decoded byte
+        buffer[bufsize++] = (byte)(((a << 6) & 0xc0) | (b & 0x3f));
+    }
+
+    /**
+     * Base64 decode a byte array.  No line breaks are allowed.
+     * This method is suitable for short strings, such as those
+     * in the IMAP AUTHENTICATE protocol, but not to decode the
+     * entire content of a MIME part.
+     *
+     * NOTE: inbuf may only contain valid base64 characters.
+     *       Whitespace is not ignored.
+     */
+    public static byte[] decode(byte[] inbuf) {
+        int size = (inbuf.length / 4) * 3;
+        if (size == 0)
+            return inbuf;
+
+        if (inbuf[inbuf.length - 1] == '=') {
+            size--;
+            if (inbuf[inbuf.length - 2] == '=')
+                size--;
+        }
+        byte[] outbuf = new byte[size];
+
+        int inpos = 0, outpos = 0;
+        size = inbuf.length;
+        while (size > 0) {
+            byte a, b;
+            a = pem_convert_array[inbuf[inpos++] & 0xff];
+            b = pem_convert_array[inbuf[inpos++] & 0xff];
+            // The first decoded byte
+            outbuf[outpos++] = (byte)(((a << 2) & 0xfc) | ((b >>> 4) & 3));
+
+            if (inbuf[inpos] == '=') // End of this BASE64 encoding
+                return outbuf;
+            a = b;
+            b = pem_convert_array[inbuf[inpos++] & 0xff];
+            // The second decoded byte
+            outbuf[outpos++] = (byte)(((a << 4) & 0xf0) | ((b >>> 2) & 0xf));
+
+            if (inbuf[inpos] == '=') // End of this BASE64 encoding
+                return outbuf;
+            a = b;
+            b = pem_convert_array[inbuf[inpos++] & 0xff];
+            // The third decoded byte
+            outbuf[outpos++] = (byte)(((a << 6) & 0xc0) | (b & 0x3f));
+            size -= 4;
+        }
+        return outbuf;
+    }
+
+    /*** begin TEST program ***
+    public static void main(String argv[]) throws Exception {
+        FileInputStream infile = new FileInputStream(argv[0]);
+        BASE64DecoderStream decoder = new BASE64DecoderStream(infile);
+        int c;
+
+        while ((c = decoder.read()) != -1)
+            System.out.print((char)c);
+        System.out.flush();
+    }
+    *** end TEST program ***/
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/BASE64EncoderStream.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,244 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)BASE64EncoderStream.java       1.6 02/03/27
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
+
+import java.io.*;
+
+/**
+ * This class implements a BASE64 Encoder. It is implemented as
+ * a FilterOutputStream, so one can just wrap this class around
+ * any output stream and write bytes into this filter. The Encoding
+ * is done as the bytes are written out.
+ *
+ * @author John Mani
+ * @author Bill Shannon
+ */
+
+public class BASE64EncoderStream extends FilterOutputStream {
+    private byte[] buffer;      // cache of bytes that are yet to be encoded
+    private int bufsize = 0;    // size of the cache
+    private int count = 0;      // number of bytes that have been output
+    private int bytesPerLine;   // number of bytes per line
+
+    /**
+     * Create a BASE64 encoder that encodes the specified input stream
+     * @param out        the output stream
+     * @param bytesPerLine  number of bytes per line. The encoder inserts
+     *                   a CRLF sequence after the specified number of bytes
+     */
+    public BASE64EncoderStream(OutputStream out, int bytesPerLine) {
+        super(out);
+        buffer = new byte[3];
+        this.bytesPerLine = bytesPerLine;
+    }
+
+    /**
+     * Create a BASE64 encoder that encodes the specified input stream.
+     * Inserts the CRLF sequence after outputting 76 bytes.
+     * @param out        the output stream
+     */
+    public BASE64EncoderStream(OutputStream out) {
+        this(out, 76);
+    }
+
+    /**
+     * Encodes <code>len</code> bytes from the specified
+     * <code>byte</code> array starting at offset <code>off</code> to
+     * this output stream.
+     *
+     * @param      b     the data.
+     * @param      off   the start offset in the data.
+     * @param      len   the number of bytes to write.
+     * @exception  IOException  if an I/O error occurs.
+     */
+    public void write(byte[] b, int off, int len) throws IOException {
+        for (int i = 0; i < len; i++)
+            write(b[off + i]);
+    }
+
+    /**
+     * Encodes <code>b.length</code> bytes to this output stream.
+     * @param      b   the data to be written.
+     * @exception  IOException  if an I/O error occurs.
+     */
+    public void write(byte[] b) throws IOException {
+        write(b, 0, b.length);
+    }
+
+    /**
+     * Encodes the specified <code>byte</code> to this output stream.
+     * @param      c   the <code>byte</code>.
+     * @exception  IOException  if an I/O error occurs.
+     */
+    public void write(int c) throws IOException {
+        buffer[bufsize++] = (byte)c;
+        if (bufsize == 3) { // Encoding unit = 3 bytes
+            encode();
+            bufsize = 0;
+        }
+    }
+
+    /**
+     * Flushes this output stream and forces any buffered output bytes
+     * to be encoded out to the stream.
+     * @exception  IOException  if an I/O error occurs.
+     */
+    public void flush() throws IOException {
+        if (bufsize > 0) { // If there's unencoded characters in the buffer ..
+            encode();      // .. encode them
+            bufsize = 0;
+        }
+        out.flush();
+    }
+
+    /**
+     * Forces any buffered output bytes to be encoded out to the stream
+     * and closes this output stream
+     */
+    public void close() throws IOException {
+        flush();
+        out.close();
+    }
+
+    /** This array maps the characters to their 6 bit values */
+    private final static char pem_array[] = {
+        'A','B','C','D','E','F','G','H', // 0
+        'I','J','K','L','M','N','O','P', // 1
+        'Q','R','S','T','U','V','W','X', // 2
+        'Y','Z','a','b','c','d','e','f', // 3
+        'g','h','i','j','k','l','m','n', // 4
+        'o','p','q','r','s','t','u','v', // 5
+        'w','x','y','z','0','1','2','3', // 6
+        '4','5','6','7','8','9','+','/'  // 7
+    };
+
+    private void encode() throws IOException {
+        // If writing out this encoded unit will cause overflow,
+        // start a new line.
+        if (count + 4 > bytesPerLine) {
+            out.write('\r');
+            out.write('\n');
+            count = 0;
+        }
+
+        byte a, b, c;
+        if (bufsize == 1) {
+            a = buffer[0];
+            b = 0;
+            c = 0;
+            out.write(pem_array[(a >>> 2) & 0x3F]);
+            out.write(pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)]);
+            out.write('='); // pad character
+            out.write('='); // pad character
+        } else if (bufsize == 2) {
+            a = buffer[0];
+            b = buffer[1];
+            c = 0;
+            out.write(pem_array[(a >>> 2) & 0x3F]);
+            out.write(pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)]);
+            out.write(pem_array[((b << 2) & 0x3c) + ((c >>> 6) & 0x3)]);
+            out.write('='); // pad character
+        } else {
+            a = buffer[0];
+            b = buffer[1];
+            c = buffer[2];
+            out.write(pem_array[(a >>> 2) & 0x3F]);
+            out.write(pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)]);
+            out.write(pem_array[((b << 2) & 0x3c) + ((c >>> 6) & 0x3)]);
+            out.write(pem_array[c & 0x3F]);
+        }
+
+        // increment count
+        count += 4;
+    }
+
+    /**
+     * Base64 encode a byte array.  No line breaks are inserted.
+     * This method is suitable for short strings, such as those
+     * in the IMAP AUTHENTICATE protocol, but not to encode the
+     * entire content of a MIME part.
+     */
+    public static byte[] encode(byte[] inbuf) {
+        if (inbuf.length == 0)
+            return inbuf;
+        byte[] outbuf = new byte[((inbuf.length + 2) / 3) * 4];
+        int inpos = 0, outpos = 0;
+        int size = inbuf.length;
+        while (size > 0) {
+            byte a, b, c;
+            if (size == 1) {
+                a = inbuf[inpos++];
+                b = 0;
+                c = 0;
+                outbuf[outpos++] = (byte)pem_array[(a >>> 2) & 0x3F];
+                outbuf[outpos++] =
+                        (byte)pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)];
+                outbuf[outpos++] = (byte)'=';  // pad character
+                outbuf[outpos++] = (byte)'=';  // pad character
+            } else if (size == 2) {
+                a = inbuf[inpos++];
+                b = inbuf[inpos++];
+                c = 0;
+                outbuf[outpos++] = (byte)pem_array[(a >>> 2) & 0x3F];
+                outbuf[outpos++] =
+                        (byte)pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)];
+                outbuf[outpos++] =
+                        (byte)pem_array[((b << 2) & 0x3c) + ((c >>> 6) & 0x3)];
+                outbuf[outpos++] = (byte)'=';  // pad character
+            } else {
+                a = inbuf[inpos++];
+                b = inbuf[inpos++];
+                c = inbuf[inpos++];
+                outbuf[outpos++] = (byte)pem_array[(a >>> 2) & 0x3F];
+                outbuf[outpos++] =
+                        (byte)pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)];
+                outbuf[outpos++] =
+                        (byte)pem_array[((b << 2) & 0x3c) + ((c >>> 6) & 0x3)];
+                outbuf[outpos++] = (byte)pem_array[c & 0x3F];
+            }
+            size -= 3;
+        }
+        return outbuf;
+    }
+
+    /*** begin TEST program
+    public static void main(String argv[]) throws Exception {
+        FileInputStream infile = new FileInputStream(argv[0]);
+        BASE64EncoderStream encoder = new BASE64EncoderStream(System.out);
+        int c;
+
+        while ((c = infile.read()) != -1)
+            encoder.write(c);
+        encoder.close();
+    }
+    *** end TEST program **/
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/BEncoderStream.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)BEncoderStream.java    1.3 02/03/27
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
+
+import java.io.OutputStream;
+
+/**
+ * This class implements a 'B' Encoder as defined by RFC2047 for
+ * encoding MIME headers. It subclasses the BASE64EncoderStream
+ * class.
+ *
+ * @author John Mani
+ */
+
+public class BEncoderStream extends BASE64EncoderStream {
+
+    /**
+     * Create a 'B' encoder that encodes the specified input stream.
+     * @param out        the output stream
+     */
+    public BEncoderStream(OutputStream out) {
+        super(out, Integer.MAX_VALUE); // MAX_VALUE is 2^31, should
+                                       // suffice (!) to indicate that
+                                       // CRLFs should not be inserted
+    }
+
+    /**
+     * Returns the length of the encoded version of this byte array.
+     */
+    public static int encodedLength(byte[] b) {
+        return ((b.length + 2)/3) * 4;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/LineInputStream.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,112 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)LineInputStream.java   1.7 03/01/07
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
+
+import java.io.*;
+
+/**
+ * This class is to support reading CRLF terminated lines that
+ * contain only US-ASCII characters from an input stream. Provides
+ * functionality that is similar to the deprecated
+ * <code>DataInputStream.readLine()</code>. Expected use is to read
+ * lines as String objects from a RFC822 stream.
+ *
+ * It is implemented as a FilterInputStream, so one can just wrap
+ * this class around any input stream and read bytes from this filter.
+ *
+ * @author John Mani
+ */
+
+public final class LineInputStream extends FilterInputStream {
+
+    private char[] lineBuffer = null; // reusable byte buffer
+
+    public LineInputStream(InputStream in) {
+        super(in);
+    }
+
+    /**
+     * Read a line containing only ASCII characters from the input
+     * stream. A line is terminated by a CR or NL or CR-NL sequence.
+     * A common error is a CR-CR-NL sequence, which will also terminate
+     * a line.
+     * The line terminator is not returned as part of the returned
+     * String. Returns null if no data is available. <p>
+     *
+     * This class is similar to the deprecated
+     * <code>DataInputStream.readLine()</code>
+     */
+    public String readLine() throws IOException {
+        InputStream in = this.in;
+        char[] buf = lineBuffer;
+
+        if (buf == null)
+            buf = lineBuffer = new char[128];
+
+        int c1;
+        int room = buf.length;
+        int offset = 0;
+
+        while ((c1 = in.read()) != -1) {
+            if (c1 == '\n') // Got NL, outa here.
+                break;
+            else if (c1 == '\r') {
+                // Got CR, is the next char NL ?
+                int c2 = in.read();
+                if (c2 == '\r')         // discard extraneous CR
+                    c2 = in.read();
+                if (c2 != '\n') {
+                    // If not NL, push it back
+                    if (!(in instanceof PushbackInputStream))
+                        in = this.in = new PushbackInputStream(in);
+                    ((PushbackInputStream)in).unread(c2);
+                }
+                break; // outa here.
+            }
+
+            // Not CR, NL or CR-NL ...
+            // .. Insert the byte into our byte buffer
+            if (--room < 0) { // No room, need to grow.
+                buf = new char[offset + 128];
+                room = buf.length - offset - 1;
+                System.arraycopy(lineBuffer, 0, buf, 0, offset);
+                lineBuffer = buf;
+            }
+            buf[offset++] = (char)c1;
+        }
+
+        if ((c1 == -1) && (offset == 0))
+            return null;
+
+        return String.copyValueOf(buf, 0, offset);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/OutputUtil.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)OutputUtil.java  1.6 02/03/27
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
+
+import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;
+
+import java.io.OutputStream;
+import java.io.IOException;
+
+/**
+ * This class is to support writing out Strings as a sequence of bytes
+ * terminated by a CRLF sequence. The String must contain only US-ASCII
+ * characters.<p>
+ *
+ * The expected use is to write out RFC822 style headers to an output
+ * stream. <p>
+ *
+ * @author Kohsuke Kawaguchi
+ */
+public abstract class OutputUtil {
+    private static byte[] newline = {'\r','\n'};
+
+    public static void writeln(String s,OutputStream out) throws IOException {
+        writeAsAscii(s,out);
+        writeln(out);
+    }
+
+    /**
+     * Writes a string as ASCII string.
+     */
+    public static void writeAsAscii(String s,OutputStream out) throws IOException {
+        int len = s.length();
+        for( int i=0; i<len; i++ )
+            out.write((byte)s.charAt(i));
+    }
+
+    public static void writeln(OutputStream out) throws IOException {
+        out.write(newline);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QDecoderStream.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)QDecoderStream.java    1.5 02/03/27
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * This class implements a Q Decoder as defined in RFC 2047
+ * for decoding MIME headers. It subclasses the QPDecoderStream class.
+ *
+ * @author John Mani
+ */
+
+public class QDecoderStream extends QPDecoderStream {
+
+    /**
+     * Create a Q-decoder that decodes the specified input stream.
+     * @param in        the input stream
+     */
+    public QDecoderStream(InputStream in) {
+        super(in);
+    }
+
+    /**
+     * Read the next decoded byte from this input stream. The byte
+     * is returned as an <code>int</code> in the range <code>0</code>
+     * to <code>255</code>. If no byte is available because the end of
+     * the stream has been reached, the value <code>-1</code> is returned.
+     * This method blocks until input data is available, the end of the
+     * stream is detected, or an exception is thrown.
+     *
+     * @return     the next byte of data, or <code>-1</code> if the end of the
+     *             stream is reached.
+     * @exception  IOException  if an I/O error occurs.
+     */
+    public int read() throws IOException {
+        int c = in.read();
+
+        if (c == '_') // Return '_' as ' '
+            return ' ';
+        else if (c == '=') {
+            // QP Encoded atom. Get the next two bytes ..
+            ba[0] = (byte)in.read();
+            ba[1] = (byte)in.read();
+            // .. and decode them
+            try {
+                return ASCIIUtility.parseInt(ba, 0, 2, 16);
+            } catch (NumberFormatException nex) {
+                throw new IOException("Error in QP stream " + nex.getMessage());
+            }
+        } else
+            return c;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QEncoderStream.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)QEncoderStream.java    1.4 02/03/27
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+/**
+ * This class implements a Q Encoder as defined by RFC 2047 for
+ * encoding MIME headers. It subclasses the QPEncoderStream class.
+ *
+ * @author John Mani
+ */
+
+public class QEncoderStream extends QPEncoderStream {
+
+    private String specials;
+    private static String WORD_SPECIALS = "=_?\"#$%&'(),.:;<>@[\\]^`{|}~";
+    private static String TEXT_SPECIALS = "=_?";
+
+    /**
+     * Create a Q encoder that encodes the specified input stream
+     * @param out        the output stream
+     * @param encodingWord true if we are Q-encoding a word within a
+     *                  phrase.
+     */
+    public QEncoderStream(OutputStream out, boolean encodingWord) {
+        super(out, Integer.MAX_VALUE); // MAX_VALUE is 2^31, should
+                                       // suffice (!) to indicate that
+                                       // CRLFs should not be inserted
+                                       // when encoding rfc822 headers
+
+        // a RFC822 "word" token has more restrictions than a
+        // RFC822 "text" token.
+        specials = encodingWord ? WORD_SPECIALS : TEXT_SPECIALS;
+    }
+
+    /**
+     * Encodes the specified <code>byte</code> to this output stream.
+     * @param      c   the <code>byte</code>.
+     * @exception  IOException  if an I/O error occurs.
+     */
+    public void write(int c) throws IOException {
+        c = c & 0xff; // Turn off the MSB.
+        if (c == ' ')
+            output('_', false);
+        else if (c < 040 || c >= 0177 || specials.indexOf(c) >= 0)
+            // Encoding required.
+            output(c, true);
+        else // No encoding required
+            output(c, false);
+    }
+
+    /**
+     * Returns the length of the encoded version of this byte array.
+     */
+    public static int encodedLength(byte[] b, boolean encodingWord) {
+        int len = 0;
+        String specials = encodingWord ? WORD_SPECIALS: TEXT_SPECIALS;
+        for (int i = 0; i < b.length; i++) {
+            int c = b[i] & 0xff; // Mask off MSB
+            if (c < 040 || c >= 0177 || specials.indexOf(c) >= 0)
+                // needs encoding
+                len += 3; // Q-encoding is 1 -> 3 conversion
+            else
+                len++;
+        }
+        return len;
+    }
+
+    /**** begin TEST program ***
+    public static void main(String argv[]) throws Exception {
+        FileInputStream infile = new FileInputStream(argv[0]);
+        QEncoderStream encoder = new QEncoderStream(System.out);
+        int c;
+
+        while ((c = infile.read()) != -1)
+            encoder.write(c);
+        encoder.close();
+    }
+    *** end TEST program ***/
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QPDecoderStream.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,198 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)QPDecoderStream.java   1.9 02/04/02
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
+
+import java.io.*;
+
+/**
+ * This class implements a QP Decoder. It is implemented as
+ * a FilterInputStream, so one can just wrap this class around
+ * any input stream and read bytes from this filter. The decoding
+ * is done as the bytes are read out.
+ *
+ * @author John Mani
+ */
+
+public class QPDecoderStream extends FilterInputStream {
+    protected byte[] ba = new byte[2];
+    protected int spaces = 0;
+
+    /**
+     * Create a Quoted Printable decoder that decodes the specified
+     * input stream.
+     * @param in        the input stream
+     */
+    public QPDecoderStream(InputStream in) {
+        super(new PushbackInputStream(in, 2)); // pushback of size=2
+    }
+
+    /**
+     * Read the next decoded byte from this input stream. The byte
+     * is returned as an <code>int</code> in the range <code>0</code>
+     * to <code>255</code>. If no byte is available because the end of
+     * the stream has been reached, the value <code>-1</code> is returned.
+     * This method blocks until input data is available, the end of the
+     * stream is detected, or an exception is thrown.
+     *
+     * @return     the next byte of data, or <code>-1</code> if the end of the
+     *             stream is reached.
+     * @exception  IOException  if an I/O error occurs.
+     */
+    public int read() throws IOException {
+        if (spaces > 0) {
+            // We have cached space characters, return one
+            spaces--;
+            return ' ';
+        }
+
+        int c = in.read();
+
+        if (c == ' ') {
+            // Got space, keep reading till we get a non-space char
+            while ((c = in.read()) == ' ')
+                spaces++;
+
+            if (c == '\r' || c == '\n' || c == -1)
+                // If the non-space char is CR/LF/EOF, the spaces we got
+                // so far is junk introduced during transport. Junk 'em.
+                spaces = 0;
+            else {
+                // The non-space char is NOT CR/LF, the spaces are valid.
+                ((PushbackInputStream)in).unread(c);
+                c = ' ';
+            }
+            return c; // return either <SPACE> or <CR/LF>
+        }
+        else if (c == '=') {
+            // QP Encoded atom. Decode the next two bytes
+            int a = in.read();
+
+            if (a == '\n') {
+                /* Hmm ... not really confirming QP encoding, but lets
+                 * allow this as a LF terminated encoded line .. and
+                 * consider this a soft linebreak and recurse to fetch
+                 * the next char.
+                 */
+                return read();
+            } else if (a == '\r') {
+                // Expecting LF. This forms a soft linebreak to be ignored.
+                int b = in.read();
+                if (b != '\n')
+                    /* Not really confirming QP encoding, but
+                     * lets allow this as well.
+                     */
+                    ((PushbackInputStream)in).unread(b);
+                return read();
+            } else if (a == -1) {
+                // Not valid QP encoding, but we be nice and tolerant here !
+                return -1;
+            } else {
+                ba[0] = (byte)a;
+                ba[1] = (byte)in.read();
+                try {
+                    return ASCIIUtility.parseInt(ba, 0, 2, 16);
+                } catch (NumberFormatException nex) {
+                    /*
+                    System.err.println(
+                        "Illegal characters in QP encoded stream: " +
+                        ASCIIUtility.toString(ba, 0, 2)
+                    );
+                    */
+
+                    ((PushbackInputStream)in).unread(ba);
+                    return c;
+                }
+            }
+        }
+        return c;
+    }
+
+    /**
+     * Reads up to <code>len</code> decoded bytes of data from this input stream
+     * into an array of bytes. This method blocks until some input is
+     * available.
+     * <p>
+     *
+     * @param      buf   the buffer into which the data is read.
+     * @param      off   the start offset of the data.
+     * @param      len   the maximum number of bytes read.
+     * @return     the total number of bytes read into the buffer, or
+     *             <code>-1</code> if there is no more data because the end of
+     *             the stream has been reached.
+     * @exception  IOException  if an I/O error occurs.
+     */
+    public int read(byte[] buf, int off, int len) throws IOException {
+        int i, c;
+        for (i = 0; i < len; i++) {
+            if ((c = read()) == -1) {
+                if (i == 0) // At end of stream, so we should
+                    i = -1; // return -1 , NOT 0.
+                break;
+            }
+            buf[off+i] = (byte)c;
+        }
+        return i;
+    }
+
+    /**
+     * Tests if this input stream supports marks. Currently this class
+     * does not support marks
+     */
+    public boolean markSupported() {
+        return false;
+    }
+
+    /**
+     * Returns the number of bytes that can be read from this input
+     * stream without blocking. The QP algorithm does not permit
+     * a priori knowledge of the number of bytes after decoding, so
+     * this method just invokes the <code>available</code> method
+     * of the original input stream.
+     */
+    public int available() throws IOException {
+        // This is bogus ! We don't really know how much
+        // bytes are available *after* decoding
+        return in.available();
+    }
+
+    /**** begin TEST program
+    public static void main(String argv[]) throws Exception {
+        FileInputStream infile = new FileInputStream(argv[0]);
+        QPDecoderStream decoder = new QPDecoderStream(infile);
+        int c;
+
+        while ((c = decoder.read()) != -1)
+            System.out.print((char)c);
+        System.out.println();
+    }
+    *** end TEST program ****/
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QPEncoderStream.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,199 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)QPEncoderStream.java   1.6 02/03/27
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
+
+import java.io.*;
+
+/**
+ * This class implements a Quoted Printable Encoder. It is implemented as
+ * a FilterOutputStream, so one can just wrap this class around
+ * any output stream and write bytes into this filter. The Encoding
+ * is done as the bytes are written out.
+ *
+ * @author John Mani
+ */
+
+public class QPEncoderStream extends FilterOutputStream {
+    private int count = 0;      // number of bytes that have been output
+    private int bytesPerLine;   // number of bytes per line
+    private boolean gotSpace = false;
+    private boolean gotCR = false;
+
+    /**
+     * Create a QP encoder that encodes the specified input stream
+     * @param out        the output stream
+     * @param bytesPerLine  the number of bytes per line. The encoder
+     *                   inserts a CRLF sequence after this many number
+     *                   of bytes.
+     */
+    public QPEncoderStream(OutputStream out, int bytesPerLine) {
+        super(out);
+        // Subtract 1 to account for the '=' in the soft-return
+        // at the end of a line
+        this.bytesPerLine = bytesPerLine - 1;
+    }
+
+    /**
+     * Create a QP encoder that encodes the specified input stream.
+     * Inserts the CRLF sequence after outputting 76 bytes.
+     * @param out        the output stream
+     */
+    public QPEncoderStream(OutputStream out) {
+        this(out, 76);
+    }
+
+    /**
+     * Encodes <code>len</code> bytes from the specified
+     * <code>byte</code> array starting at offset <code>off</code> to
+     * this output stream.
+     *
+     * @param      b     the data.
+     * @param      off   the start offset in the data.
+     * @param      len   the number of bytes to write.
+     * @exception  IOException  if an I/O error occurs.
+     */
+    public void write(byte[] b, int off, int len) throws IOException {
+        for (int i = 0; i < len; i++)
+            write(b[off + i]);
+    }
+
+    /**
+     * Encodes <code>b.length</code> bytes to this output stream.
+     * @param      b   the data to be written.
+     * @exception  IOException  if an I/O error occurs.
+     */
+    public void write(byte[] b) throws IOException {
+        write(b, 0, b.length);
+    }
+
+    /**
+     * Encodes the specified <code>byte</code> to this output stream.
+     * @param      c   the <code>byte</code>.
+     * @exception  IOException  if an I/O error occurs.
+     */
+    public void write(int c) throws IOException {
+        c = c & 0xff; // Turn off the MSB.
+        if (gotSpace) { // previous character was <SPACE>
+            if (c == '\r' || c == '\n')
+                // if CR/LF, we need to encode the <SPACE> char
+                output(' ', true);
+            else // no encoding required, just output the char
+                output(' ', false);
+            gotSpace = false;
+        }
+
+        if (c == '\r') {
+            gotCR = true;
+            outputCRLF();
+        } else {
+            if (c == '\n') {
+                if (gotCR)
+                    // This is a CRLF sequence, we already output the
+                    // corresponding CRLF when we got the CR, so ignore this
+                    ;
+                else
+                    outputCRLF();
+            } else if (c == ' ') {
+                gotSpace = true;
+            } else if (c < 040 || c >= 0177 || c == '=')
+                // Encoding required.
+                output(c, true);
+            else // No encoding required
+                output(c, false);
+            // whatever it was, it wasn't a CR
+            gotCR = false;
+        }
+    }
+
+    /**
+     * Flushes this output stream and forces any buffered output bytes
+     * to be encoded out to the stream.
+     * @exception  IOException  if an I/O error occurs.
+     */
+    public void flush() throws IOException {
+        out.flush();
+    }
+
+    /**
+     * Forces any buffered output bytes to be encoded out to the stream
+     * and closes this output stream
+     */
+    public void close() throws IOException {
+        out.close();
+    }
+
+    private void outputCRLF() throws IOException {
+        out.write('\r');
+        out.write('\n');
+        count = 0;
+    }
+
+    // The encoding table
+    private final static char hex[] = {
+        '0','1', '2', '3', '4', '5', '6', '7',
+        '8','9', 'A', 'B', 'C', 'D', 'E', 'F'
+    };
+
+    protected void output(int c, boolean encode) throws IOException {
+        if (encode) {
+            if ((count += 3) > bytesPerLine) {
+                out.write('=');
+                out.write('\r');
+                out.write('\n');
+                count = 3; // set the next line's length
+            }
+            out.write('=');
+            out.write(hex[c >> 4]);
+            out.write(hex[c & 0xf]);
+        } else {
+            if (++count > bytesPerLine) {
+                out.write('=');
+                out.write('\r');
+                out.write('\n');
+                count = 1; // set the next line's length
+            }
+            out.write(c);
+        }
+    }
+
+    /**** begin TEST program ***
+    public static void main(String argv[]) throws Exception {
+        FileInputStream infile = new FileInputStream(argv[0]);
+        QPEncoderStream encoder = new QPEncoderStream(System.out);
+        int c;
+
+        while ((c = infile.read()) != -1)
+            encoder.write(c);
+        encoder.close();
+    }
+    *** end TEST program ***/
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/UUDecoderStream.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,257 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)UUDecoderStream.java   1.8 02/07/08
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
+
+import java.io.*;
+
+/**
+ * This class implements a UUDecoder. It is implemented as
+ * a FilterInputStream, so one can just wrap this class around
+ * any input stream and read bytes from this filter. The decoding
+ * is done as the bytes are read out.
+ *
+ * @author John Mani
+ * @author Bill Shannon
+ */
+
+public class UUDecoderStream extends FilterInputStream {
+    private String name;
+    private int mode;
+
+    private byte[] buffer;      // cache of decoded bytes
+    private int bufsize = 0;    // size of the cache
+    private int index = 0;      // index into the cache
+    private boolean gotPrefix = false;
+    private boolean gotEnd = false;
+    private LineInputStream lin;
+
+    /**
+     * Create a UUdecoder that decodes the specified input stream
+     * @param in        the input stream
+     */
+    public UUDecoderStream(InputStream in) {
+        super(in);
+        lin = new LineInputStream(in);
+        buffer = new byte[45]; // max decoded chars in a line = 45
+    }
+
+    /**
+     * Read the next decoded byte from this input stream. The byte
+     * is returned as an <code>int</code> in the range <code>0</code>
+     * to <code>255</code>. If no byte is available because the end of
+     * the stream has been reached, the value <code>-1</code> is returned.
+     * This method blocks until input data is available, the end of the
+     * stream is detected, or an exception is thrown.
+     *
+     * @return     next byte of data, or <code>-1</code> if the end of
+     *             stream is reached.
+     * @exception  IOException  if an I/O error occurs.
+     * @see        java.io.FilterInputStream#in
+     */
+
+    public int read() throws IOException {
+        if (index >= bufsize) {
+            readPrefix();
+            if (!decode())
+                return -1;
+            index = 0; // reset index into buffer
+        }
+        return buffer[index++] & 0xff; // return lower byte
+    }
+
+    public int read(byte[] buf, int off, int len) throws IOException {
+        int i, c;
+        for (i = 0; i < len; i++) {
+            if ((c = read()) == -1) {
+                if (i == 0) // At end of stream, so we should
+                    i = -1; // return -1, NOT 0.
+                break;
+            }
+            buf[off+i] = (byte)c;
+        }
+        return i;
+    }
+
+    public boolean markSupported() {
+        return false;
+    }
+
+    public int available() throws IOException {
+         // This is only an estimate, since in.available()
+         // might include CRLFs too ..
+         return ((in.available() * 3)/4 + (bufsize-index));
+    }
+
+    /**
+     * Get the "name" field from the prefix. This is meant to
+     * be the pathname of the decoded file
+     *
+     * @return     name of decoded file
+     * @exception  IOException  if an I/O error occurs.
+     */
+    public String getName() throws IOException {
+        readPrefix();
+        return name;
+    }
+
+    /**
+     * Get the "mode" field from the prefix. This is the permission
+     * mode of the source file.
+     *
+     * @return     permission mode of source file
+     * @exception  IOException  if an I/O error occurs.
+     */
+    public int getMode() throws IOException {
+        readPrefix();
+        return mode;
+    }
+
+    /**
+     * UUencoded streams start off with the line:
+     *  "begin <mode> <filename>"
+     * Search for this prefix and gobble it up.
+     */
+    private void readPrefix() throws IOException {
+        if (gotPrefix) // got the prefix
+            return;
+
+        String s;
+        for (;;) {
+            // read till we get the prefix: "begin MODE FILENAME"
+            s = lin.readLine(); // NOTE: readLine consumes CRLF pairs too
+            if (s == null)
+                throw new IOException("UUDecoder error: No Begin");
+            if (s.regionMatches(true, 0, "begin", 0, 5)) {
+                try {
+                    mode = Integer.parseInt(s.substring(6,9));
+                } catch (NumberFormatException ex) {
+                    throw new IOException("UUDecoder error: " + ex.toString());
+                }
+                name = s.substring(10);
+                gotPrefix = true;
+                return;
+            }
+        }
+    }
+
+    private boolean decode() throws IOException {
+
+        if (gotEnd)
+            return false;
+        bufsize = 0;
+        String line;
+        do {
+            line = lin.readLine();
+
+            /*
+             * Improperly encoded data sometimes omits the zero length
+             * line that starts with a space character, we detect the
+             * following "end" line here.
+             */
+            if (line == null)
+                throw new IOException("Missing End");
+            if (line.regionMatches(true, 0, "end", 0, 3)) {
+                gotEnd = true;
+                return false;
+            }
+        } while (line.length() == 0);
+        int count = line.charAt(0);
+        if (count < ' ')
+            throw new IOException("Buffer format error");
+
+        /*
+         * The first character in a line is the number of original (not
+         *  the encoded atoms) characters in the line. Note that all the
+         *  code below has to handle the <SPACE> character that indicates
+         *  end of encoded stream.
+         */
+        count = (count - ' ') & 0x3f;
+
+        if (count == 0) {
+            line = lin.readLine();
+            if (line == null || !line.regionMatches(true, 0, "end", 0, 3))
+                throw new IOException("Missing End");
+            gotEnd = true;
+            return false;
+        }
+
+        int need = ((count * 8)+5)/6;
+//System.out.println("count " + count + ", need " + need + ", len " + line.length());
+        if (line.length() < need + 1)
+            throw new IOException("Short buffer error");
+
+        int i = 1;
+        byte a, b;
+        /*
+         * A correct uuencoder always encodes 3 characters at a time, even
+         * if there aren't 3 characters left.  But since some people out
+         * there have broken uuencoders we handle the case where they
+         * don't include these "unnecessary" characters.
+         */
+        while (bufsize < count) {
+            // continue decoding until we get 'count' decoded chars
+            a = (byte)((line.charAt(i++) - ' ') & 0x3f);
+            b = (byte)((line.charAt(i++) - ' ') & 0x3f);
+            buffer[bufsize++] = (byte)(((a << 2) & 0xfc) | ((b >>> 4) & 3));
+
+            if (bufsize < count) {
+                a = b;
+                b = (byte)((line.charAt(i++) - ' ') & 0x3f);
+                buffer[bufsize++] =
+                                (byte)(((a << 4) & 0xf0) | ((b >>> 2) & 0xf));
+            }
+
+            if (bufsize < count) {
+                a = b;
+                b = (byte)((line.charAt(i++) - ' ') & 0x3f);
+                buffer[bufsize++] = (byte)(((a << 6) & 0xc0) | (b & 0x3f));
+            }
+        }
+        return true;
+    }
+
+    /*** begin TEST program *****
+    public static void main(String argv[]) throws Exception {
+        FileInputStream infile = new FileInputStream(argv[0]);
+        UUDecoderStream decoder = new UUDecoderStream(infile);
+        int c;
+
+        try {
+            while ((c = decoder.read()) != -1)
+                System.out.write(c);
+            System.out.flush();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+    **** end TEST program ****/
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/UUEncoderStream.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,206 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @(#)UUEncoderStream.java   1.3 02/03/27
+ */
+
+
+
+package com.sun.xml.internal.messaging.saaj.packaging.mime.util;
+
+import java.io.*;
+
+/**
+ * This class implements a UUEncoder. It is implemented as
+ * a FilterOutputStream, so one can just wrap this class around
+ * any output stream and write bytes into this filter. The Encoding
+ * is done as the bytes are written out.
+ *
+ * @author John Mani
+ */
+
+public class UUEncoderStream extends FilterOutputStream {
+    private byte[] buffer;      // cache of bytes that are yet to be encoded
+    private int bufsize = 0;    // size of the cache
+    private boolean wrotePrefix = false;
+
+    protected String name;      // name of file
+    protected int mode;         // permissions mode
+
+    /**
+     * Create a UUencoder that encodes the specified input stream
+     * @param out        the output stream
+     */
+    public UUEncoderStream(OutputStream out) {
+        this(out, "encoder.buf", 644);
+    }
+
+    /**
+     * Create a UUencoder that encodes the specified input stream
+     * @param out        the output stream
+     * @param name       Specifies a name for the encoded buffer
+     */
+    public UUEncoderStream(OutputStream out, String name) {
+        this(out, name, 644);
+    }
+
+    /**
+     * Create a UUencoder that encodes the specified input stream
+     * @param out        the output stream
+     * @param name       Specifies a name for the encoded buffer
+     * @param mode       Specifies permission mode for the encoded buffer
+     */
+    public UUEncoderStream(OutputStream out, String name, int mode) {
+        super(out);
+        this.name = name;
+        this.mode = mode;
+        buffer = new byte[45];
+    }
+
+    /**
+     * Set up the buffer name and permission mode.
+     * This method has any effect only if it is invoked before
+     * you start writing into the output stream
+     */
+    public void setNameMode(String name, int mode) {
+        this.name = name;
+        this.mode = mode;
+    }
+
+    public void write(byte[] b, int off, int len) throws IOException {
+        for (int i = 0; i < len; i++)
+            write(b[off + i]);
+    }
+
+    public void write(byte[] data) throws IOException {
+        write(data, 0, data.length);
+    }
+
+    public void write(int c) throws IOException {
+        /* buffer up characters till we get a line's worth, then encode
+         * and write them out. Max number of characters allowed per
+         * line is 45.
+         */
+        buffer[bufsize++] = (byte)c;
+        if (bufsize == 45) {
+            writePrefix();
+            encode();
+            bufsize = 0;
+        }
+    }
+
+    public void flush() throws IOException {
+        if (bufsize > 0) { // If there's unencoded characters in the buffer
+            writePrefix();
+            encode();      // .. encode them
+        }
+        writeSuffix();
+        out.flush();
+    }
+
+    public void close() throws IOException {
+        flush();
+        out.close();
+    }
+
+    /**
+     * Write out the prefix: "begin <mode> <name>"
+     */
+    private void writePrefix() throws IOException {
+        if (!wrotePrefix) {
+            PrintStream ps = new PrintStream(out);
+            ps.println("begin " + mode + " " + name);
+            ps.flush();
+            wrotePrefix = true;
+        }
+    }
+
+    /**
+     * Write a single line containing space and the suffix line
+     * containing the single word "end" (terminated by a newline)
+     */
+    private void writeSuffix() throws IOException {
+        PrintStream ps = new PrintStream(out);
+        ps.println(" \nend");
+        ps.flush();
+    }
+
+    /**
+     * Encode a line.
+     * Start off with the character count, followed by the encoded atoms
+     * and terminate with LF. (or is it CRLF or the local line-terminator ?)
+     * Take three bytes and encodes them into 4 characters
+     * If bufsize if not a multiple of 3, the remaining bytes are filled
+     * with '1'. This insures that the last line won't end in spaces
+     * and potentiallly be truncated.
+     */
+    private void encode() throws IOException {
+        byte a, b, c;
+        int c1, c2, c3, c4;
+        int i = 0;
+
+        // Start off with the count of characters in the line
+        out.write((bufsize & 0x3f) + ' ');
+
+        while (i < bufsize) {
+            a = buffer[i++];
+            if (i < bufsize) {
+                b = buffer[i++];
+                if (i < bufsize)
+                    c = buffer[i++];
+                else // default c to 1
+                    c = 1;
+            }
+            else { // default b & c to 1
+                b = 1;
+                c = 1;
+            }
+
+            c1 = (a >>> 2) & 0x3f;
+            c2 = ((a << 4) & 0x30) | ((b >>> 4) & 0xf);
+            c3 = ((b << 2) & 0x3c) | ((c >>> 6) & 0x3);
+            c4 = c & 0x3f;
+            out.write(c1 + ' ');
+            out.write(c2 + ' ');
+            out.write(c3 + ' ');
+            out.write(c4 + ' ');
+        }
+        // Terminate with LF. (should it be CRLF or local line-terminator ?)
+        out.write('\n');
+    }
+
+    /**** begin TEST program *****
+    public static void main(String argv[]) throws Exception {
+        FileInputStream infile = new FileInputStream(argv[0]);
+        UUEncoderStream encoder = new UUEncoderStream(System.out);
+        int c;
+
+        while ((c = infile.read()) != -1)
+            encoder.write(c);
+        encoder.close();
+    }
+    **** end TEST program *****/
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/AttachmentPartImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,612 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+
+import com.sun.xml.internal.messaging.saaj.packaging.mime.util.ASCIIUtility;
+
+import com.sun.xml.internal.messaging.saaj.packaging.mime.Header;
+import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimePartDataSource;
+import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.InternetHeaders;
+import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeBodyPart;
+import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeUtility;
+import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;
+import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ByteArrayInputStream;
+import java.io.OutputStream;
+import java.util.Iterator;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.activation.*;
+import javax.xml.soap.*;
+import com.sun.xml.internal.org.jvnet.mimepull.MIMEPart;
+
+/**
+ * Implementation of attachments.
+ *
+ * @author Anil Vijendran (akv@eng.sun.com)
+ */
+public class AttachmentPartImpl extends AttachmentPart {
+
+    protected static final Logger log =
+        Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
+                         "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
+
+    private final MimeHeaders headers;
+    private MimeBodyPart rawContent = null;
+    private DataHandler dataHandler = null;
+
+    //alternate impl that uses a MIMEPart
+    private MIMEPart mimePart = null;
+
+    public AttachmentPartImpl() {
+        headers = new MimeHeaders();
+
+        // initialization from here should cover most of cases;
+        // if not, it would be necessary to call
+        //   AttachmentPartImpl.initializeJavaActivationHandlers()
+        // explicitly by programmer
+        initializeJavaActivationHandlers();
+    }
+
+    public AttachmentPartImpl(MIMEPart part) {
+        headers = new MimeHeaders();
+        mimePart = part;
+        List<? extends com.sun.xml.internal.org.jvnet.mimepull.Header> hdrs = part.getAllHeaders();
+        for (com.sun.xml.internal.org.jvnet.mimepull.Header hd : hdrs) {
+            headers.addHeader(hd.getName(), hd.getValue());
+        }
+    }
+
+    public int getSize() throws SOAPException {
+        if (mimePart != null) {
+            try {
+                return mimePart.read().available();
+            } catch (IOException e) {
+                return -1;
+            }
+        }
+        if ((rawContent == null) && (dataHandler == null))
+            return 0;
+
+        if (rawContent != null) {
+            try {
+                return rawContent.getSize();
+            } catch (Exception ex) {
+                log.log(
+                    Level.SEVERE,
+                    "SAAJ0573.soap.attachment.getrawbytes.ioexception",
+                    new String[] { ex.getLocalizedMessage()});
+                throw new SOAPExceptionImpl("Raw InputStream Error: " + ex);
+            }
+        } else {
+            ByteOutputStream bout = new ByteOutputStream();
+            try {
+                dataHandler.writeTo(bout);
+            } catch (IOException ex) {
+                log.log(
+                    Level.SEVERE,
+                    "SAAJ0501.soap.data.handler.err",
+                    new String[] { ex.getLocalizedMessage()});
+                throw new SOAPExceptionImpl("Data handler error: " + ex);
+            }
+            return bout.size();
+        }
+    }
+
+    public void clearContent() {
+        if (mimePart != null) {
+            mimePart.close();
+            mimePart = null;
+        }
+        dataHandler = null;
+        rawContent = null;
+    }
+
+    public Object getContent() throws SOAPException {
+        try {
+            if (mimePart != null) {
+                //return an inputstream
+                return mimePart.read();
+            }
+            if (dataHandler != null) {
+                return getDataHandler().getContent();
+            } else if (rawContent != null) {
+                return rawContent.getContent();
+            } else {
+                log.severe("SAAJ0572.soap.no.content.for.attachment");
+                throw new SOAPExceptionImpl("No data handler/content associated with this attachment");
+            }
+        } catch (Exception ex) {
+            log.log(Level.SEVERE, "SAAJ0575.soap.attachment.getcontent.exception", ex);
+            throw new SOAPExceptionImpl(ex.getLocalizedMessage());
+        }
+    }
+
+    public void setContent(Object object, String contentType)
+        throws IllegalArgumentException {
+        if (mimePart != null) {
+            mimePart.close();
+            mimePart = null;
+        }
+        DataHandler dh = new DataHandler(object, contentType);
+
+        setDataHandler(dh);
+    }
+
+
+    public DataHandler getDataHandler() throws SOAPException {
+        if (mimePart != null) {
+            //return an inputstream
+            return new DataHandler(new DataSource() {
+
+                public InputStream getInputStream() throws IOException {
+                    return mimePart.read();
+                }
+
+                public OutputStream getOutputStream() throws IOException {
+                    throw new UnsupportedOperationException("getOutputStream cannot be supported : You have enabled LazyAttachments Option");
+                }
+
+                public String getContentType() {
+                    return mimePart.getContentType();
+                }
+
+                public String getName() {
+                    return "MIMEPart Wrapper DataSource";
+                }
+            });
+        }
+        if (dataHandler == null) {
+            if (rawContent != null) {
+                return new DataHandler(new MimePartDataSource(rawContent));
+            }
+            log.severe("SAAJ0502.soap.no.handler.for.attachment");
+            throw new SOAPExceptionImpl("No data handler associated with this attachment");
+        }
+        return dataHandler;
+    }
+
+    public void setDataHandler(DataHandler dataHandler)
+        throws IllegalArgumentException {
+        if (mimePart != null) {
+            mimePart.close();
+            mimePart = null;
+        }
+        if (dataHandler == null) {
+            log.severe("SAAJ0503.soap.no.null.to.dataHandler");
+            throw new IllegalArgumentException("Null dataHandler argument to setDataHandler");
+        }
+        this.dataHandler = dataHandler;
+        rawContent = null;
+
+        if (log.isLoggable(Level.FINE))
+            log.log(Level.FINE, "SAAJ0580.soap.set.Content-Type",
+                    new String[] { dataHandler.getContentType() });
+        setMimeHeader("Content-Type", dataHandler.getContentType());
+    }
+
+    public void removeAllMimeHeaders() {
+        headers.removeAllHeaders();
+    }
+
+    public void removeMimeHeader(String header) {
+        headers.removeHeader(header);
+    }
+
+    public String[] getMimeHeader(String name) {
+        return headers.getHeader(name);
+    }
+
+    public void setMimeHeader(String name, String value) {
+        headers.setHeader(name, value);
+    }
+
+    public void addMimeHeader(String name, String value) {
+        headers.addHeader(name, value);
+    }
+
+    public Iterator getAllMimeHeaders() {
+        return headers.getAllHeaders();
+    }
+
+    public Iterator getMatchingMimeHeaders(String[] names) {
+        return headers.getMatchingHeaders(names);
+    }
+
+    public Iterator getNonMatchingMimeHeaders(String[] names) {
+        return headers.getNonMatchingHeaders(names);
+    }
+
+    boolean hasAllHeaders(MimeHeaders hdrs) {
+        if (hdrs != null) {
+            Iterator i = hdrs.getAllHeaders();
+            while (i.hasNext()) {
+                MimeHeader hdr = (MimeHeader) i.next();
+                String[] values = headers.getHeader(hdr.getName());
+                boolean found = false;
+
+                if (values != null) {
+                    for (int j = 0; j < values.length; j++)
+                        if (hdr.getValue().equalsIgnoreCase(values[j])) {
+                            found = true;
+                            break;
+                        }
+                }
+
+                if (!found) {
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
+
+    MimeBodyPart getMimePart() throws SOAPException {
+        try {
+            if (this.mimePart != null) {
+                return new MimeBodyPart(mimePart);
+            }
+            if (rawContent != null) {
+                copyMimeHeaders(headers, rawContent);
+                return rawContent;
+            }
+
+            MimeBodyPart envelope = new MimeBodyPart();
+
+            envelope.setDataHandler(dataHandler);
+            copyMimeHeaders(headers, envelope);
+
+            return envelope;
+        } catch (Exception ex) {
+            log.severe("SAAJ0504.soap.cannot.externalize.attachment");
+            throw new SOAPExceptionImpl("Unable to externalize attachment", ex);
+        }
+    }
+
+    public static void copyMimeHeaders(MimeHeaders headers, MimeBodyPart mbp)
+        throws SOAPException {
+
+        Iterator i = headers.getAllHeaders();
+
+        while (i.hasNext())
+            try {
+                MimeHeader mh = (MimeHeader) i.next();
+
+                mbp.setHeader(mh.getName(), mh.getValue());
+            } catch (Exception ex) {
+                log.severe("SAAJ0505.soap.cannot.copy.mime.hdr");
+                throw new SOAPExceptionImpl("Unable to copy MIME header", ex);
+            }
+    }
+
+    public static void copyMimeHeaders(MimeBodyPart mbp, AttachmentPartImpl ap)
+        throws SOAPException {
+        try {
+            List hdr = mbp.getAllHeaders();
+            int sz = hdr.size();
+            for( int i=0; i<sz; i++ ) {
+                Header h = (Header)hdr.get(i);
+                if(h.getName().equalsIgnoreCase("Content-Type"))
+                    continue;   // skip
+                ap.addMimeHeader(h.getName(), h.getValue());
+            }
+        } catch (Exception ex) {
+            log.severe("SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment");
+            throw new SOAPExceptionImpl(
+                "Unable to copy MIME headers into attachment",
+                ex);
+        }
+    }
+
+    public  void setBase64Content(InputStream content, String contentType)
+        throws SOAPException {
+
+        if (mimePart != null) {
+            mimePart.close();
+            mimePart = null;
+        }
+        dataHandler = null;
+        InputStream decoded = null;
+        ByteOutputStream bos = null;
+        try {
+            decoded = MimeUtility.decode(content, "base64");
+            InternetHeaders hdrs = new InternetHeaders();
+            hdrs.setHeader("Content-Type", contentType);
+            //TODO: reading the entire attachment here is ineffcient. Somehow the MimeBodyPart
+            // Ctor with inputStream causes problems based on the InputStream
+            // has markSupported()==true
+            bos = new ByteOutputStream();
+            bos.write(decoded);
+            rawContent = new MimeBodyPart(hdrs, bos.getBytes(), bos.getCount());
+            setMimeHeader("Content-Type", contentType);
+        } catch (Exception e) {
+            log.log(Level.SEVERE, "SAAJ0578.soap.attachment.setbase64content.exception", e);
+            throw new SOAPExceptionImpl(e.getLocalizedMessage());
+        } finally {
+            if (bos != null)
+                bos.close();
+            try {
+                if (decoded != null)
+                decoded.close();
+            } catch (IOException ex) {
+                throw new SOAPException(ex);
+            }
+        }
+    }
+
+    public  InputStream getBase64Content() throws SOAPException {
+        InputStream stream;
+        if (mimePart != null) {
+            stream = mimePart.read();
+        } else if (rawContent != null) {
+            try {
+                 stream = rawContent.getInputStream();
+            } catch (Exception e) {
+                log.log(Level.SEVERE,"SAAJ0579.soap.attachment.getbase64content.exception", e);
+                throw new SOAPExceptionImpl(e.getLocalizedMessage());
+            }
+        } else if (dataHandler != null) {
+            try {
+                stream = dataHandler.getInputStream();
+            } catch (IOException e) {
+                log.severe("SAAJ0574.soap.attachment.datahandler.ioexception");
+                throw new SOAPExceptionImpl("DataHandler error" + e);
+            }
+        } else {
+            log.severe("SAAJ0572.soap.no.content.for.attachment");
+            throw new SOAPExceptionImpl("No data handler/content associated with this attachment");
+        }
+
+        //TODO: Write a BASE64EncoderInputStream instead,
+        // this code below is inefficient
+        // where we are trying to read the whole attachment first
+        int len;
+        int size = 1024;
+        byte [] buf;
+        if (stream != null) {
+            try {
+                ByteArrayOutputStream bos = new ByteArrayOutputStream(size);
+                //TODO: try and optimize this on the same lines as
+                // ByteOutputStream : to eliminate the temp buffer here
+                OutputStream ret = MimeUtility.encode(bos, "base64");
+                buf = new byte[size];
+                while ((len = stream.read(buf, 0, size)) != -1) {
+                    ret.write(buf, 0, len);
+                }
+                ret.flush();
+                buf = bos.toByteArray();
+                return new ByteArrayInputStream(buf);
+            } catch (Exception e) {
+                // throw new SOAPException
+                log.log(Level.SEVERE,"SAAJ0579.soap.attachment.getbase64content.exception", e);
+                throw new SOAPExceptionImpl(e.getLocalizedMessage());
+            } finally {
+                try {
+                    stream.close();
+                } catch (IOException ex) {
+                  //close the stream
+                }
+            }
+        } else {
+          //throw  new SOAPException
+          log.log(Level.SEVERE,"SAAJ0572.soap.no.content.for.attachment");
+          throw new SOAPExceptionImpl("No data handler/content associated with this attachment");
+        }
+    }
+
+    public void setRawContent(InputStream content, String contentType)
+        throws SOAPException {
+        if (mimePart != null) {
+            mimePart.close();
+            mimePart = null;
+        }
+        dataHandler = null;
+        ByteOutputStream bos = null;
+        try {
+            InternetHeaders hdrs = new InternetHeaders();
+            hdrs.setHeader("Content-Type", contentType);
+            //TODO: reading the entire attachment here is ineffcient. Somehow the MimeBodyPart
+            // Ctor with inputStream causes problems based on whether the InputStream has
+            // markSupported()==true or false
+            bos = new ByteOutputStream();
+            bos.write(content);
+            rawContent = new MimeBodyPart(hdrs, bos.getBytes(), bos.getCount());
+            setMimeHeader("Content-Type", contentType);
+        } catch (Exception e) {
+            log.log(Level.SEVERE, "SAAJ0576.soap.attachment.setrawcontent.exception", e);
+            throw new SOAPExceptionImpl(e.getLocalizedMessage());
+        } finally {
+            if (bos != null)
+                bos.close();
+            try {
+                content.close();
+            } catch (IOException ex) {
+                throw new SOAPException(ex);
+            }
+        }
+    }
+
+   /*
+    public void setRawContentBytes(byte[] content, String contentType)
+        throws SOAPException {
+        if (content == null) {
+            throw new SOAPExceptionImpl("Null content passed to setRawContentBytes");
+        }
+        dataHandler = null;
+        try {
+            InternetHeaders hdrs = new InternetHeaders();
+            hdrs.setHeader("Content-Type", contentType);
+            rawContent = new MimeBodyPart(hdrs, content, content.length);
+            setMimeHeader("Content-Type", contentType);
+        } catch (Exception e) {
+            log.log(Level.SEVERE, "SAAJ0576.soap.attachment.setrawcontent.exception", e);
+            throw new SOAPExceptionImpl(e.getLocalizedMessage());
+        }
+    } */
+
+    public void setRawContentBytes(
+        byte[] content, int off, int len, String contentType)
+        throws SOAPException {
+        if (mimePart != null) {
+            mimePart.close();
+            mimePart = null;
+        }
+        if (content == null) {
+            throw new SOAPExceptionImpl("Null content passed to setRawContentBytes");
+        }
+        dataHandler = null;
+        try {
+            InternetHeaders hdrs = new InternetHeaders();
+            hdrs.setHeader("Content-Type", contentType);
+            rawContent = new MimeBodyPart(hdrs, content, off, len);
+            setMimeHeader("Content-Type", contentType);
+        } catch (Exception e) {
+            log.log(Level.SEVERE,
+                "SAAJ0576.soap.attachment.setrawcontent.exception", e);
+            throw new SOAPExceptionImpl(e.getLocalizedMessage());
+        }
+    }
+
+    public  InputStream getRawContent() throws SOAPException {
+        if (mimePart != null) {
+            return mimePart.read();
+        }
+        if (rawContent != null) {
+            try {
+                return rawContent.getInputStream();
+            } catch (Exception e) {
+                log.log(Level.SEVERE,"SAAJ0577.soap.attachment.getrawcontent.exception", e);
+                throw new SOAPExceptionImpl(e.getLocalizedMessage());
+            }
+        } else if (dataHandler != null) {
+            try {
+                return dataHandler.getInputStream();
+            } catch (IOException e) {
+                log.severe("SAAJ0574.soap.attachment.datahandler.ioexception");
+                throw new SOAPExceptionImpl("DataHandler error" + e);
+            }
+        } else {
+            log.severe("SAAJ0572.soap.no.content.for.attachment");
+            throw new SOAPExceptionImpl("No data handler/content associated with this attachment");
+        }
+    }
+
+    public  byte[] getRawContentBytes() throws SOAPException {
+        InputStream ret;
+        if (mimePart != null) {
+            try {
+                ret = mimePart.read();
+                return ASCIIUtility.getBytes(ret);
+            } catch (IOException ex) {
+                log.log(Level.SEVERE,"SAAJ0577.soap.attachment.getrawcontent.exception", ex);
+                throw new SOAPExceptionImpl(ex);
+            }
+        }
+        if (rawContent != null) {
+            try {
+                ret = rawContent.getInputStream();
+                return ASCIIUtility.getBytes(ret);
+            } catch (Exception e) {
+                log.log(Level.SEVERE,"SAAJ0577.soap.attachment.getrawcontent.exception", e);
+                throw new SOAPExceptionImpl(e);
+            }
+        } else if (dataHandler != null) {
+            try {
+                ret = dataHandler.getInputStream();
+                return ASCIIUtility.getBytes(ret);
+            } catch (IOException e) {
+                log.severe("SAAJ0574.soap.attachment.datahandler.ioexception");
+                throw new SOAPExceptionImpl("DataHandler error" + e);
+            }
+        } else {
+            log.severe("SAAJ0572.soap.no.content.for.attachment");
+            throw new SOAPExceptionImpl("No data handler/content associated with this attachment");
+        }
+    }
+
+    // attachments are equal if they are the same reference
+    public boolean equals(Object o) {
+        return (this == o);
+    }
+
+    // In JDK 8 we get a warning if we implement equals() but not hashCode().
+    // There is no intuitive value for this, the default one in Object is fine.
+    public int hashCode() {
+        return super.hashCode();
+    }
+
+    public MimeHeaders getMimeHeaders() {
+        return headers;
+    }
+
+    public static void initializeJavaActivationHandlers() {
+        // DataHandler.writeTo() may search for DCH. So adding some default ones.
+        try {
+            CommandMap map = CommandMap.getDefaultCommandMap();
+            if (map instanceof MailcapCommandMap) {
+                MailcapCommandMap mailMap = (MailcapCommandMap) map;
+
+                // registering our DCH since javamail's DCH doesn't handle
+                if (!cmdMapInitialized(mailMap)) {
+                    mailMap.addMailcap("text/xml;;x-java-content-handler=com.sun.xml.internal.messaging.saaj.soap.XmlDataContentHandler");
+                    mailMap.addMailcap("application/xml;;x-java-content-handler=com.sun.xml.internal.messaging.saaj.soap.XmlDataContentHandler");
+                    mailMap.addMailcap("application/fastinfoset;;x-java-content-handler=com.sun.xml.internal.messaging.saaj.soap.FastInfosetDataContentHandler");
+                    //mailMap.addMailcap("multipart/*;;x-java-content-handler=com.sun.xml.internal.messaging.saaj.soap.MultipartDataContentHandler");
+                    mailMap.addMailcap("image/*;;x-java-content-handler=com.sun.xml.internal.messaging.saaj.soap.ImageDataContentHandler");
+                    mailMap.addMailcap("text/plain;;x-java-content-handler=com.sun.xml.internal.messaging.saaj.soap.StringDataContentHandler");
+                }
+            }
+        } catch (Throwable t) {
+            // ignore the exception.
+        }
+    }
+
+    private static boolean cmdMapInitialized(MailcapCommandMap mailMap) {
+
+        // checking fastinfoset handler, since this one is specific to SAAJ
+        CommandInfo[] commands = mailMap.getAllCommands("application/fastinfoset");
+        if (commands == null || commands.length == 0) {
+            return false;
+        }
+
+        String saajClassName = "com.sun.xml.internal.ws.binding.FastInfosetDataContentHandler";
+        for (CommandInfo command : commands) {
+            String commandClass = command.getCommandClass();
+            if (saajClassName.equals(commandClass)) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ContextClassloaderLocal.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.text.MessageFormat;
+import java.util.ResourceBundle;
+import java.util.WeakHashMap;
+
+/**
+ * Simple utility ensuring that the value is cached only in case it is non-internal implementation
+ */
+abstract class ContextClassloaderLocal<V> {
+
+    private static final String FAILED_TO_CREATE_NEW_INSTANCE = "FAILED_TO_CREATE_NEW_INSTANCE";
+
+    private WeakHashMap<ClassLoader, V> CACHE = new WeakHashMap<ClassLoader, V>();
+
+    public V get() throws Error {
+        ClassLoader tccl = getContextClassLoader();
+        V instance = CACHE.get(tccl);
+        if (instance == null) {
+            instance = createNewInstance();
+            CACHE.put(tccl, instance);
+        }
+        return instance;
+    }
+
+    public void set(V instance) {
+        CACHE.put(getContextClassLoader(), instance);
+    }
+
+    protected abstract V initialValue() throws Exception;
+
+    private V createNewInstance() {
+        try {
+            return initialValue();
+        } catch (Exception e) {
+            throw new Error(format(FAILED_TO_CREATE_NEW_INSTANCE, getClass().getName()), e);
+        }
+    }
+
+    private static String format(String property, Object... args) {
+        String text = ResourceBundle.getBundle(ContextClassloaderLocal.class.getName()).getString(property);
+        return MessageFormat.format(text, args);
+    }
+
+    private static ClassLoader getContextClassLoader() {
+        return (ClassLoader)
+                AccessController.doPrivileged(new PrivilegedAction() {
+                    public Object run() {
+                        ClassLoader cl = null;
+                        try {
+                            cl = Thread.currentThread().getContextClassLoader();
+                        } catch (SecurityException ex) {
+                        }
+                        return cl;
+                    }
+                });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ContextClassloaderLocal.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+FAILED_TO_CREATE_NEW_INSTANCE=Failed to create new instance of {0}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/Envelope.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPException;
+import javax.xml.transform.Source;
+
+/**
+ * Different implementations for SOAP Envelope must all implement this
+ * interface.
+ *
+ * @author Anil Vijendran (akv@eng.sun.com)
+ */
+public interface Envelope extends SOAPEnvelope {
+    /**
+     * Get the content as a JAXP Source.
+     */
+    Source getContent();
+
+    /**
+     * Output the content.
+     */
+    void output(OutputStream out) throws IOException;
+
+    /**
+     * Output the content.
+     */
+    void output(OutputStream out, boolean isFastInfoset) throws IOException;
+
+    void setStaxBridge(StaxBridge bridge) throws SOAPException;
+
+    StaxBridge getStaxBridge() throws SOAPException;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/EnvelopeFactory.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,185 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import com.sun.xml.internal.messaging.saaj.LazyEnvelopeSource;
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+import com.sun.xml.internal.messaging.saaj.util.JAXMStreamSource;
+import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
+import com.sun.xml.internal.messaging.saaj.util.ParserPool;
+import com.sun.xml.internal.messaging.saaj.util.RejectDoctypeSaxFilter;
+import com.sun.xml.internal.messaging.saaj.util.transform.EfficientStreamingTransformer;
+import org.xml.sax.InputSource;
+import org.xml.sax.XMLReader;
+
+import javax.xml.parsers.SAXParser;
+import javax.xml.soap.SOAPException;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.dom.DOMResult;
+import javax.xml.transform.sax.SAXSource;
+import javax.xml.transform.stax.StAXSource;
+import javax.xml.transform.stream.StreamSource;
+import java.util.logging.Logger;
+
+/**
+ * EnvelopeFactory creates SOAP Envelope objects using different
+ * underlying implementations.
+ */
+public class EnvelopeFactory {
+
+    protected static final Logger
+        log = Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
+        "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
+
+    private static ContextClassloaderLocal<ParserPool> parserPool =
+            new ContextClassloaderLocal<ParserPool>() {
+                @Override
+                protected ParserPool initialValue() throws Exception {
+                    return new ParserPool(5);
+                }
+            };
+
+    public static Envelope createEnvelope(Source src, SOAPPartImpl soapPart)
+        throws SOAPException
+    {
+            if (src instanceof JAXMStreamSource) {
+                try {
+                    if (!SOAPPartImpl.lazyContentLength) {
+                        ((JAXMStreamSource) src).reset();
+                    }
+                } catch (java.io.IOException ioe) {
+                    log.severe("SAAJ0515.source.reset.exception");
+                    throw new SOAPExceptionImpl(ioe);
+                }
+            }
+        if (src instanceof LazyEnvelopeSource) {
+          return lazy((LazyEnvelopeSource)src, soapPart);
+      }
+        if (soapPart.message.isLazySoapBodyParsing()) {
+            return parseEnvelopeStax(src, soapPart);
+        } else {
+            return parseEnvelopeSax(src, soapPart);
+        }
+    }
+
+    private static Envelope lazy(LazyEnvelopeSource src, SOAPPartImpl soapPart) throws SOAPException {
+            try {
+                StaxBridge staxBridge = new StaxLazySourceBridge(src, soapPart);
+                staxBridge.bridgeEnvelopeAndHeaders();
+            Envelope env = (Envelope) soapPart.getEnvelope();
+            env.setStaxBridge(staxBridge);
+            return env;
+        } catch (XMLStreamException e) {
+            throw new SOAPException(e);
+        }
+    }
+
+    static private XMLInputFactory xmlInputFactory = null;
+
+    private static Envelope parseEnvelopeStax(Source src, SOAPPartImpl soapPart)
+            throws SOAPException {
+        XMLStreamReader streamReader = null;
+        if (src instanceof StAXSource) {
+           streamReader = ((StAXSource) src).getXMLStreamReader();
+        }
+        try {
+            if (streamReader == null) {
+                if (xmlInputFactory == null) xmlInputFactory = XMLInputFactory.newInstance();
+                streamReader = xmlInputFactory.createXMLStreamReader(src);
+            }
+//            SaajStaxWriter saajWriter = new SaajStaxWriter(soapPart.message, soapPart.document);
+//            XMLStreamReaderToXMLStreamWriter readerWriterBridge = new XMLStreamReaderToXMLStreamWriter(
+//                    streamReader, saajWriter, soapPart.getSOAPNamespace());
+
+            StaxBridge readerWriterBridge = new StaxReaderBridge(streamReader, soapPart);
+            //bridge will stop reading at body element, and parse upon request, so save it
+            //on the envelope
+            readerWriterBridge.bridgeEnvelopeAndHeaders();
+
+            Envelope env = (Envelope) soapPart.getEnvelope();
+            env.setStaxBridge(readerWriterBridge);
+            return env;
+        } catch (Exception e) {
+            throw new SOAPException(e);
+        }
+    }
+    private static Envelope parseEnvelopeSax(Source src, SOAPPartImpl soapPart)
+            throws SOAPException {
+        // Insert SAX filter to disallow Document Type Declarations since
+        // they are not legal in SOAP
+        SAXParser saxParser = null;
+        if (src instanceof StreamSource) {
+            try {
+                saxParser = parserPool.get().get();
+            } catch (Exception e) {
+                log.severe("SAAJ0601.util.newSAXParser.exception");
+                throw new SOAPExceptionImpl(
+                    "Couldn't get a SAX parser while constructing a envelope",
+                    e);
+            }
+            InputSource is = SAXSource.sourceToInputSource(src);
+            if (is.getEncoding()== null && soapPart.getSourceCharsetEncoding() != null) {
+                is.setEncoding(soapPart.getSourceCharsetEncoding());
+            }
+            XMLReader rejectFilter;
+            try {
+                rejectFilter = new RejectDoctypeSaxFilter(saxParser);
+            } catch (Exception ex) {
+                log.severe("SAAJ0510.soap.cannot.create.envelope");
+                throw new SOAPExceptionImpl(
+                    "Unable to create envelope from given source: ",
+                    ex);
+            }
+            src = new SAXSource(rejectFilter, is);
+        }
+
+        try {
+            Transformer transformer =
+                EfficientStreamingTransformer.newTransformer();
+            DOMResult result = new DOMResult(soapPart);
+            transformer.transform(src, result);
+
+            Envelope env = (Envelope) soapPart.getEnvelope();
+            return env;
+        } catch (Exception ex) {
+            if (ex instanceof SOAPVersionMismatchException) {
+                throw (SOAPVersionMismatchException) ex;
+            }
+            log.severe("SAAJ0511.soap.cannot.create.envelope");
+            throw new SOAPExceptionImpl(
+                "Unable to create envelope from given source: ",
+                ex);
+        } finally {
+            if (saxParser != null) {
+                parserPool.get().returnParser(saxParser);
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/FastInfosetDataContentHandler.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import java.awt.datatransfer.DataFlavor;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.InputStream;
+
+import javax.activation.*;
+import javax.xml.transform.Source;
+
+import com.sun.xml.internal.messaging.saaj.util.FastInfosetReflection;
+
+/**
+ * JAF data handler for Fast Infoset content
+ *
+ * @author Santiago Pericas-Geertsen
+ */
+public class FastInfosetDataContentHandler implements DataContentHandler {
+    public static final String STR_SRC = "com.sun.xml.internal.org.jvnet.fastinfoset.FastInfosetSource";
+
+    public FastInfosetDataContentHandler() {
+    }
+
+    /**
+     * return the DataFlavors for this <code>DataContentHandler</code>
+     * @return The DataFlavors.
+     */
+    public DataFlavor[] getTransferDataFlavors() { // throws Exception;
+        DataFlavor flavors[] = new DataFlavor[1];
+        flavors[0] = new ActivationDataFlavor(
+                FastInfosetReflection.getFastInfosetSource_class(),
+                "application/fastinfoset", "Fast Infoset");
+        return flavors;
+    }
+
+    /**
+     * return the Transfer Data of type DataFlavor from InputStream
+     * @param df The DataFlavor.
+     * @param ins The InputStream corresponding to the data.
+     * @return The constructed Object.
+     */
+    public Object getTransferData(DataFlavor flavor, DataSource dataSource)
+        throws IOException
+    {
+        if (flavor.getMimeType().startsWith("application/fastinfoset")) {
+            try {
+                if (flavor.getRepresentationClass().getName().equals(STR_SRC)) {
+                    return FastInfosetReflection.FastInfosetSource_new(
+                        dataSource.getInputStream());
+                }
+            }
+            catch (Exception e) {
+                throw new IOException(e.getMessage());
+            }
+        }
+        return null;
+    }
+
+    public Object getContent(DataSource dataSource) throws IOException {
+        try {
+            return FastInfosetReflection.FastInfosetSource_new(
+                dataSource.getInputStream());
+        }
+        catch (Exception e) {
+            throw new IOException(e.getMessage());
+        }
+    }
+
+    /**
+     * construct an object from a byte stream
+     * (similar semantically to previous method, we are deciding
+     *  which one to support)
+     */
+    public void writeTo(Object obj, String mimeType, OutputStream os)
+        throws IOException
+    {
+        if (!mimeType.equals("application/fastinfoset")) {
+            throw new IOException("Invalid content type \"" + mimeType
+                + "\" for FastInfosetDCH");
+        }
+
+        try {
+            InputStream is = FastInfosetReflection.FastInfosetSource_getInputStream(
+                (Source) obj);
+
+            int n; byte[] buffer = new byte[4096];
+            while ((n = is.read(buffer)) != -1) {
+                os.write(buffer, 0, n);
+            }
+        }
+        catch (Exception ex) {
+            throw new IOException(
+                "Error copying FI source to output stream " + ex.getMessage());
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/GifDataContentHandler.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import java.awt.datatransfer.DataFlavor;
+import java.io.*;
+import java.awt.*;
+
+import javax.activation.*;
+
+/**
+ * DataContentHandler for image/gif.
+ *
+ * @author Ana Lindstrom-Tamer
+ */
+public class GifDataContentHandler extends Component implements DataContentHandler {
+    private static ActivationDataFlavor myDF =
+        new ActivationDataFlavor(
+            java.awt.Image.class,
+            "image/gif",
+            "GIF Image");
+
+    protected ActivationDataFlavor getDF() {
+        return myDF;
+    }
+
+    /**
+     * Return the DataFlavors for this <code>DataContentHandler</code>.
+     *
+     * @return The DataFlavors
+     */
+    public DataFlavor[] getTransferDataFlavors() { // throws Exception;
+        return new DataFlavor[] { getDF()};
+    }
+
+    /**
+     * Return the Transfer Data of type DataFlavor from InputStream.
+     *
+     * @param df The DataFlavor
+     * @param ins The InputStream corresponding to the data
+     * @return String object
+     */
+    public Object getTransferData(DataFlavor df, DataSource ds)
+        throws IOException {
+        // use myDF.equals to be sure to get ActivationDataFlavor.equals,
+        // which properly ignores Content-Type parameters in comparison
+        if (getDF().equals(df))
+            return getContent(ds);
+        else
+            return null;
+    }
+
+    public Object getContent(DataSource ds) throws IOException {
+        InputStream is = ds.getInputStream();
+        int pos = 0;
+        int count;
+        byte buf[] = new byte[1024];
+
+        while ((count = is.read(buf, pos, buf.length - pos)) != -1) {
+            pos += count;
+            if (pos >= buf.length) {
+                int size = buf.length;
+                if (size < 256*1024)
+                    size += size;
+                else
+                    size += 256*1024;
+                byte tbuf[] = new byte[size];
+                System.arraycopy(buf, 0, tbuf, 0, pos);
+                buf = tbuf;
+            }
+        }
+        Toolkit tk = Toolkit.getDefaultToolkit();
+        return tk.createImage(buf, 0, pos);
+    }
+
+    /**
+     * Write the object to the output stream, using the specified MIME type.
+     */
+    public void writeTo(Object obj, String type, OutputStream os)
+                        throws IOException {
+        if (obj != null && !(obj instanceof Image))
+            throw new IOException("\"" + getDF().getMimeType() +
+                "\" DataContentHandler requires Image object, " +
+                "was given object of type " + obj.getClass().toString());
+
+        throw new IOException(getDF().getMimeType() + " encoding not supported");
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ImageDataContentHandler.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,171 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import java.awt.*;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.image.BufferedImage;
+import java.io.*;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.activation.*;
+import javax.imageio.ImageIO;
+import javax.imageio.ImageWriter;
+import javax.imageio.stream.ImageOutputStream;
+
+import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
+
+public class ImageDataContentHandler extends Component
+    implements DataContentHandler {
+
+    protected static final Logger log =
+        Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
+                         "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
+
+    private DataFlavor[] flavor;
+
+    public ImageDataContentHandler() {
+        String[] mimeTypes = ImageIO.getReaderMIMETypes();
+        flavor = new DataFlavor[mimeTypes.length];
+        for(int i=0; i < mimeTypes.length; i++) {
+            flavor[i] = new ActivationDataFlavor(
+                java.awt.Image.class, mimeTypes[i], "Image");
+        }
+    }
+
+    /**
+     * Returns an array of DataFlavor objects indicating the flavors the
+     * data can be provided in. The array should be ordered according to
+     * preference for providing the data (from most richly descriptive to
+     * least descriptive).
+     *
+     * @return The DataFlavors.
+     */
+    public DataFlavor[] getTransferDataFlavors() {
+        return (DataFlavor[]) Arrays.copyOf(flavor, flavor.length);
+    }
+
+    /**
+     * Returns an object which represents the data to be transferred.
+     * The class of the object returned is defined by the representation class
+     * of the flavor.
+     *
+     * @param df The DataFlavor representing the requested type.
+     * @param ds The DataSource representing the data to be converted.
+     * @return The constructed Object.
+     */
+    public Object getTransferData(DataFlavor df, DataSource ds)
+        throws IOException {
+        for (int i=0; i < flavor.length; i++) {
+            if (flavor[i].equals(df)) {
+                return getContent(ds);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Return an object representing the data in its most preferred form.
+     * Generally this will be the form described by the first DataFlavor
+     * returned by the <code>getTransferDataFlavors</code> method.
+     *
+     * @param ds The DataSource representing the data to be converted.
+     * @return The constructed Object.
+     */
+    public Object getContent(DataSource ds) throws IOException {
+        return ImageIO.read(new BufferedInputStream(ds.getInputStream()));
+    }
+
+    /**
+     * Convert the object to a byte stream of the specified MIME type
+     * and write it to the output stream.
+     *
+     * @param obj   The object to be converted.
+     * @param mimeType  The requested MIME type of the resulting byte stream.
+     * @param os    The output stream into which to write the converted
+     *          byte stream.
+     */
+
+    public void writeTo(Object obj, String type, OutputStream os)
+        throws IOException {
+
+        try {
+            BufferedImage bufImage = null;
+            if (obj instanceof BufferedImage) {
+                bufImage = (BufferedImage)obj;
+            } else if (obj instanceof Image) {
+                bufImage = render((Image)obj);
+            } else {
+                log.log(Level.SEVERE,
+                    "SAAJ0520.soap.invalid.obj.type",
+                    new String[] { obj.getClass().toString() });
+                throw new IOException(
+                    "ImageDataContentHandler requires Image object, "
+                    + "was given object of type "
+                    + obj.getClass().toString());
+            }
+            ImageWriter writer = null;
+            Iterator i = ImageIO.getImageWritersByMIMEType(type);
+            if (i.hasNext()) {
+                writer = (ImageWriter)i.next();
+            }
+            if (writer != null) {
+                ImageOutputStream stream = null;
+                stream = ImageIO.createImageOutputStream(os);
+                writer.setOutput(stream);
+                writer.write(bufImage);
+                writer.dispose();
+                stream.close();
+            } else {
+                log.log(Level.SEVERE, "SAAJ0526.soap.unsupported.mime.type",
+                    new String[] { type });
+                throw new IOException("Unsupported mime type:"+ type);
+            }
+        } catch (Exception e) {
+            log.severe("SAAJ0525.soap.cannot.encode.img");
+            throw new IOException("Unable to encode the image to a stream "
+                + e.getMessage());
+        }
+    }
+
+
+    private BufferedImage render(Image img) throws InterruptedException {
+
+        MediaTracker tracker = new MediaTracker(this);
+        tracker.addImage(img, 0);
+        tracker.waitForAll();
+        BufferedImage bufImage = new BufferedImage(img.getWidth(null),
+            img.getHeight(null), BufferedImage.TYPE_INT_RGB);
+        Graphics g = bufImage.createGraphics();
+        g.drawImage(img, 0, 0, null);
+        g.dispose();
+        return bufImage;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/JpegDataContentHandler.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,162 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import java.awt.*;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.image.BufferedImage;
+import java.io.*;
+
+import javax.activation.*;
+
+//import com.sun.image.codec.jpeg.*;
+import javax.imageio.ImageIO;
+
+/**
+ * JAF data handler for Jpeg content
+ *
+ * @author Ana Lindstrom-Tamer
+ */
+
+public class JpegDataContentHandler
+    extends Component
+    implements DataContentHandler {
+    public static final String STR_SRC = "java.awt.Image";
+
+    /**
+     * return the DataFlavors for this <code>DataContentHandler</code>
+     * @return The DataFlavors.
+     */
+    public DataFlavor[] getTransferDataFlavors() { // throws Exception;
+        DataFlavor flavors[] = new DataFlavor[1];
+
+        try {
+            flavors[0] =
+                new ActivationDataFlavor(
+                    Class.forName(STR_SRC),
+                    "image/jpeg",
+                    "JPEG");
+        } catch (Exception e) {
+            System.out.println(e);
+        }
+
+        return flavors;
+    }
+
+    /**
+     * return the Transfer Data of type DataFlavor from InputStream
+     * @param df The DataFlavor.
+     * @param ins The InputStream corresponding to the data.
+     * @return The constructed Object.
+     */
+    public Object getTransferData(DataFlavor df, DataSource ds) {
+
+        // this is sort of hacky, but will work for the
+        // sake of testing...
+        if (df.getMimeType().startsWith("image/jpeg")) {
+            if (df.getRepresentationClass().getName().equals(STR_SRC)) {
+                InputStream inputStream = null;
+                BufferedImage jpegLoadImage = null;
+
+                try {
+                    inputStream = ds.getInputStream();
+                    jpegLoadImage = ImageIO.read(inputStream);
+
+                } catch (Exception e) {
+                    System.out.println(e);
+                }
+
+                return jpegLoadImage;
+            }
+        }
+        return null;
+    }
+
+    /**
+     *
+     */
+    public Object getContent(DataSource ds) { // throws Exception;
+        InputStream inputStream = null;
+        BufferedImage jpegLoadImage = null;
+
+        try {
+            inputStream = ds.getInputStream();
+            jpegLoadImage = ImageIO.read(inputStream);
+
+        } catch (Exception e) {
+        }
+
+        return (Image) jpegLoadImage;
+    }
+
+    /**
+     * construct an object from a byte stream
+     * (similar semantically to previous method, we are deciding
+     *  which one to support)
+     */
+    public void writeTo(Object obj, String mimeType, OutputStream os)
+        throws IOException {
+        if (!mimeType.equals("image/jpeg"))
+            throw new IOException(
+                "Invalid content type \""
+                    + mimeType
+                    + "\" for ImageContentHandler");
+
+        if (obj == null) {
+            throw new IOException("Null object for ImageContentHandler");
+        }
+
+        try {
+            BufferedImage bufImage = null;
+            if (obj instanceof BufferedImage) {
+                bufImage = (BufferedImage) obj;
+
+            } else {
+                Image img = (Image) obj;
+                MediaTracker tracker = new MediaTracker(this);
+                tracker.addImage(img, 0);
+                tracker.waitForAll();
+                if (tracker.isErrorAny()) {
+                        throw new IOException("Error while loading image");
+                }
+                bufImage =
+                    new BufferedImage(
+                        img.getWidth(null),
+                        img.getHeight(null),
+                        BufferedImage.TYPE_INT_RGB);
+
+                Graphics g = bufImage.createGraphics();
+                g.drawImage(img, 0, 0, null);
+            }
+            ImageIO.write(bufImage, "jpeg", os);
+
+        } catch (Exception ex) {
+            throw new IOException(
+                "Unable to run the JPEG Encoder on a stream "
+                    + ex.getMessage());
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LazyEnvelope.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPException;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+
+public interface LazyEnvelope extends Envelope {
+    public XMLStreamReader getPayloadReader() throws SOAPException;
+    public boolean isLazy();
+    public void writeTo(XMLStreamWriter writer) throws XMLStreamException, SOAPException;
+
+    /**
+     * Retrieve payload qname without materializing its contents
+     * @return
+     * @throws SOAPException
+     */
+    public QName getPayloadQName() throws SOAPException;
+
+    /**
+     * Retrieve payload attribute value without materializing its contents
+     * @param localName
+     * @return
+     * @throws SOAPException
+     */
+    public String getPayloadAttributeValue(String localName) throws SOAPException;
+
+    /**
+     * Retrieve payload attribute value without materializing its contents
+     * @param qName
+     * @return
+     * @throws SOAPException
+     */
+    public String getPayloadAttributeValue(QName qName) throws SOAPException;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,110 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for soap pkg
+# Error messages
+SAAJ0501.soap.data.handler.err=SAAJ0501: Data handler error: {0}
+SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: No data handler associated with this attachment
+SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: Null dataHandler argument to setDataHandler
+SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: Unable to externalize attachment
+SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: Unable to copy MIME header
+SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: Unable to copy MIME headers into attachment
+# Usage not found. TODO Remove
+#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0}
+SAAJ0508.soap.cannot.register.handlers=SAAJ050: Unable to register handlers in JAF command map
+
+SAAJ0510.soap.cannot.create.envelope=SAAJ0510: Unable to create envelope from given source
+SAAJ0511.soap.cannot.create.envelope=SAAJ0511: Unable to create envelope from given source
+SAAJ0512.soap.incorrect.factory.used=SAAJ0512: Unable to create envelope: incorrect factory used during tree construction
+SAAJ0513.soap.unknown.ns=SAAJ0513: Unable to create envelope from given source because the namespace was not recognized
+SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: Unable to create envelope from given source because the root element is not named Envelope
+SAAJ0515.source.reset.exception=SAAJ0515: Unable to reset the soap-part content source
+
+SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler requires Image object, but was given object of type {0}
+SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type set to {0}
+SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: Invalid content-type {0} for ImageContentHandler
+SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: Null object for ImageContentHandler
+SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: Unable to run the JPEG Encoder on a stream
+SAAJ0525.soap.cannot.encode.img=SAAJ0525: Unable to encode image to a stream
+SAAJ0526.soap.unsupported.mime.type=SAAJ0526: Unsupported mime type {0}
+
+SAAJ0530.soap.unknown.Content-Type=SAAJ0530: Unrecognized Content-Type
+SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: Unable to parse content type
+SAAJ0532.soap.no.Content-Type=SAAJ0532: Absent Content-Type
+SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: Cannot create message: incorrect content-type for SOAP version. Got {0}, but expected {1}
+SAAJ0534.soap.unknown.Content-Type=SAAJ0534: Unrecognized Content-Type
+SAAJ0535.soap.cannot.internalize.message=SAAJ0535: Unable to internalize message
+SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type needs to be Multipart/Related and with type=text/xml or application/soap+xml
+SAAJ0537.soap.invalid.content-type=SAAJ0537: Invalid Content-Type. Could be an error message instead of a SOAP message
+SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: Unable to convert SOAP message into a Multipart object
+SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: Unable to get header stream in saveChanges
+SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: Error during saving a multipart message
+SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: Could not complete operation. Fragment not bound to SOAP part
+SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: Processing Instructions are not allowed in SOAP documents
+SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: Entity References are not allowed in SOAP documents
+SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: Source does not have a valid Reader or InputStream
+SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: Error setting the source for SOAPPart
+SAAJ0546.soap.stream.incorrect.type=SAAJ0546: Internal error: stream not of the right type
+SAAJ0547.soap.cannot.externalize=SAAJ0547: Error while trying to externalize
+SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: Unable to externalize header
+SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: Bad Content-Type for SOAP Part {0}
+SAAJ0550.soap.null.headers=SAAJ0550: Cannot create message: Headers can't be null
+SAAJ0551.soap.unsupported.encoding=SAAJ0551: Unsupported encoding {0}
+SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: XML declaration parsing failed
+SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: renameNode on SOAPPart not supported
+SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: normalizeDocument on SOAPPart not supported
+SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: getDomConfig on SOAPPart not supported
+SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: adoptNode on SOAPPart not supported
+SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: setDocumentURI on SOAPPart not supported
+SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: getDocumentURI on SOAPPart not supported
+SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: setStrictErrorChecking on SOAPPart not supported
+SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: getInputEncoding on SOAPPart not supported
+SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: getXmlEncoding on SOAPPart not supported
+SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: getXmlStandalone on SOAPPart not supported
+SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: setXmlStandalone on SOAPPart not supported
+SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: getXmlVersion on SOAPPart not supported
+SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: setXmlVersion on SOAPPart not supported
+SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: getStrictErrorChecking on SOAPPart not supported
+# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement"
+SAAJ0567.soap.null.input=SAAJ0567: Null {0} argument to {1}
+SAAJ0568.soap.unsupported.protocol=SAAJ0568: Protocol {0} does not support {1}
+# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory"
+SAAJ0569.soap.unknown.protocol=SAAJ0569: Unknown Protocol {0} specified for creating {1}
+SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: The parent element of a soap part is not defined
+SAAJ0571.soappart.setValue.not.defined=SAAJ0571: Setting value of a soap part is not defined
+SAAJ0572.soap.no.content.for.attachment=SAAJ0572: No data handler/content associated with this attachment
+SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: IOException while reading the raw attachment content
+SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: IOException while trying to obtain the inputstream from datahandler for this attachment
+SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: Exception while trying to retrieve content for this attachment
+SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: Exception while trying to set the Raw content for this attachment
+SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: Exception while trying to get the Raw content for this attachment
+SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: Exception while trying to set the Decoded content for this attachment
+SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: Exception while trying to get the Encoded content for this attachment
+SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: Unable to locate attachment with cid {0}
+SAAJ0591.soap.exception.in.set.property=SAAJ0591: Exception {0}  when trying to set Property {1} on SOAP Message
+
+# Info messages
+SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type set to {0}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_de.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,110 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for soap pkg
+# Error messages
+SAAJ0501.soap.data.handler.err=SAAJ0501: Daten-Handler-Fehler: {0}
+SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: Es ist kein Daten-Handler mit diesem Anhang verkn\u00FCpft
+SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: Null-dataHandler-Argument f\u00FCr setDataHandler
+SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: Anhang kann nicht externalisiert werden
+SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: MIME-Header kann nicht kopiert werden
+SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: MIME-Header k\u00F6nnen nicht in Anhang kopiert werden
+# Usage not found. TODO Remove
+#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0}
+SAAJ0508.soap.cannot.register.handlers=SAAJ050: Handler k\u00F6nnen in JAF-Befehlszuordnung nicht registriert werden
+
+SAAJ0510.soap.cannot.create.envelope=SAAJ0510: Envelope kann nicht aus angegebener Quelle erstellt werden
+SAAJ0511.soap.cannot.create.envelope=SAAJ0511: Envelope kann nicht aus angegebener Quelle erstellt werden
+SAAJ0512.soap.incorrect.factory.used=SAAJ0512: Envelope kann nicht erstellt werden: falsche Factory bei der Erstellung der Baumstruktur verwendet
+SAAJ0513.soap.unknown.ns=SAAJ0513: Envelope kann nicht aus der angegebenen Quelle erstellt werden, weil der Namespace nicht erkannt wurde
+SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: Envelope kann nicht aus der angegebenen Quelle erstellt werden, weil das Root-Element nicht den Namen "Envelope" hat
+SAAJ0515.source.reset.exception=SAAJ0515: soap-part-Contentquelle kann nicht zur\u00FCckgesetzt werden
+
+SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler erfordert Imageobjekt, Objekt vom Typ {0} wurde jedoch angegeben
+SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type auf {0} festgelegt
+SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: Ung\u00FCltiger Content-Type {0} f\u00FCr ImageContentHandler
+SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: Null-Objekt f\u00FCr ImageContentHandler
+SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: JPEG-Encoder kann nicht in einem Stream ausgef\u00FChrt werden
+SAAJ0525.soap.cannot.encode.img=SAAJ0525: Image kann nicht in einem Stream codiert werden
+SAAJ0526.soap.unsupported.mime.type=SAAJ0526: Nicht unterst\u00FCtzter MIME-Typ {0}
+
+SAAJ0530.soap.unknown.Content-Type=SAAJ0530: Nicht erkannter Content-Type
+SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: Content-Type kann nicht geparst werden
+SAAJ0532.soap.no.Content-Type=SAAJ0532: Content-Type fehlt
+SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: Nachricht kann nicht erstellt werden: Falscher Content-Type f\u00FCr SOAP-Version. {0} erhalten, jedoch {1} erwartet
+SAAJ0534.soap.unknown.Content-Type=SAAJ0534: Nicht erkannter Content-Type
+SAAJ0535.soap.cannot.internalize.message=SAAJ0535: Nachricht kann nicht \"internalisiert\" werden.
+SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type muss Multipart/Related mit type=text/xml oder application/soap+xml sein
+SAAJ0537.soap.invalid.content-type=SAAJ0537: Ung\u00FCltiger Content-Type. K\u00F6nnte eine Fehlermeldung anstelle einer SOAP-Nachricht sein
+SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: SOAP-Nachricht kann nicht in ein Multipart-Objekt konvertiert werden
+SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: Header Stream in saveChanges kann nicht abgerufen werden
+SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: Fehler beim Speichern einer Multipart-Nachricht
+SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: Vorgang konnte nicht abgeschlossen werden. Fragment nicht an SOAP Part gebunden
+SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: Verarbeitungsanweisungen sind in SOAP-Dokumenten nicht zul\u00E4ssig
+SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: Entity-Referenzen sind in SOAP-Dokumenten nicht zul\u00E4ssig
+SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: Quelle hat keinen g\u00FCltigen Reader oder InputStream
+SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: Fehler beim Festlegen der Quelle f\u00FCr SOAPPart
+SAAJ0546.soap.stream.incorrect.type=SAAJ0546: Interner Fehler: Stream hat nicht den richtigen Typ
+SAAJ0547.soap.cannot.externalize=SAAJ0547: Fehler bei Externalisierungsversuch
+SAAJ0548.soap.cannot.externalize.hdr=SAAJ0504: Header kann nicht externalisiert werden
+SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: Ung\u00FCltiger Content-Type f\u00FCr SOAPPart {0}
+SAAJ0550.soap.null.headers=SAAJ0550: Nachricht kann nicht erstellt werden: Header d\u00FCrfen nicht null sein
+SAAJ0551.soap.unsupported.encoding=SAAJ0551: Nicht unterst\u00FCtzte Codierung {0}
+SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: Parsing von XML-Deklaration nicht erfolgreich
+SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: renameNode in SOAPPart nicht unterst\u00FCtzt
+SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: normalizeDocument in SOAPPart nicht unterst\u00FCtzt
+SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: getDomConfig in SOAPPart nicht unterst\u00FCtzt
+SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: adoptNode in SOAPPart nicht unterst\u00FCtzt
+SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: setDocumentURI in SOAPPart nicht unterst\u00FCtzt
+SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: getDocumentURI in SOAPPart nicht unterst\u00FCtzt
+SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: setStrictErrorChecking in SOAPPart nicht unterst\u00FCtzt
+SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: getInputEncoding in SOAPPart nicht unterst\u00FCtzt
+SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: getXmlEncoding in SOAPPart nicht unterst\u00FCtzt
+SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: getXmlStandalone in SOAPPart nicht unterst\u00FCtzt
+SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: setXmlStandalone in SOAPPart nicht unterst\u00FCtzt
+SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: getXmlVersion in SOAPPart nicht unterst\u00FCtzt
+SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: setXmlVersion in SOAPPart nicht unterst\u00FCtzt
+SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: getStrictErrorChecking in SOAPPart nicht unterst\u00FCtzt
+# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement"
+SAAJ0567.soap.null.input=SAAJ0567: Null-{0}-Argument f\u00FCr {1}
+SAAJ0568.soap.unsupported.protocol=SAAJ0568: Protokoll {0} unterst\u00FCtzt {1} nicht
+# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory"
+SAAJ0569.soap.unknown.protocol=SAAJ0569: Unbekanntes Protokoll {0} f\u00FCr Erstellung von {1} angegeben
+SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: Das \u00FCbergeordnete Element eines SOAPPart-Teils ist nicht definiert
+SAAJ0571.soappart.setValue.not.defined=SAAJ0571: Die Festlegung des Wertes eines SOAPPart-Teils ist nicht definiert
+SAAJ0572.soap.no.content.for.attachment=SAAJ0502: Es ist kein Daten-Handler/Content mit diesem Anhang verkn\u00FCpft
+SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: IOException beim Lesen des Raw-Anhangscontents
+SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: IOException beim Versuch, den Input Stream aus Daten-Handler f\u00FCr diesen Anhang abzurufen
+SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: Ausnahme beim Versuch, den Content f\u00FCr diesen Anhang abzurufen
+SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: Ausnahme beim Versuch, den Raw-Content f\u00FCr diesen Anhang festzulegen
+SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: Ausnahme beim Versuch, den Raw-Content f\u00FCr diesen Anhang abzurufen
+SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: Ausnahme beim Versuch, den decodierten Content f\u00FCr diesen Anhang festzulegen
+SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: Ausnahme beim Versuch, den decodierten Content f\u00FCr diesen Anhang abzurufen
+SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: Anhang mit CID {0} kann nicht gefunden werden
+SAAJ0591.soap.exception.in.set.property=SAAJ0591: Ausnahme {0} beim Versuch, Eigenschaft {1} in SOAP-Nachricht festzulegen
+
+# Info messages
+SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type auf {0} festgelegt
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_es.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,110 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for soap pkg
+# Error messages
+SAAJ0501.soap.data.handler.err=SAAJ0501: Error de manejador de datos: {0}
+SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: no hay ning\u00FAn manejador de datos asociado a este anexo
+SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: argumento dataHandler nulo para setDataHandler
+SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: no se ha podido externalizar el anexo
+SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: no se ha podido copiar la cabecera MIME
+SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: no se han podido copiar las cabeceras MIME en el anexo
+# Usage not found. TODO Remove
+#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0}
+SAAJ0508.soap.cannot.register.handlers=SAAJ050: no se han podido registrar los manejadores en la asignaci\u00F3n de comandos JAF
+
+SAAJ0510.soap.cannot.create.envelope=SAAJ0510: no se ha podido crear el elemento Envelope desde el origen especificado
+SAAJ0511.soap.cannot.create.envelope=SAAJ0511: no se ha podido crear el elemento Envelope desde el origen especificado
+SAAJ0512.soap.incorrect.factory.used=SAAJ0512: No se ha podido crear el elemento Envelope: se ha utilizado una f\u00E1brica incorrecta durante la construcci\u00F3n del \u00E1rbol
+SAAJ0513.soap.unknown.ns=SAAJ0513: no se ha podido crear el elemento Envelope desde el origen especificado, porque no se ha reconocido el espacio de nombres
+SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: no se ha podido crear el elemento Envelope desde el origen especificado, porque el elemento ra\u00EDz no se denomina Envelope
+SAAJ0515.source.reset.exception=SAAJ0515: no se ha podido restablecer el origen del contenido de la parte soap
+
+SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler necesita un objeto de imagen, pero se ha proporcionado un objeto de tipo {0}
+SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type est\u00E1 definido en {0}
+SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: Content-Type {0} no v\u00E1lido para ImageContentHandler
+SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: objeto nulo para ImageContentHandler
+SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: no se ha podido ejecutar el codificador JPEG en un flujo
+SAAJ0525.soap.cannot.encode.img=SAAJ0525: no se ha podido codificar la imagen en un flujo
+SAAJ0526.soap.unsupported.mime.type=SAAJ0526: tipo MIME no soportado {0}
+
+SAAJ0530.soap.unknown.Content-Type=SAAJ0530: Content-Type no reconocido
+SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: no se ha podido analizar el tipo de contenido
+SAAJ0532.soap.no.Content-Type=SAAJ0532: Content-Type ausente
+SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: No se puede crear el mensaje: content-type incorrecto para la versi\u00F3n de SOAP. Se ha obtenido {0}, pero se esperaba {1}
+SAAJ0534.soap.unknown.Content-Type=SAAJ0534: Content-Type no reconocido
+SAAJ0535.soap.cannot.internalize.message=SAAJ0535: no se ha podido internalizar el mensaje
+SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type tiene que ser Multipart/Related y con type=text/xml o application/soap+xml
+SAAJ0537.soap.invalid.content-type=SAAJ0537: Content-Type no v\u00E1lido. Podr\u00EDa ser un mensaje de error en lugar de un mensaje SOAP
+SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: no se ha podido convertir un mensaje SOAP en un objeto de varias partes
+SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: no se ha podido obtener el flujo de cabeceras en saveChanges
+SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: error al guardar un mensaje de varias partes
+SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: no se ha podido completar la operaci\u00F3n. El fragmento no est\u00E1 enlazado a la parte SOAP
+SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: no se permiten instrucciones de procesamiento en los documentos SOAP
+SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: no se permiten referencias a entidades en los documentos SOAP
+SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: el origen no tiene un Reader o InputStream v\u00E1lido
+SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: error al definir el origen para SOAPPart
+SAAJ0546.soap.stream.incorrect.type=SAAJ0546: Error interno: el flujo no es del tipo correcto
+SAAJ0547.soap.cannot.externalize=SAAJ0547: Error al intentar externalizar
+SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: no se ha podido externalizar la cabecera
+SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: Content-Type err\u00F3neo para la parte SOAP {0}
+SAAJ0550.soap.null.headers=SAAJ0550: no se puede crear el mensaje. Las cabeceras no pueden ser nulas
+SAAJ0551.soap.unsupported.encoding=SAAJ0551: codificaci\u00F3n no soportada {0}
+SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: fallo en el an\u00E1lisis de la declaraci\u00F3n XML
+SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: renameNode en SOAPPart no est\u00E1 soportado
+SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: normalizeDocument en SOAPPart no est\u00E1 soportado
+SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: getDomConfig en SOAPPart no est\u00E1 soportado
+SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: adoptNode en SOAPPart no est\u00E1 soportado
+SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: setDocumentURI en SOAPPart no est\u00E1 soportado
+SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: getDocumentURI en SOAPPart no est\u00E1 soportado
+SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: setStrictErrorChecking en SOAPPart no est\u00E1 soportado
+SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: getInputEncoding en SOAPPart no est\u00E1 soportado
+SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: getXmlEncoding en SOAPPart no est\u00E1 soportado
+SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: getXmlStandalone en SOAPPart no est\u00E1 soportado
+SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: setXmlStandalone en SOAPPart no est\u00E1 soportado
+SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: getXmlVersion en SOAPPart no est\u00E1 soportado
+SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: setXmlVersion en SOAPPart no est\u00E1 soportado
+SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: getStrictErrorChecking en SOAPPart no est\u00E1 soportado
+# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement"
+SAAJ0567.soap.null.input=SAAJ0567: argumento {0} nulo para {1}
+SAAJ0568.soap.unsupported.protocol=SAAJ0568: el protocolo {0} no soporta {1}
+# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory"
+SAAJ0569.soap.unknown.protocol=SAAJ0569: se ha especificado un protocolo {0} desconocido para crear {1}
+SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: no se ha definido el elemento principal de una parte soap
+SAAJ0571.soappart.setValue.not.defined=SAAJ0571: no se ha definido el valor de definici\u00F3n de una parte soap
+SAAJ0572.soap.no.content.for.attachment=SAAJ0572: no hay ning\u00FAn manejador/contenido asociado a este anexo
+SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: excepci\u00F3n de E/S al leer el contenido del anexo raw
+SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: excepci\u00F3n de E/S al intentar obtener el flujo de entrada desde el manejador de datos de este anexo
+SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: excepci\u00F3n al intentar recuperar el contenido de este anexo
+SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: excepci\u00F3n al intentar definir el contenido raw de este anexo
+SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: excepci\u00F3n al intentar obtener el contenido raw de este anexo
+SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: excepci\u00F3n al intentar definir el contenido descodificado de este anexo
+SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: excepci\u00F3n al intentar obtener el contenido codificado de este anexo
+SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: no se ha encontrado el anexo con el CID {0}
+SAAJ0591.soap.exception.in.set.property=SAAJ0591: excepci\u00F3n {0} al intentar definir la propiedad {1} en el mensaje SOAP
+
+# Info messages
+SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type definido en {0}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_fr.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,110 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for soap pkg
+# Error messages
+SAAJ0501.soap.data.handler.err=SAAJ0501 : erreur de gestionnaire de donn\u00E9es : {0}
+SAAJ0502.soap.no.handler.for.attachment=SAAJ0502 : aucun gestionnaire de donn\u00E9es associ\u00E9 \u00E0 cette pi\u00E8ce jointe
+SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503 : argument dataHandler NULL pour setDataHandler
+SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504 : impossible d'externaliser la pi\u00E8ce jointe
+SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505 : impossible de copier l'en-t\u00EAte MIME
+SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506 : impossible de copier les en-t\u00EAtes MIME dans la pi\u00E8ce jointe
+# Usage not found. TODO Remove
+#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0}
+SAAJ0508.soap.cannot.register.handlers=SAAJ050 : impossible d'inscrire les gestionnaires dans la mappe de commande JAF
+
+SAAJ0510.soap.cannot.create.envelope=SAAJ0510 : impossible de cr\u00E9er une enveloppe \u00E0 partir de la source donn\u00E9e
+SAAJ0511.soap.cannot.create.envelope=SAAJ0511 : impossible de cr\u00E9er une enveloppe \u00E0 partir de la source donn\u00E9e
+SAAJ0512.soap.incorrect.factory.used=SAAJ0512 : impossible de cr\u00E9er une enveloppe : fabrique incorrecte utilis\u00E9e lors de la construction de l'arborescence
+SAAJ0513.soap.unknown.ns=SAAJ0513 : impossible de cr\u00E9er une enveloppe \u00E0 partir de la source donn\u00E9e car l'espace de noms n'a pas \u00E9t\u00E9 reconnu
+SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514 : impossible de cr\u00E9er une enveloppe \u00E0 partir de la source donn\u00E9e car l'\u00E9l\u00E9ment racine n'est pas nomm\u00E9 Envelope
+SAAJ0515.source.reset.exception=SAAJ0515 : impossible de red\u00E9finir la source de contenu soap-part
+
+SAAJ0520.soap.invalid.obj.type=SAAJ0520 : DataContentHandler exige un objet de type Image, mais a re\u00E7u un objet de type {0}
+SAAJ0521.soap.set.Content-Type=SAAJ0521 : Content-Type d\u00E9fini sur {0}
+SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522 : content-type {0} non valide pour ImageContentHandler
+SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523 : objet NULL pour ImageContentHandler
+SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524 : impossible d'ex\u00E9cuter l'encodeur JPEG sur un flux
+SAAJ0525.soap.cannot.encode.img=SAAJ0525 : impossible d'encoder l'image en un flux
+SAAJ0526.soap.unsupported.mime.type=SAAJ0526 : type MIME {0} non pris en charge
+
+SAAJ0530.soap.unknown.Content-Type=SAAJ0530 : Content-Type non reconnu
+SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531 : impossible d'analyser le type de contenu
+SAAJ0532.soap.no.Content-Type=SAAJ0532 : Content-Type absent
+SAAJ0533.soap.incorrect.Content-Type=SAAJ0533 : impossible de cr\u00E9er un message : content-type incorrect pour la version SOAP. {0} obtenu, mais {1} attendu
+SAAJ0534.soap.unknown.Content-Type=SAAJ0534 : Content-Type non reconnu
+SAAJ0535.soap.cannot.internalize.message=SAAJ0535 : impossible d'internaliser le message
+SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536 : Content-Type doit \u00EAtre Multipart/Related et avec le type = text/xml ou application/soap+xml
+SAAJ0537.soap.invalid.content-type=SAAJ0537 : Content-Type non valide. Cela peut \u00EAtre un message d'erreur au lieu d'un message SOAP
+SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538 : impossible de convertir un message SOAP en objet Multipart
+SAAJ0539.soap.cannot.get.header.stream=SAAJ0539 : impossible d'obtenir un flux de donn\u00E9es d'en-t\u00EAte dans saveChanges
+SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540 : erreur lors de l'enregistrement d'un message Multipart
+SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541 : impossible de terminer l'op\u00E9ration. Fragment non li\u00E9 \u00E0 la partie SOAP
+SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542 : les instructions de traitement ne sont pas autoris\u00E9es dans les documents SOAP
+SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543 : les r\u00E9f\u00E9rences d'entit\u00E9 ne sont pas autoris\u00E9es dans les documents SOAP
+SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544 : la source n'a pas de processus de lecture ou d'InputStream valide
+SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545 : erreur lors de la d\u00E9finition de la source pour SOAPPart
+SAAJ0546.soap.stream.incorrect.type=SAAJ0546 : erreur interne : le type du flux n'est pas correct
+SAAJ0547.soap.cannot.externalize=SAAJ0547 : erreur lors de la tentative d'externalisation
+SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548 : impossible d'externaliser l'en-t\u00EAte
+SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549 : Content-Type incorrect pour la partie SOAP {0}
+SAAJ0550.soap.null.headers=SAAJ0550 : impossible de cr\u00E9er le message : les en-t\u00EAtes ne peuvent pas \u00EAtre NULL
+SAAJ0551.soap.unsupported.encoding=SAAJ0551 : encodage {0} non pris en charge
+SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552 : \u00E9chec de l'analyse de la d\u00E9claration XML
+SAAJ0553.soappart.renamenode.not.supported=SAAJ0553 : renameNode sur SOAPPart non pris en charge
+SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554 : normalizeDocument sur SOAPPart non pris en charge
+SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555 : getDomConfig sur SOAPPart non pris en charge
+SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556 : adoptNode sur SOAPPart non pris en charge
+SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557 : setDocumentURI sur SOAPPart non pris en charge
+SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558 : getDocumentURI sur SOAPPart non pris en charge
+SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559 : setStrictErrorChecking sur SOAPPart non pris en charge
+SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560 : getInputEncoding sur SOAPPart non pris en charge
+SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561 : getXmlEncoding sur SOAPPart non pris en charge
+SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562 : getXmlStandalone sur SOAPPart non pris en charge
+SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563 : setXmlStandalone sur SOAPPart non pris en charge
+SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564 : getXmlVersion sur SOAPPart non pris en charge
+SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565 : setXmlVersion sur SOAPPart non pris en charge
+SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566 : getStrictErrorChecking sur SOAPPart non pris en charge
+# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement"
+SAAJ0567.soap.null.input=SAAJ0567 : argument {0} NULL pour {1}
+SAAJ0568.soap.unsupported.protocol=SAAJ0568 : le protocole {0} ne prend pas en charge {1}
+# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory"
+SAAJ0569.soap.unknown.protocol=SAAJ0569 : protocole {0} inconnu indiqu\u00E9 pour la cr\u00E9ation de {1}
+SAAJ0570.soappart.parent.element.not.defined=SAAJ0570 : l'\u00E9l\u00E9ment parent d'une partie SOAP n'est pas d\u00E9fini
+SAAJ0571.soappart.setValue.not.defined=SAAJ0571 : la valeur de param\u00E8tre d'une partie SOAP n'est pas d\u00E9finie
+SAAJ0572.soap.no.content.for.attachment=SAAJ0572 : aucun contenu/gestionnaire de donn\u00E9es associ\u00E9 \u00E0 cette pi\u00E8ce jointe
+SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573 : exception d'E/S lors de la lecture du contenu de la pi\u00E8ce jointe raw
+SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574 : exception d'E/S lors de la tentative d'obtention du flux d'entr\u00E9e \u00E0 partir du gestionnaire de donn\u00E9es pour cette pi\u00E8ce jointe
+SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575 : exception lors de la tentative d'extraction du contenu pour cette pi\u00E8ce jointe
+SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576 : exception lors de la tentative de d\u00E9finition du contenu Raw pour cette pi\u00E8ce jointe
+SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577 : exception lors de la tentative d'obtention du contenu Raw pour cette pi\u00E8ce jointe
+SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578 : exception lors de la tentative de d\u00E9finition du contenu Decoded pour cette pi\u00E8ce jointe
+SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579 : exception lors de la tentative d'obtention du contenu Encoded pour cette pi\u00E8ce jointe
+SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590 : impossible de localiser la pi\u00E8ce jointe avec le CID {0}
+SAAJ0591.soap.exception.in.set.property=SAAJ0591 : exception {0} lors de la tentative de d\u00E9finition de la propri\u00E9t\u00E9 {1} sur le message SOAP
+
+# Info messages
+SAAJ0580.soap.set.Content-Type=SAAJ0580 : Content-Type d\u00E9fini sur {0}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_it.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,110 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for soap pkg
+# Error messages
+SAAJ0501.soap.data.handler.err=SAAJ0501: Errore dell''handler dei dati: {0}
+SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: Nessun handler dei dati associato a questo allegato
+SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: Argomento dataHandler nullo per setDataHandler
+SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: Impossibile esternalizzare l'allegato
+SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: Impossibile copiare l'intestazione MIME
+SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: Impossibile copiare le intestazioni MIME nell'allegato
+# Usage not found. TODO Remove
+#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0}
+SAAJ0508.soap.cannot.register.handlers=SAAJ050: Impossibile registrare gli handler nella mappa dei comandi JAF
+
+SAAJ0510.soap.cannot.create.envelope=SAAJ0510: Impossibile creare l'envelope dall'origine specificata
+SAAJ0511.soap.cannot.create.envelope=SAAJ0511: Impossibile creare l'envelope dall'origine specificata
+SAAJ0512.soap.incorrect.factory.used=SAAJ0512: Impossibile creare l'envelope: factory errato usato durante la costruzione della struttura
+SAAJ0513.soap.unknown.ns=SAAJ0513: Impossibile creare l'envelope dall'origine specificata poich\u00E9 lo spazio di nomi non \u00E8 stato riconosciuto
+SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: Impossibile creare l'envelope dall'origine specificata poich\u00E9 l'elemento radice non \u00E8 denominato Envelope
+SAAJ0515.source.reset.exception=SAAJ0515: Impossibile reimpostare l'origine del contenuto soap-part
+
+SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler richiede un oggetto di immagine, ma l''oggetto specificato \u00E8 di tipo {0}
+SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type impostato per {0}
+SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: Content-Type non valido {0} per ImageContentHandler
+SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: Oggetto nullo per ImageContentHandler
+SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: Impossibile eseguire il codificatore JPEG su un flusso
+SAAJ0525.soap.cannot.encode.img=SAAJ0525: Impossibile codificare l'immagine in un flusso
+SAAJ0526.soap.unsupported.mime.type=SAAJ0526: Tipo MIME {0} non supportato
+
+SAAJ0530.soap.unknown.Content-Type=SAAJ0530: Content-Type non riconosciuto
+SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: Impossibile analizzare il tipo di contenuto
+SAAJ0532.soap.no.Content-Type=SAAJ0532: Content-Type assente
+SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: Impossibile creare il messaggio: Content-Type errato per la versione SOAP. Ricevuto {0}, ma previsto {1}
+SAAJ0534.soap.unknown.Content-Type=SAAJ0534: Content-Type non riconosciuto
+SAAJ0535.soap.cannot.internalize.message=SAAJ0535: Impossibile rendere interno il messaggio
+SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type deve essere Multipart/Related e con type=text/xml
+SAAJ0537.soap.invalid.content-type=SAAJ0537: Content-Type non valido. Potrebbe essere un messaggio di errore anzich\u00E9 un messaggio SOAP
+SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: Impossibile convertire il messaggio SOAP in un oggetto Multipart
+SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: Impossibile recuperare il flusso di intestazioni in saveChanges
+SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: Errore durante il salvataggio di un messaggio multiparte
+SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: Impossibile completare l'operazione. Frammento non associato alla SOAP Part
+SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: Le istruzioni di elaborazione non sono consentite nei documenti SOAP
+SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: I riferimenti alle entit\u00E0 non sono consentiti nei documenti SOAP
+SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: L'origine non ha un lettore o un flusso di input valido
+SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: Errore di impostazione dell''origine per SOAPPart
+SAAJ0546.soap.stream.incorrect.type=SAAJ0546: Errore interno: flusso di tipo errato
+SAAJ0547.soap.cannot.externalize=SAAJ0547: Errore durante il tentativo di esternalizzazione
+SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: Impossibile esternalizzare l'intestazione
+SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: Content-Type non valido per SOAP Part {0}
+SAAJ0550.soap.null.headers=SAAJ0550: Impossibile creare il messaggio: le intestazioni non possono essere nulle
+SAAJ0551.soap.unsupported.encoding=SAAJ0551: Codifica {0} non supportata
+SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: Analisi della dichiarazione XML non riuscita
+SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: renameNode su SOAPPart non supportato
+SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: normalizeDocument su SOAPPart non supportato
+SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: getDomConfig su SOAPPart non supportato
+SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: adoptNode su SOAPPart non supportato
+SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: setDocumentURI su SOAPPart non supportato
+SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: getDocumentURI su SOAPPart non supportato
+SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: setStrictErrorChecking su SOAPPart non supportato
+SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: getInputEncoding su SOAPPart non supportato
+SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: getXmlEncoding su SOAPPart non supportato
+SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: getXmlStandalone su SOAPPart non supportato
+SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: setXmlStandalone su SOAPPart non supportato
+SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: getXmlVersion su SOAPPart non supportato
+SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: setXmlVersion su SOAPPart non supportato
+SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: getStrictErrorChecking su SOAPPart non supportato
+# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement"
+SAAJ0567.soap.null.input=SAAJ0567: Argomento {0} nullo a {1}
+SAAJ0568.soap.unsupported.protocol=SAAJ0568: Il protocollo {0} non supporta {1}
+# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory"
+SAAJ0569.soap.unknown.protocol=SAAJ0569: Protocollo sconosciuto {0} specificato per la creazione di {1}
+SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: L'elemento padre di una SOAP Part non \u00E8 definito
+SAAJ0571.soappart.setValue.not.defined=SAAJ0571: Il valore di impostazione di una SOAP Part non \u00E8 definito
+SAAJ0572.soap.no.content.for.attachment=SAAJ0572: Nessun handler dei dati/contenuto associato a questo allegato
+SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: IOException durante la lettura del contenuto dell'allegato di tipo RAW
+SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: IOException durante il tentativo di ottenere il flusso di input dall'handler dei dati per questo allegato
+SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: Eccezione durante il tentativo di recuperare il contenuto per questo allegato
+SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: Eccezione durante il tentativo di impostare il contenuto di tipo RAW per questo allegato
+SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: Eccezione durante il tentativo di recuperare il contenuto di tipo RAW per questo allegato
+SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: Eccezione durante il tentativo di impostare il contenuto decodificato per questo allegato
+SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: Eccezione durante il tentativo di recuperare il contenuto codificato per questo allegato
+SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: Impossibile trovare l''allegato con cid {0}
+SAAJ0591.soap.exception.in.set.property=SAAJ0591: Eccezione {0} durante il tentativo di impostare Property {1} su SOAP Message
+
+# Info messages
+SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type impostato per {0}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_ja.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,110 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for soap pkg
+# Error messages
+SAAJ0501.soap.data.handler.err=SAAJ0501: \u30C7\u30FC\u30BF\u30FB\u30CF\u30F3\u30C9\u30E9\u30FB\u30A8\u30E9\u30FC: {0}
+SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: \u3053\u306E\u6DFB\u4ED8\u306B\u30C7\u30FC\u30BF\u30FB\u30CF\u30F3\u30C9\u30E9\u304C\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u307E\u305B\u3093
+SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: setDataHandler\u306B\u5BFE\u3059\u308BdataHandler\u5F15\u6570\u304Cnull\u3067\u3059
+SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: \u6DFB\u4ED8\u3092\u5916\u90E8\u5316\u3067\u304D\u307E\u305B\u3093
+SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: MIME\u30D8\u30C3\u30C0\u30FC\u3092\u30B3\u30D4\u30FC\u3067\u304D\u307E\u305B\u3093
+SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: MIME\u30D8\u30C3\u30C0\u30FC\u3092\u6DFB\u4ED8\u306B\u30B3\u30D4\u30FC\u3067\u304D\u307E\u305B\u3093
+# Usage not found. TODO Remove
+#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0}
+SAAJ0508.soap.cannot.register.handlers=SAAJ050: JAF\u30B3\u30DE\u30F3\u30C9\u30FB\u30DE\u30C3\u30D7\u306B\u30CF\u30F3\u30C9\u30E9\u3092\u767B\u9332\u3067\u304D\u307E\u305B\u3093
+
+SAAJ0510.soap.cannot.create.envelope=SAAJ0510: \u7279\u5B9A\u306E\u30BD\u30FC\u30B9\u304B\u3089\u30A8\u30F3\u30D9\u30ED\u30FC\u30D7\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093
+SAAJ0511.soap.cannot.create.envelope=SAAJ0511: \u7279\u5B9A\u306E\u30BD\u30FC\u30B9\u304B\u3089\u30A8\u30F3\u30D9\u30ED\u30FC\u30D7\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093
+SAAJ0512.soap.incorrect.factory.used=SAAJ0512: \u30A8\u30F3\u30D9\u30ED\u30FC\u30D7\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093: \u30C4\u30EA\u30FC\u306E\u69CB\u7BC9\u4E2D\u306B\u7121\u52B9\u306A\u30D5\u30A1\u30AF\u30C8\u30EA\u304C\u4F7F\u7528\u3055\u308C\u307E\u3057\u305F
+SAAJ0513.soap.unknown.ns=SAAJ0513: \u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u304C\u8A8D\u8B58\u3055\u308C\u306A\u304B\u3063\u305F\u305F\u3081\u3001\u7279\u5B9A\u306E\u30BD\u30FC\u30B9\u304B\u3089\u30A8\u30F3\u30D9\u30ED\u30FC\u30D7\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093
+SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: \u30EB\u30FC\u30C8\u8981\u7D20\u306E\u540D\u524D\u304CEnvelope\u3067\u306F\u306A\u3044\u305F\u3081\u3001\u7279\u5B9A\u306E\u30BD\u30FC\u30B9\u304B\u3089\u30A8\u30F3\u30D9\u30ED\u30FC\u30D7\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093
+SAAJ0515.source.reset.exception=SAAJ0515: soap-part\u30B3\u30F3\u30C6\u30F3\u30C4\u30FB\u30BD\u30FC\u30B9\u3092\u30EA\u30BB\u30C3\u30C8\u3067\u304D\u307E\u305B\u3093
+
+SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler\u306B\u306FImage\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u5FC5\u8981\u3067\u3059\u304C\u3001\u30BF\u30A4\u30D7{0}\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F
+SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type\u304C{0}\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
+SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: ImageContentHandler\u306Econtent-type {0}\u304C\u7121\u52B9\u3067\u3059
+SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: ImageContentHandler\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304Cnull\u3067\u3059
+SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: \u30B9\u30C8\u30EA\u30FC\u30E0\u3067JPEG\u30A8\u30F3\u30B3\u30FC\u30C0\u3092\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093
+SAAJ0525.soap.cannot.encode.img=SAAJ0525: \u30A4\u30E1\u30FC\u30B8\u3092\u30B9\u30C8\u30EA\u30FC\u30E0\u306B\u30A8\u30F3\u30B3\u30FC\u30C9\u3067\u304D\u307E\u305B\u3093
+SAAJ0526.soap.unsupported.mime.type=SAAJ0526: MIME\u30BF\u30A4\u30D7{0}\u304C\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+
+SAAJ0530.soap.unknown.Content-Type=SAAJ0530: Content-Type\u304C\u8A8D\u8B58\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F
+SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: \u30B3\u30F3\u30C6\u30F3\u30C4\u30FB\u30BF\u30A4\u30D7\u3092\u89E3\u6790\u3067\u304D\u307E\u305B\u3093
+SAAJ0532.soap.no.Content-Type=SAAJ0532: Content-Type\u304C\u3042\u308A\u307E\u305B\u3093
+SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: \u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093: SOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u306Econtent-type\u304C\u7121\u52B9\u3067\u3059\u3002{0}\u304C\u53D6\u5F97\u3055\u308C\u307E\u3057\u305F\u304C\u3001{1}\u304C\u4E88\u671F\u3055\u308C\u307E\u3059
+SAAJ0534.soap.unknown.Content-Type=SAAJ0534: Content-Type\u304C\u8A8D\u8B58\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F
+SAAJ0535.soap.cannot.internalize.message=SAAJ0535: \u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u5185\u90E8\u5316\u3067\u304D\u307E\u305B\u3093
+SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type\u306FMultipart/Related\u3067\u3042\u308A\u3001type=text/xml\u307E\u305F\u306Fapplication/soap+xml\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+SAAJ0537.soap.invalid.content-type=SAAJ0537: Content-Type\u304C\u7121\u52B9\u3067\u3059\u3002SOAP\u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u304B\u308F\u308A\u306B\u30A8\u30E9\u30FC\u30FB\u30E1\u30C3\u30BB\u30FC\u30B8\u306B\u306A\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059
+SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: SOAP\u30E1\u30C3\u30BB\u30FC\u30B8\u3092Multipart\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093
+SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: saveChanges\u3067\u30D8\u30C3\u30C0\u30FC\u30FB\u30B9\u30C8\u30EA\u30FC\u30E0\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093
+SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: multipart\u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u4FDD\u5B58\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
+SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: \u64CD\u4F5C\u3092\u5B8C\u4E86\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30D5\u30E9\u30B0\u30E1\u30F3\u30C8\u304CSOAP\u30D1\u30FC\u30C8\u306B\u30D0\u30A4\u30F3\u30C9\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: SOAP\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3067\u306F\u51E6\u7406\u547D\u4EE4\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
+SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: SOAP\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3067\u306F\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
+SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: \u30BD\u30FC\u30B9\u306B\u6709\u52B9\u306AReader\u307E\u305F\u306FInputStream\u304C\u3042\u308A\u307E\u305B\u3093
+SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: SOAPPart\u306E\u30BD\u30FC\u30B9\u3092\u8A2D\u5B9A\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
+SAAJ0546.soap.stream.incorrect.type=SAAJ0546: \u5185\u90E8\u30A8\u30E9\u30FC: \u30B9\u30C8\u30EA\u30FC\u30E0\u306E\u30BF\u30A4\u30D7\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093
+SAAJ0547.soap.cannot.externalize=SAAJ0547: \u5916\u90E8\u5316\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
+SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: \u30D8\u30C3\u30C0\u30FC\u3092\u5916\u90E8\u5316\u3067\u304D\u307E\u305B\u3093
+SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: SOAP\u30D1\u30FC\u30C8{0}\u306EContent-Type\u304C\u7121\u52B9\u3067\u3059
+SAAJ0550.soap.null.headers=SAAJ0550: \u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093: \u30D8\u30C3\u30C0\u30FC\u3092null\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+SAAJ0551.soap.unsupported.encoding=SAAJ0551: \u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0{0}\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: XML\u5BA3\u8A00\u306E\u89E3\u6790\u306B\u5931\u6557\u3057\u307E\u3057\u305F
+SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: SOAPPart\u306ErenameNode\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: SOAPPart\u306EnormalizeDocument\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: SOAPPart\u306EgetDomConfig\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: SOAPPart\u306EadoptNode\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: SOAPPart\u306EsetDocumentURI\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: SOAPPart\u306EgetDocumentURI\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: SOAPPart\u306EsetStrictErrorChecking\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: SOAPPart\u306EgetInputEncoding\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: SOAPPart\u306EgetXmlEncoding\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: SOAPPart\u306EgetXmlStandalone\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: SOAPPart\u306EsetXmlStandalone\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: SOAPPart\u306EgetXmlVersion\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: SOAPPart\u306EsetXmlVersion\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: SOAPPart\u306EgetStrictErrorChecking\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement"
+SAAJ0567.soap.null.input=SAAJ0567: {1}\u306B\u5BFE\u3059\u308B{0}\u5F15\u6570\u304Cnull\u3067\u3059
+SAAJ0568.soap.unsupported.protocol=SAAJ0568: \u30D7\u30ED\u30C8\u30B3\u30EB{0}\u306F{1}\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u305B\u3093
+# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory"
+SAAJ0569.soap.unknown.protocol=SAAJ0569: {1}\u306E\u4F5C\u6210\u306B\u5BFE\u3057\u3066\u4E0D\u660E\u306A\u30D7\u30ED\u30C8\u30B3\u30EB{0}\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F
+SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: SOAP\u30D1\u30FC\u30C8\u306E\u89AA\u8981\u7D20\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+SAAJ0571.soappart.setValue.not.defined=SAAJ0571: SOAP\u30D1\u30FC\u30C8\u306E\u8A2D\u5B9A\u5024\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+SAAJ0572.soap.no.content.for.attachment=SAAJ0572: \u3053\u306E\u6DFB\u4ED8\u306B\u30C7\u30FC\u30BF\u30FB\u30CF\u30F3\u30C9\u30E9/\u30B3\u30F3\u30C6\u30F3\u30C4\u304C\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u307E\u305B\u3093
+SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: raw\u6DFB\u4ED8\u30B3\u30F3\u30C6\u30F3\u30C4\u306E\u8AAD\u53D6\u308A\u4E2D\u306BIOException\u304C\u767A\u751F\u3057\u307E\u3057\u305F
+SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: \u3053\u306E\u6DFB\u4ED8\u306Edatahandler\u304B\u3089inputstream\u3092\u53D6\u5F97\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306BIOException\u304C\u767A\u751F\u3057\u307E\u3057\u305F
+SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: \u3053\u306E\u6DFB\u4ED8\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u53D6\u5F97\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F
+SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: \u3053\u306E\u6DFB\u4ED8\u306ERaw\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u8A2D\u5B9A\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F
+SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: \u3053\u306E\u6DFB\u4ED8\u306ERaw\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u53D6\u5F97\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F
+SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: \u3053\u306E\u6DFB\u4ED8\u306E\u30C7\u30B3\u30FC\u30C9\u3055\u308C\u305F\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u8A2D\u5B9A\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F
+SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: \u3053\u306E\u6DFB\u4ED8\u306E\u30A8\u30F3\u30B3\u30FC\u30C9\u3055\u308C\u305F\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u53D6\u5F97\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F
+SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: cid {0}\u306E\u6DFB\u4ED8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
+SAAJ0591.soap.exception.in.set.property=SAAJ0591: SOAP\u30E1\u30C3\u30BB\u30FC\u30B8\u3067\u30D7\u30ED\u30D1\u30C6\u30A3{1}\u3092\u8A2D\u5B9A\u3057\u3088\u3046\u3068\u3057\u305F\u3068\u304D\u306B\u4F8B\u5916{0}\u304C\u767A\u751F\u3057\u307E\u3057\u305F
+
+# Info messages
+SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type\u304C{0}\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_ko.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,110 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for soap pkg
+# Error messages
+SAAJ0501.soap.data.handler.err=SAAJ0501: \uB370\uC774\uD130 \uCC98\uB9AC\uAE30 \uC624\uB958: {0}
+SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uACFC \uC5F0\uAD00\uB41C \uB370\uC774\uD130 \uCC98\uB9AC\uAE30\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: setDataHandler\uC5D0 \uB300\uD55C dataHandler \uC778\uC218\uAC00 \uB110\uC785\uB2C8\uB2E4.
+SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: \uCCA8\uBD80 \uD30C\uC77C\uC744 \uC678\uBD80\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: MIME \uD5E4\uB354\uB97C \uBCF5\uC0AC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: MIME \uD5E4\uB354\uB97C \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uBCF5\uC0AC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+# Usage not found. TODO Remove
+#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0}
+SAAJ0508.soap.cannot.register.handlers=SAAJ050: JAF \uBA85\uB839 \uB9F5\uC5D0\uC11C \uCC98\uB9AC\uAE30\uB97C \uB4F1\uB85D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+
+SAAJ0510.soap.cannot.create.envelope=SAAJ0510: \uC81C\uACF5\uB41C \uC18C\uC2A4\uC5D0\uC11C Envelope\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0511.soap.cannot.create.envelope=SAAJ0511: \uC81C\uACF5\uB41C \uC18C\uC2A4\uC5D0\uC11C Envelope\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0512.soap.incorrect.factory.used=SAAJ0512: Envelope\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC74C: \uD2B8\uB9AC \uC0DD\uC131 \uC911 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC740 \uD329\uD1A0\uB9AC\uAC00 \uC0AC\uC6A9\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+SAAJ0513.soap.unknown.ns=SAAJ0513: \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uB97C \uC778\uC2DD\uD560 \uC218 \uC5C6\uC5B4 \uC81C\uACF5\uB41C \uC18C\uC2A4\uC5D0\uC11C Envelope\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: \uB8E8\uD2B8 \uC694\uC18C\uAC00 Envelope\uB85C \uBA85\uBA85\uB418\uC9C0 \uC54A\uC544 \uC81C\uACF5\uB41C \uC18C\uC2A4\uC5D0\uC11C Envelope\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0515.source.reset.exception=SAAJ0515: soap-part \uCF58\uD150\uCE20 \uC18C\uC2A4\uB97C \uC7AC\uC124\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+
+SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler\uC5D0\uB294 \uC774\uBBF8\uC9C0 \uAC1D\uCCB4\uAC00 \uD544\uC694\uD558\uC9C0\uB9CC {0} \uC720\uD615\uC758 \uAC1D\uCCB4\uAC00 \uC81C\uACF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type\uC774 {0}(\uC73C)\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: ImageContentHandler\uC5D0 \uB300\uD55C content-type {0}\uC774(\uAC00) \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
+SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: ImageContentHandler\uC5D0 \uB300\uD55C \uAC1D\uCCB4\uAC00 \uB110\uC785\uB2C8\uB2E4.
+SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: \uC2A4\uD2B8\uB9BC\uC5D0\uC11C JPEG \uC778\uCF54\uB354\uB97C \uC2E4\uD589\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0525.soap.cannot.encode.img=SAAJ0525: \uC2A4\uD2B8\uB9BC\uC5D0 \uC774\uBBF8\uC9C0\uB97C \uC778\uCF54\uB529\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0526.soap.unsupported.mime.type=SAAJ0526: {0}\uC740(\uB294) \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uB294 mime \uC720\uD615\uC785\uB2C8\uB2E4.
+
+SAAJ0530.soap.unknown.Content-Type=SAAJ0530: \uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 Content-Type
+SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: \uCF58\uD150\uCE20 \uC720\uD615\uC758 \uAD6C\uBB38\uC744 \uBD84\uC11D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0532.soap.no.Content-Type=SAAJ0532: Content-Type\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: \uBA54\uC2DC\uC9C0\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC74C: SOAP \uBC84\uC804\uC5D0 \uB300\uD55C content-type\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. {0}\uC744(\uB97C) \uAC00\uC838\uC654\uC9C0\uB9CC {1}\uC774(\uAC00) \uD544\uC694\uD569\uB2C8\uB2E4.
+SAAJ0534.soap.unknown.Content-Type=SAAJ0534: \uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 Content-Type
+SAAJ0535.soap.cannot.internalize.message=SAAJ0535: \uBA54\uC2DC\uC9C0\uB97C \uB0B4\uBD80\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type\uC740 Multipart/Related\uC5EC\uC57C \uD558\uBA70 \uC720\uD615\uC774 text/xml \uB610\uB294 application/soap+xml\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+SAAJ0537.soap.invalid.content-type=SAAJ0537: Content-Type\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. SOAP \uBA54\uC2DC\uC9C0\uAC00 \uC544\uB2CC \uC624\uB958 \uBA54\uC2DC\uC9C0\uC77C \uC218 \uC788\uC2B5\uB2C8\uB2E4.
+SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: SOAP \uBA54\uC2DC\uC9C0\uB97C Multipart \uAC1D\uCCB4\uB85C \uBCC0\uD658\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: saveChanges\uC5D0\uC11C \uD5E4\uB354 \uC2A4\uD2B8\uB9BC\uC744 \uAC00\uC838\uC62C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: Multipart \uBA54\uC2DC\uC9C0\uB97C \uC800\uC7A5\uD558\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
+SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: \uC791\uC5C5\uC744 \uC644\uB8CC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uB2E8\uD3B8\uC774 SOAP \uBD80\uBD84\uC5D0 \uBC14\uC778\uB4DC\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: \uC9C0\uCE68 \uCC98\uB9AC\uB294 SOAP \uBB38\uC11C\uC5D0\uC11C \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: \uC5D4\uD2F0\uD2F0 \uCC38\uC870\uB294 SOAP \uBB38\uC11C\uC5D0\uC11C \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: \uC18C\uC2A4\uC5D0 \uC801\uD569\uD55C \uC77D\uAE30 \uC7A5\uCE58 \uB610\uB294 InputStream\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: SOAPPart\uC5D0 \uB300\uD55C \uC18C\uC2A4\uB97C \uC124\uC815\uD558\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
+SAAJ0546.soap.stream.incorrect.type=SAAJ0546: \uB0B4\uBD80 \uC624\uB958: \uC2A4\uD2B8\uB9BC\uC758 \uC720\uD615\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+SAAJ0547.soap.cannot.externalize=SAAJ0547: \uC678\uBD80\uD654\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
+SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: \uD5E4\uB354\uB97C \uC678\uBD80\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: SOAP \uBD80\uBD84 {0}\uC5D0 \uB300\uD55C Content-Type\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+SAAJ0550.soap.null.headers=SAAJ0550: \uBA54\uC2DC\uC9C0\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC74C: \uD5E4\uB354\uB294 \uB110\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0551.soap.unsupported.encoding=SAAJ0551: {0}\uC740(\uB294) \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uB294 \uC778\uCF54\uB529\uC785\uB2C8\uB2E4.
+SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: XML \uC120\uC5B8\uC758 \uAD6C\uBB38 \uBD84\uC11D\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: SOAPPart\uC758 renameNode\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: SOAPPart\uC758 normalizeDocument\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: SOAPPart\uC758 getDomConfig\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: SOAPPart\uC758 adoptNode\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: SOAPPart\uC758 setDocumentURI\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: SOAPPart\uC758 getDocumentURI\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: SOAPPart\uC758 setStrictErrorChecking\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: SOAPPart\uC758 getInputEncoding\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: SOAPPart\uC758 getXmlEncoding\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: SOAPPart\uC758 getXmlStandalone\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: SOAPPart\uC758 setXmlStandalone\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: SOAPPart\uC758 getXmlVersion\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: SOAPPart\uC758 setXmlVersion\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: SOAPPart\uC758 getStrictErrorChecking\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement"
+SAAJ0567.soap.null.input=SAAJ0567: {1}\uC5D0 \uB300\uD55C {0} \uC778\uC218\uAC00 \uB110\uC785\uB2C8\uB2E4.
+SAAJ0568.soap.unsupported.protocol=SAAJ0568: {0} \uD504\uB85C\uD1A0\uCF5C\uC740 {1}\uC744(\uB97C) \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory"
+SAAJ0569.soap.unknown.protocol=SAAJ0569: {1} \uC0DD\uC131\uC744 \uC704\uD574 \uC54C \uC218 \uC5C6\uB294 \uD504\uB85C\uD1A0\uCF5C {0}\uC774(\uAC00) \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: SOAP \uBD80\uBD84\uC758 \uC0C1\uC704 \uC694\uC18C\uAC00 \uC815\uC758\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
+SAAJ0571.soappart.setValue.not.defined=SAAJ0571: SOAP \uBD80\uBD84\uC758 \uC124\uC815 \uAC12\uC774 \uC815\uC758\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
+SAAJ0572.soap.no.content.for.attachment=SAAJ0572: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uACFC \uC5F0\uAD00\uB41C \uB370\uC774\uD130 \uCC98\uB9AC\uAE30/\uCF58\uD150\uCE20\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: \uC6D0\uC2DC \uCCA8\uBD80 \uD30C\uC77C \uCF58\uD150\uCE20\uB97C \uC77D\uB294 \uC911 IOException\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
+SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD574 \uB370\uC774\uD130 \uCC98\uB9AC\uAE30\uC5D0\uC11C \uC785\uB825 \uC2A4\uD2B8\uB9BC\uC744 \uAC00\uC838\uC624\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 IOException\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
+SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD55C \uCF58\uD150\uCE20\uB97C \uAC80\uC0C9\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
+SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD55C \uC6D0\uC2DC \uCF58\uD150\uCE20\uB97C \uC124\uC815\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
+SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD55C \uC6D0\uC2DC \uCF58\uD150\uCE20\uB97C \uAC00\uC838\uC624\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
+SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD55C \uB514\uCF54\uB529\uB41C \uCF58\uD150\uCE20\uB97C \uC124\uC815\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
+SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD55C \uC778\uCF54\uB529\uB41C \uCF58\uD150\uCE20\uB97C \uAC00\uC838\uC624\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
+SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: CID\uAC00 {0}\uC778 \uCCA8\uBD80 \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0591.soap.exception.in.set.property=SAAJ0591: SOAP \uBA54\uC2DC\uC9C0\uC5D0\uC11C {1} \uC18D\uC131\uC744 \uC124\uC815\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 {0} \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
+
+# Info messages
+SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type\uC774 {0}(\uC73C)\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_pt_BR.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,110 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for soap pkg
+# Error messages
+SAAJ0501.soap.data.handler.err=SAAJ0501: erro do handler de dados: {0}
+SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: n\u00E3o h\u00E1 handler de dados associado a este anexo
+SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: argumento dataHandler nulo para setDataHandler
+SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: n\u00E3o \u00E9 poss\u00EDvel externalizar o anexo
+SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: n\u00E3o \u00E9 poss\u00EDvel copiar o cabe\u00E7alho MIME
+SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: n\u00E3o \u00E9 poss\u00EDvel copiar cabe\u00E7alhos MIME no anexo
+# Usage not found. TODO Remove
+#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0}
+SAAJ0508.soap.cannot.register.handlers=SAAJ050: n\u00E3o \u00E9 poss\u00EDvel registrar os handlers no mapa de comando JAF
+
+SAAJ0510.soap.cannot.create.envelope=SAAJ0510: n\u00E3o \u00E9 poss\u00EDvel criar o envelope da origem fornecida
+SAAJ0511.soap.cannot.create.envelope=SAAJ0511: n\u00E3o \u00E9 poss\u00EDvel criar o envelope da origem fornecida
+SAAJ0512.soap.incorrect.factory.used=SAAJ0512: n\u00E3o \u00E9 poss\u00EDvel criar o envelope: factory incorreta usada durante a constru\u00E7\u00E3o da \u00E1rvore
+SAAJ0513.soap.unknown.ns=SAAJ0513: n\u00E3o \u00E9 poss\u00EDvel criar o envelope da origem fornecida porque o namespace n\u00E3o era reconhecido
+SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: n\u00E3o \u00E9 poss\u00EDvel criar o envelope da origem fornecida porque o elemento-raiz n\u00E3o \u00E9 um Envelope nomeado
+SAAJ0515.source.reset.exception=SAAJ0515: n\u00E3o \u00E9 poss\u00EDvel redefinir a origem de conte\u00FAdo da parte de soap
+
+SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler requer objeto da Imagem, mas foi fornecido o objeto do tipo {0}
+SAAJ0521.soap.set.Content-Type=SAAJ0521: Tipo de Conte\u00FAdo definido como {0}
+SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: tipo de conte\u00FAdo {0} inv\u00E1lido para ImageContentHandler
+SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: objeto nulo para ImageContentHandler
+SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: n\u00E3o \u00E9 poss\u00EDvel executar o Codificador JPEG em um fluxo
+SAAJ0525.soap.cannot.encode.img=SAAJ0525: n\u00E3o \u00E9 poss\u00EDvel codificar a imagem em um fluxo
+SAAJ0526.soap.unsupported.mime.type=SAAJ0526: tipo de mime {0} n\u00E3o suportado
+
+SAAJ0530.soap.unknown.Content-Type=SAAJ0530: tipo de Conte\u00FAdo N\u00E3o Reconhecido
+SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: n\u00E3o \u00E9 poss\u00EDvel fazer parse do tipo de conte\u00FAdo
+SAAJ0532.soap.no.Content-Type=SAAJ0532: tipo de Conte\u00FAdo Inexistente
+SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: n\u00E3o \u00E9 poss\u00EDvel criar a mensagem: tipo de conte\u00FAdo incorreto para a vers\u00E3o SOAP. Obteve {0}, mas esperava {1}
+SAAJ0534.soap.unknown.Content-Type=SAAJ0534: tipo de Conte\u00FAdo N\u00E3o Reconhecido
+SAAJ0535.soap.cannot.internalize.message=SAAJ0535: n\u00E3o \u00E9 poss\u00EDvel internalizar a mensagem
+SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: o Tipo de Conte\u00FAdo precisa ser de V\u00E1rias Partes/Relacionado com tipo=texto/xml ou aplica\u00E7\u00E3o/soap+xml
+SAAJ0537.soap.invalid.content-type=SAAJ0537: tipo de Conte\u00FAdo Inv\u00E1lido. Pode ser uma mensagem de erro, em vez de uma mensagem SOAP
+SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: n\u00E3o \u00E9 poss\u00EDvel converter a mensagem SOAP em um objeto de V\u00E1rias partes
+SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: n\u00E3o \u00E9 poss\u00EDvel obter fluxo do cabe\u00E7alho em saveChanges
+SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: erro ao salvar uma mensagem de v\u00E1rias partes
+SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: n\u00E3o foi poss\u00EDvel concluir a opera\u00E7\u00E3o. Fragmento n\u00E3o vinculado \u00E0 parte de SOAP
+SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: as instru\u00E7\u00F5es de processamento n\u00E3o s\u00E3o permitidas nos documentos de SOAP
+SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: refer\u00EAncias da entidade n\u00E3o s\u00E3o permitidas nos documentos SOAP
+SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: a origem n\u00E3o tem um Reader ou InputStream v\u00E1lido
+SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: erro ao definir a origem de SOAPPart
+SAAJ0546.soap.stream.incorrect.type=SAAJ0546: Erro interno: o fluxo n\u00E3o \u00E9 do tipo correto
+SAAJ0547.soap.cannot.externalize=SAAJ0547: erro ao tentar externalizar
+SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: n\u00E3o \u00E9 poss\u00EDvel externalizar o cabe\u00E7alho
+SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: tipo de Conte\u00FAdo Inv\u00E1lido para a Parte {0} de SOAP
+SAAJ0550.soap.null.headers=SAAJ0550: n\u00E3o \u00E9 poss\u00EDvel criar a mensagem: os cabe\u00E7alhos n\u00E3o podem ser nulos
+SAAJ0551.soap.unsupported.encoding=SAAJ0551: codifica\u00E7\u00E3o n\u00E3o suportada {0}
+SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: falha ao fazer parse da declara\u00E7\u00E3o XML
+SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: renameNode em SOAPPart n\u00E3o suportado
+SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: normalizeDocument em SOAPPart n\u00E3o suportado
+SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: getDomConfig em SOAPPart n\u00E3o suportado
+SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: adoptNode em SOAPPart n\u00E3o suportado
+SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: setDocumentURI em SOAPPart n\u00E3o suportado
+SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: getDocumentURI em SOAPPart n\u00E3o suportado
+SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: setStrictErrorChecking em SOAPPart n\u00E3o suportado
+SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: getInputEncoding em SOAPPart n\u00E3o suportado
+SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: getXmlEncoding em SOAPPart n\u00E3o suportado
+SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: getXmlStandalone em SOAPPart n\u00E3o suportado
+SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: setXmlStandalone em SOAPPart n\u00E3o suportado
+SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: getXmlVersion em SOAPPart n\u00E3o suportado
+SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: setXmlVersion em SOAPPart n\u00E3o suportado
+SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: getStrictErrorChecking em SOAPPart n\u00E3o suportado
+# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement"
+SAAJ0567.soap.null.input=SAAJ0567: argumento {0} nulo para {1}
+SAAJ0568.soap.unsupported.protocol=SAAJ0568: o protocolo {0} n\u00E3o suporta {1}
+# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory"
+SAAJ0569.soap.unknown.protocol=SAAJ0569: protocolo {0} Desconhecido especificado para criar {1}
+SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: o elemento pai da parte de soap n\u00E3o foi definido
+SAAJ0571.soappart.setValue.not.defined=SAAJ0571: o valor de defini\u00E7\u00E3o de uma parte de soap n\u00E3o foi definido
+SAAJ0572.soap.no.content.for.attachment=SAAJ0572: n\u00E3o h\u00E1 handler/conte\u00FAdo de dados associado a este anexo
+SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: IOException ao ler o conte\u00FAdo do anexo bruto
+SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: IOException ao tentar obter o inputstream de datahandler deste anexo
+SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: exce\u00E7\u00E3o ao tentar recuperar o conte\u00FAdo deste anexo
+SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: exce\u00E7\u00E3o ao tentar definir o conte\u00FAdo Bruto deste anexo
+SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: exce\u00E7\u00E3o ao tentar definir o conte\u00FAdo Bruto deste anexo
+SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: exce\u00E7\u00E3o ao tentar definir o conte\u00FAdo Decodificado deste anexo
+SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: exce\u00E7\u00E3o ao tentar obter o conte\u00FAdo Codificado deste anexo
+SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: n\u00E3o \u00E9 poss\u00EDvel localizar o anexo como o cid {0}
+SAAJ0591.soap.exception.in.set.property=SAAJ0591: exce\u00E7\u00E3o {0} ao tentar definir a Propriedade {1} na Mensagem SOAP
+
+# Info messages
+SAAJ0580.soap.set.Content-Type=SAAJ0580: Tipo de Conte\u00FAdo definido como {0}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_zh_CN.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,110 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for soap pkg
+# Error messages
+SAAJ0501.soap.data.handler.err=SAAJ0501: \u6570\u636E\u5904\u7406\u7A0B\u5E8F\u9519\u8BEF: {0}
+SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: \u6CA1\u6709\u4E0E\u6B64\u9644\u4EF6\u5173\u8054\u7684\u6570\u636E\u5904\u7406\u7A0B\u5E8F
+SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: setDataHandler \u7684 dataHandler \u53C2\u6570\u4E3A\u7A7A\u503C
+SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: \u65E0\u6CD5\u4F7F\u9644\u4EF6\u5916\u90E8\u5316
+SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: \u65E0\u6CD5\u590D\u5236 MIME \u6807\u5934
+SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: \u65E0\u6CD5\u5C06 MIME \u6807\u5934\u590D\u5236\u5230\u9644\u4EF6\u4E2D
+# Usage not found. TODO Remove
+#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0}
+SAAJ0508.soap.cannot.register.handlers=SAAJ050: \u65E0\u6CD5\u6CE8\u518C JAF \u547D\u4EE4\u6620\u5C04\u4E2D\u7684\u5904\u7406\u7A0B\u5E8F
+
+SAAJ0510.soap.cannot.create.envelope=SAAJ0510: \u65E0\u6CD5\u4ECE\u7ED9\u5B9A\u6E90\u521B\u5EFA\u4FE1\u5C01
+SAAJ0511.soap.cannot.create.envelope=SAAJ0511: \u65E0\u6CD5\u4ECE\u7ED9\u5B9A\u6E90\u521B\u5EFA\u4FE1\u5C01
+SAAJ0512.soap.incorrect.factory.used=SAAJ0512: \u65E0\u6CD5\u521B\u5EFA\u4FE1\u5C01: \u5728\u6811\u6784\u9020\u671F\u95F4\u4F7F\u7528\u7684\u5DE5\u5382\u4E0D\u6B63\u786E
+SAAJ0513.soap.unknown.ns=SAAJ0513: \u65E0\u6CD5\u4ECE\u7ED9\u5B9A\u6E90\u521B\u5EFA\u4FE1\u5C01, \u56E0\u4E3A\u65E0\u6CD5\u8BC6\u522B\u540D\u79F0\u7A7A\u95F4
+SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: \u65E0\u6CD5\u4ECE\u7ED9\u5B9A\u6E90\u521B\u5EFA\u4FE1\u5C01, \u56E0\u4E3A\u6839\u5143\u7D20\u4E0D\u662F\u547D\u540D\u7684\u4FE1\u5C01
+SAAJ0515.source.reset.exception=SAAJ0515: \u65E0\u6CD5\u91CD\u7F6E soap-part \u5185\u5BB9\u6E90
+
+SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler \u9700\u8981 Image \u5BF9\u8C61, \u4F46\u5374\u5F97\u5230\u7C7B\u578B\u4E3A{0}\u7684\u5BF9\u8C61
+SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type \u8BBE\u7F6E\u4E3A{0}
+SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: ImageContentHandler \u7684 content-type {0}\u65E0\u6548
+SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: ImageContentHandler \u7684\u5BF9\u8C61\u4E3A\u7A7A\u503C
+SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: \u65E0\u6CD5\u5728\u6D41\u4E0A\u8FD0\u884C JPEG \u7F16\u7801\u5668
+SAAJ0525.soap.cannot.encode.img=SAAJ0525: \u65E0\u6CD5\u5C06\u56FE\u50CF\u7F16\u7801\u4E3A\u6D41
+SAAJ0526.soap.unsupported.mime.type=SAAJ0526: \u4E0D\u652F\u6301\u7684 mime \u7C7B\u578B{0}
+
+SAAJ0530.soap.unknown.Content-Type=SAAJ0530: \u65E0\u6CD5\u8BC6\u522B\u7684 Content-Type
+SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: \u65E0\u6CD5\u89E3\u6790\u5185\u5BB9\u7C7B\u578B
+SAAJ0532.soap.no.Content-Type=SAAJ0532: \u7F3A\u5C11 Content-Type
+SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: \u65E0\u6CD5\u521B\u5EFA\u6D88\u606F: SOAP \u7248\u672C\u7684 content-type \u4E0D\u6B63\u786E\u3002\u5F97\u5230\u7684\u662F{0}, \u4F46\u5E94\u4E3A{1}
+SAAJ0534.soap.unknown.Content-Type=SAAJ0534: \u65E0\u6CD5\u8BC6\u522B\u7684 Content-Type
+SAAJ0535.soap.cannot.internalize.message=SAAJ0535: \u65E0\u6CD5\u4F7F\u6D88\u606F\u5185\u90E8\u5316
+SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type \u5FC5\u987B\u662F\u201C\u591A\u90E8\u5206/\u76F8\u5173\u201D\u5E76\u4E14\u5E26\u6709 type=text/xml \u6216 application/soap+xml
+SAAJ0537.soap.invalid.content-type=SAAJ0537: Content-Type \u65E0\u6548\u3002\u53EF\u4EE5\u662F\u9519\u8BEF\u6D88\u606F, \u4F46\u4E0D\u80FD\u662F SOAP \u6D88\u606F
+SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: \u65E0\u6CD5\u5C06 SOAP \u6D88\u606F\u8F6C\u6362\u4E3A\u591A\u90E8\u5206\u5BF9\u8C61
+SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: \u65E0\u6CD5\u5728 saveChanges \u4E2D\u83B7\u53D6\u6807\u5934\u6D41
+SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: \u4FDD\u5B58\u591A\u90E8\u5206\u6D88\u606F\u671F\u95F4\u51FA\u9519
+SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: \u65E0\u6CD5\u5B8C\u6210\u64CD\u4F5C\u3002\u7247\u6BB5\u672A\u7ED1\u5B9A\u5230 SOAP \u90E8\u5206
+SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: SOAP \u6587\u6863\u4E2D\u4E0D\u5141\u8BB8\u5904\u7406\u6307\u4EE4
+SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: SOAP \u6587\u6863\u4E2D\u4E0D\u5141\u8BB8\u5B9E\u4F53\u5F15\u7528
+SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: \u6E90\u6CA1\u6709\u6709\u6548\u7684\u8BFB\u8FDB\u7A0B\u6216 InputStream
+SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: \u4E3A SOAPPart \u8BBE\u7F6E\u6E90\u65F6\u51FA\u9519
+SAAJ0546.soap.stream.incorrect.type=SAAJ0546: \u5185\u90E8\u9519\u8BEF: \u6D41\u7684\u7C7B\u578B\u4E0D\u6B63\u786E
+SAAJ0547.soap.cannot.externalize=SAAJ0547: \u5C1D\u8BD5\u5916\u90E8\u5316\u65F6\u51FA\u9519
+SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: \u65E0\u6CD5\u4F7F\u6807\u5934\u5916\u90E8\u5316
+SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: SOAP \u90E8\u5206{0}\u7684 Content-Type \u9519\u8BEF
+SAAJ0550.soap.null.headers=SAAJ0550: \u65E0\u6CD5\u521B\u5EFA\u6D88\u606F: \u6807\u5934\u4E0D\u80FD\u4E3A\u7A7A\u503C
+SAAJ0551.soap.unsupported.encoding=SAAJ0551: \u4E0D\u652F\u6301\u7684\u7F16\u7801{0}
+SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: \u672A\u80FD\u89E3\u6790 XML \u58F0\u660E
+SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 renameNode
+SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 normalizeDocument
+SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getDomConfig
+SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 adoptNode
+SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 setDocumentURI
+SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getDocumentURI
+SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 setStrictErrorChecking
+SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getInputEncoding
+SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getXmlEncoding
+SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getXmlStandalone
+SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 setXmlStandalone
+SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getXmlVersion
+SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 setXmlVersion
+SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getStrictErrorChecking
+# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement"
+SAAJ0567.soap.null.input=SAAJ0567: {1}\u7684{0}\u53C2\u6570\u4E3A\u7A7A\u503C
+SAAJ0568.soap.unsupported.protocol=SAAJ0568: \u534F\u8BAE{0}\u4E0D\u652F\u6301{1}
+# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory"
+SAAJ0569.soap.unknown.protocol=SAAJ0569: \u6307\u5B9A\u7528\u4E8E\u521B\u5EFA{1}\u7684\u534F\u8BAE{0}\u672A\u77E5
+SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: \u672A\u5B9A\u4E49 soap \u90E8\u5206\u7684\u7236\u5143\u7D20
+SAAJ0571.soappart.setValue.not.defined=SAAJ0571: \u672A\u5B9A\u4E49 soap \u90E8\u5206\u7684\u8BBE\u7F6E\u503C
+SAAJ0572.soap.no.content.for.attachment=SAAJ0572: \u6CA1\u6709\u4E0E\u6B64\u9644\u4EF6\u5173\u8054\u7684\u6570\u636E\u5904\u7406\u7A0B\u5E8F/\u5185\u5BB9
+SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: \u8BFB\u53D6\u539F\u59CB\u9644\u4EF6\u5185\u5BB9\u65F6\u51FA\u73B0 IOException
+SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: \u5C1D\u8BD5\u4ECE\u6B64\u9644\u4EF6\u7684\u6570\u636E\u5904\u7406\u7A0B\u5E8F\u83B7\u53D6\u8F93\u5165\u6D41\u65F6\u51FA\u73B0 IOException
+SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: \u5C1D\u8BD5\u68C0\u7D22\u6B64\u9644\u4EF6\u7684\u5185\u5BB9\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF
+SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: \u5C1D\u8BD5\u8BBE\u7F6E\u6B64\u9644\u4EF6\u7684\u539F\u59CB\u5185\u5BB9\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF
+SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: \u5C1D\u8BD5\u83B7\u53D6\u6B64\u9644\u4EF6\u7684\u539F\u59CB\u5185\u5BB9\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF
+SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: \u5C1D\u8BD5\u8BBE\u7F6E\u6B64\u9644\u4EF6\u7684\u89E3\u7801\u5185\u5BB9\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF
+SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: \u5C1D\u8BD5\u83B7\u53D6\u6B64\u9644\u4EF6\u7684\u7F16\u7801\u5185\u5BB9\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF
+SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: \u65E0\u6CD5\u627E\u5230\u5177\u6709 cid {0} \u7684\u9644\u4EF6
+SAAJ0591.soap.exception.in.set.property=SAAJ0591: \u5C1D\u8BD5\u8BBE\u7F6E SOAP \u6D88\u606F\u7684\u5C5E\u6027{1}\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF{0}
+
+# Info messages
+SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type \u8BBE\u7F6E\u4E3A{0}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_zh_TW.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,110 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for soap pkg
+# Error messages
+SAAJ0501.soap.data.handler.err=SAAJ0501: \u8CC7\u6599\u8655\u7406\u7A0B\u5F0F\u932F\u8AA4: {0}
+SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: \u6C92\u6709\u8207\u6B64\u9644\u4EF6\u76F8\u95DC\u806F\u7684\u8CC7\u6599\u8655\u7406\u7A0B\u5F0F
+SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: setDataHandler \u7684 dataHandler \u5F15\u6578\u70BA\u7A7A\u503C
+SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: \u7121\u6CD5\u5C07\u9644\u4EF6\u5916\u90E8\u5316
+SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: \u7121\u6CD5\u8907\u88FD MIME \u6A19\u982D
+SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: \u7121\u6CD5\u5C07 MIME \u6A19\u982D\u8907\u88FD\u5230\u9644\u4EF6\u4E2D
+# Usage not found. TODO Remove
+#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0}
+SAAJ0508.soap.cannot.register.handlers=SAAJ050: \u7121\u6CD5\u5728 JAF \u547D\u4EE4\u5C0D\u61C9\u4E2D\u8A3B\u518A\u8655\u7406\u7A0B\u5F0F
+
+SAAJ0510.soap.cannot.create.envelope=SAAJ0510: \u7121\u6CD5\u5F9E\u6307\u5B9A\u7684\u4F86\u6E90\u5EFA\u7ACB\u9644\u52A0\u8A0A\u606F
+SAAJ0511.soap.cannot.create.envelope=SAAJ0511: \u7121\u6CD5\u5F9E\u6307\u5B9A\u7684\u4F86\u6E90\u5EFA\u7ACB\u9644\u52A0\u8A0A\u606F
+SAAJ0512.soap.incorrect.factory.used=SAAJ0512: \u7121\u6CD5\u5EFA\u7ACB\u9644\u52A0\u8A0A\u606F: \u5EFA\u69CB\u6A39\u72C0\u7D50\u69CB\u6642\u4F7F\u7528\u4E86\u4E0D\u6B63\u78BA\u7684\u8655\u7406\u7AD9
+SAAJ0513.soap.unknown.ns=SAAJ0513: \u7121\u6CD5\u5F9E\u6307\u5B9A\u7684\u4F86\u6E90\u5EFA\u7ACB\u9644\u52A0\u8A0A\u606F, \u56E0\u70BA\u7121\u6CD5\u8FA8\u8B58\u8A72\u547D\u540D\u7A7A\u9593
+SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: \u7121\u6CD5\u5F9E\u6307\u5B9A\u7684\u4F86\u6E90\u5EFA\u7ACB\u9644\u52A0\u8A0A\u606F, \u56E0\u70BA\u6839\u5143\u7D20\u4E0D\u662F\u6307\u5B9A\u7684 Envelope
+SAAJ0515.source.reset.exception=SAAJ0515: \u7121\u6CD5\u91CD\u8A2D soap-part \u5167\u5BB9\u4F86\u6E90
+
+SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler \u9700\u8981 Image \u7269\u4EF6, \u4F46\u662F\u63D0\u4F9B\u7684\u662F {0} \u985E\u578B\u7684\u7269\u4EF6
+SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type \u8A2D\u70BA {0}
+SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: ImageContentHandler \u7684 content-type {0} \u7121\u6548
+SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: ImageContentHandler \u7684\u7269\u4EF6\u70BA\u7A7A\u503C
+SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: \u7121\u6CD5\u5728\u4E32\u6D41\u4E0A\u57F7\u884C JPEG \u7DE8\u78BC\u5668
+SAAJ0525.soap.cannot.encode.img=SAAJ0525: \u7121\u6CD5\u5C07\u5F71\u50CF\u7DE8\u78BC\u70BA\u4E32\u6D41
+SAAJ0526.soap.unsupported.mime.type=SAAJ0526: \u4E0D\u652F\u63F4\u7684 MIME \u985E\u578B {0}
+
+SAAJ0530.soap.unknown.Content-Type=SAAJ0530: \u7121\u6CD5\u8FA8\u8B58\u7684 Content-Type
+SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: \u7121\u6CD5\u5256\u6790\u5167\u5BB9\u985E\u578B
+SAAJ0532.soap.no.Content-Type=SAAJ0532: \u7F3A\u5C11 Content-Type
+SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: \u7121\u6CD5\u5EFA\u7ACB\u8A0A\u606F: SOAP \u7248\u672C\u7684 content-type \u4E0D\u6B63\u78BA. \u5F97\u5230 {0}, \u4F46\u61C9\u8A72\u662F {1}
+SAAJ0534.soap.unknown.Content-Type=SAAJ0534: \u7121\u6CD5\u8FA8\u8B58\u7684 Content-Type
+SAAJ0535.soap.cannot.internalize.message=SAAJ0535: \u7121\u6CD5\u5C07\u8A0A\u606F\u5167\u90E8\u5316
+SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type \u5FC5\u9808\u662F Multipart/Related, \u4E14\u542B type=text/xml \u6216 application/soap+xml
+SAAJ0537.soap.invalid.content-type=SAAJ0537: \u7121\u6548\u7684 Content-Type. \u53EF\u80FD\u662F\u53D6\u4EE3 SOAP \u8A0A\u606F\u7684\u932F\u8AA4\u8A0A\u606F
+SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: \u7121\u6CD5\u5C07 SOAP \u8A0A\u606F\u8F49\u63DB\u70BA Multipart \u7269\u4EF6
+SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: \u7121\u6CD5\u81EA saveChanges \u53D6\u5F97\u6A19\u982D\u4E32\u6D41
+SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: \u5132\u5B58\u591A\u91CD\u90E8\u5206\u8A0A\u606F\u6642\u767C\u751F\u932F\u8AA4
+SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: \u7121\u6CD5\u5B8C\u6210\u4F5C\u696D. \u7247\u6BB5\u672A\u9023\u7D50\u81F3 SOAP \u90E8\u5206
+SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: SOAP \u6587\u4EF6\u4E2D\u4E0D\u5141\u8A31\u300C\u8655\u7406\u6307\u793A\u300D
+SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: SOPA \u6587\u4EF6\u4E2D\u4E0D\u5141\u8A31\u300C\u500B\u9AD4\u53C3\u7167\u300D
+SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: \u4F86\u6E90\u6C92\u6709\u6709\u6548\u7684 Reader \u6216 InputStream
+SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: \u8A2D\u5B9A SOAPPart \u7684\u4F86\u6E90\u6642\u767C\u751F\u932F\u8AA4
+SAAJ0546.soap.stream.incorrect.type=SAAJ0546: \u5167\u90E8\u932F\u8AA4: \u4E32\u6D41\u4E0D\u662F\u6B63\u78BA\u7684\u985E\u578B
+SAAJ0547.soap.cannot.externalize=SAAJ0547: \u5617\u8A66\u5916\u90E8\u5316\u6642\u767C\u751F\u932F\u8AA4
+SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: \u7121\u6CD5\u5C07\u6A19\u982D\u5916\u90E8\u5316
+SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: SOAP \u90E8\u5206 {0} \u7684 Content-Type \u932F\u8AA4
+SAAJ0550.soap.null.headers=SAAJ0550: \u7121\u6CD5\u5EFA\u7ACB\u8A0A\u606F: \u6A19\u982D\u4E0D\u5F97\u662F\u7A7A\u503C
+SAAJ0551.soap.unsupported.encoding=SAAJ0551: \u4E0D\u652F\u63F4\u7684\u7DE8\u78BC {0}
+SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: XML \u5BA3\u544A\u5256\u6790\u5931\u6557
+SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 renameNode
+SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 normalizeDocument
+SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getDomConfig
+SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 adoptNode
+SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 setDocumentURI
+SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getDocumentURI
+SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 setStrictErrorChecking
+SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getInputEncoding
+SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getXmlEncoding
+SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getXmlStandalone
+SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 setXmlStandalone
+SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getXmlVersion
+SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 setXmlVersion
+SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getStrictErrorChecking
+# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement"
+SAAJ0567.soap.null.input=SAAJ0567: {1} \u7684 {0} \u5F15\u6578\u662F\u7A7A\u503C
+SAAJ0568.soap.unsupported.protocol=SAAJ0568: \u5354\u5B9A {0} \u4E0D\u652F\u63F4 {1}
+# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory"
+SAAJ0569.soap.unknown.protocol=SAAJ0569: \u5EFA\u7ACB {1} \u6642\u6307\u5B9A\u4E86\u4E0D\u660E\u7684\u5354\u5B9A {0}
+SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: \u672A\u5B9A\u7FA9 SOAP \u90E8\u5206\u7684\u7236\u9805\u5143\u7D20
+SAAJ0571.soappart.setValue.not.defined=SAAJ0571: \u672A\u5B9A\u7FA9 SOAP \u90E8\u5206\u7684\u8A2D\u5B9A\u503C
+SAAJ0572.soap.no.content.for.attachment=SAAJ0572: \u6C92\u6709\u8207\u6B64\u9644\u4EF6\u76F8\u95DC\u806F\u7684\u8CC7\u6599\u8655\u7406\u7A0B\u5F0F/\u5167\u5BB9
+SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: \u8B80\u53D6\u539F\u59CB\u9644\u4EF6\u5167\u5BB9\u6642\u767C\u751F IOException
+SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: \u5617\u8A66\u5F9E\u6B64\u9644\u4EF6\u7684 datahandler \u53D6\u5F97 inputstream \u6642\u767C\u751F IOException
+SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: \u5617\u8A66\u64F7\u53D6\u6B64\u9644\u4EF6\u7684\u5167\u5BB9\u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1
+SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: \u5617\u8A66\u8A2D\u5B9A\u6B64\u9644\u4EF6\u7684\u539F\u59CB\u5167\u5BB9\u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1
+SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: \u5617\u8A66\u53D6\u5F97\u6B64\u9644\u4EF6\u7684\u539F\u59CB\u5167\u5BB9\u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1
+SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: \u5617\u8A66\u8A2D\u5B9A\u6B64\u9644\u4EF6\u7684\u89E3\u78BC\u5167\u5BB9\u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1
+SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: \u5617\u8A66\u53D6\u5F97\u6B64\u9644\u4EF6\u7684\u89E3\u78BC\u5167\u5BB9\u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1
+SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: \u627E\u4E0D\u5230 cid \u70BA {0} \u7684\u9644\u4EF6
+SAAJ0591.soap.exception.in.set.property=SAAJ0591: \u5617\u8A66\u5728 SOAP \u8A0A\u606F\u4E0A\u8A2D\u5B9A\u7279\u6027 {1} \u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1 {0}
+
+# Info messages
+SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type \u8A2D\u70BA {0}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/MessageFactoryImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,147 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import java.io.*;
+import java.util.logging.Logger;
+
+import javax.xml.soap.*;
+import javax.xml.stream.XMLStreamReader;
+
+import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.ContentType;
+import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.ParseException;
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+import com.sun.xml.internal.messaging.saaj.soap.ver1_1.Message1_1Impl;
+import com.sun.xml.internal.messaging.saaj.soap.ver1_2.Message1_2Impl;
+import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
+import com.sun.xml.internal.messaging.saaj.util.TeeInputStream;
+
+/**
+ * A factory for creating SOAP messages.
+ *
+ * Converted to a placeholder for common functionality between SOAP
+ * implementations.
+ *
+ * @author Phil Goodwin (phil.goodwin@sun.com)
+ */
+public class MessageFactoryImpl extends MessageFactory {
+
+    protected static final Logger log =
+        Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
+                         "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
+
+    protected  OutputStream listener;
+
+    protected boolean lazyAttachments = false;
+
+    public  OutputStream listen(OutputStream newListener) {
+        OutputStream oldListener = listener;
+        listener = newListener;
+        return oldListener;
+    }
+
+    public SOAPMessage createMessage() throws SOAPException {
+        throw new UnsupportedOperationException();
+    }
+
+    public SOAPMessage createMessage(String protocol) throws SOAPException {
+        if (SOAPConstants.SOAP_1_1_PROTOCOL.equals(protocol))
+                return new com.sun.xml.internal.messaging.saaj.soap.ver1_1.Message1_1Impl();
+        else
+                return new com.sun.xml.internal.messaging.saaj.soap.ver1_2.Message1_2Impl();
+    }
+
+    public SOAPMessage createMessage(boolean isFastInfoset,
+        boolean acceptFastInfoset) throws SOAPException
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    public SOAPMessage createMessage(MimeHeaders headers, XMLStreamReader reader) throws SOAPException, IOException {
+        String contentTypeString = MessageImpl.getContentType(headers);
+
+        if (listener != null) {
+            throw new SOAPException("Listener OutputStream is not supported with XMLStreamReader");
+        }
+
+        try {
+            ContentType contentType = new ContentType(contentTypeString);
+            int stat = MessageImpl.identifyContentType(contentType);
+
+            if (MessageImpl.isSoap1_1Content(stat)) {
+                return new Message1_1Impl(headers,contentType,stat,reader);
+            } else if (MessageImpl.isSoap1_2Content(stat)) {
+                return new Message1_2Impl(headers,contentType,stat,reader);
+            } else {
+                log.severe("SAAJ0530.soap.unknown.Content-Type");
+                throw new SOAPExceptionImpl("Unrecognized Content-Type");
+            }
+        } catch (ParseException e) {
+            log.severe("SAAJ0531.soap.cannot.parse.Content-Type");
+            throw new SOAPExceptionImpl(
+                "Unable to parse content type: " + e.getMessage());
+        }
+    }
+    public SOAPMessage createMessage(MimeHeaders headers, InputStream in)
+        throws SOAPException, IOException {
+        String contentTypeString = MessageImpl.getContentType(headers);
+
+        if (listener != null) {
+            in = new TeeInputStream(in, listener);
+        }
+
+        try {
+            ContentType contentType = new ContentType(contentTypeString);
+            int stat = MessageImpl.identifyContentType(contentType);
+
+            if (MessageImpl.isSoap1_1Content(stat)) {
+                return new Message1_1Impl(headers,contentType,stat,in);
+            } else if (MessageImpl.isSoap1_2Content(stat)) {
+                return new Message1_2Impl(headers,contentType,stat,in);
+            } else {
+                log.severe("SAAJ0530.soap.unknown.Content-Type");
+                throw new SOAPExceptionImpl("Unrecognized Content-Type");
+            }
+        } catch (ParseException e) {
+            log.severe("SAAJ0531.soap.cannot.parse.Content-Type");
+            throw new SOAPExceptionImpl(
+                "Unable to parse content type: " + e.getMessage());
+        }
+    }
+
+    protected static final String getContentType(MimeHeaders headers) {
+        String[] values = headers.getHeader("Content-Type");
+        if (values == null)
+            return null;
+        else
+            return values[0];
+    }
+
+    public void setLazyAttachmentOptimization(boolean flag) {
+        lazyAttachments = flag;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/MessageImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,1486 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import java.io.*;
+import java.util.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.activation.DataHandler;
+import javax.activation.DataSource;
+import javax.xml.soap.*;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.transform.Source;
+import javax.xml.transform.stax.StAXSource;
+import javax.xml.transform.stream.StreamSource;
+
+import com.sun.xml.internal.messaging.saaj.packaging.mime.Header;
+import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.*;
+import com.sun.xml.internal.messaging.saaj.packaging.mime.util.*;
+import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException;
+
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl;
+import com.sun.xml.internal.messaging.saaj.util.*;
+import com.sun.xml.internal.org.jvnet.mimepull.MIMEPart;
+
+/**
+ * The message implementation for SOAP messages with
+ * attachments. Messages for specific profiles will likely extend this
+ * MessageImpl class and add more value for that particular profile.
+ *
+ * @author Anil Vijendran (akv@eng.sun.com)
+ * @author Rajiv Mordani (rajiv.mordani@sun.com)
+ * @author Manveen Kaur (manveen.kaur@sun.com)
+ */
+
+public abstract class MessageImpl
+    extends SOAPMessage
+    implements SOAPConstants {
+
+
+    public static final String CONTENT_ID             = "Content-ID";
+    public static final String CONTENT_LOCATION       = "Content-Location";
+
+    protected static final Logger log =
+        Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
+                         "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
+
+    protected static final int PLAIN_XML_FLAG      = 1;      // 00001
+    protected static final int MIME_MULTIPART_FLAG = 2;      // 00010
+    protected static final int SOAP1_1_FLAG = 4;             // 00100
+    protected static final int SOAP1_2_FLAG = 8;             // 01000
+    //protected static final int MIME_MULTIPART_XOP_FLAG = 14; // 01110
+    protected static final int MIME_MULTIPART_XOP_SOAP1_1_FLAG = 6;  // 00110
+    protected static final int MIME_MULTIPART_XOP_SOAP1_2_FLAG = 10; // 01010
+    protected static final int XOP_FLAG = 13;                // 01101
+    protected static final int FI_ENCODED_FLAG     = 16;     // 10000
+
+    protected MimeHeaders headers;
+    protected ContentType contentType;
+    protected SOAPPartImpl soapPartImpl;
+    protected FinalArrayList attachments;
+    protected boolean saved = false;
+    protected byte[] messageBytes;
+    protected int messageByteCount;
+    protected HashMap properties = new HashMap();
+
+    // used for lazy attachment initialization
+    protected MimeMultipart multiPart = null;
+    protected boolean attachmentsInitialized = false;
+
+    /**
+     * True if this part is encoded using Fast Infoset.
+     * MIME -> application/fastinfoset
+     */
+    protected boolean isFastInfoset = false;
+
+    /**
+     * True if the Accept header of this message includes
+     * application/fastinfoset
+     */
+    protected boolean acceptFastInfoset = false;
+
+    protected MimeMultipart mmp = null;
+
+    // if attachments are present, don't read the entire message in byte stream in saveTo()
+    private boolean optimizeAttachmentProcessing = true;
+
+    private InputStream inputStreamAfterSaveChanges = null;
+
+    public static final String LAZY_SOAP_BODY_PARSING = "saaj.lazy.soap.body";
+
+    // switch back to old MimeMultipart incase of problem
+    private static boolean switchOffBM = false;
+    private static boolean switchOffLazyAttachment = false;
+    private static boolean useMimePull = false;
+
+    static {
+            String s = SAAJUtil.getSystemProperty("saaj.mime.optimization");
+            if ((s != null) && s.equals("false")) {
+                switchOffBM = true;
+            }
+            s = SAAJUtil.getSystemProperty("saaj.lazy.mime.optimization");
+            if ((s != null) && s.equals("false")) {
+                switchOffLazyAttachment = true;
+            }
+            useMimePull = SAAJUtil.getSystemBoolean("saaj.use.mimepull");
+
+    }
+
+    //property to indicate optimized serialization for lazy attachments
+    private boolean lazyAttachments = false;
+
+    // most of the times, Content-Types are already all lower cased.
+    // String.toLowerCase() works faster in this case, so even if you
+    // are only doing one comparison, it pays off to use String.toLowerCase()
+    // than String.equalsIgnoreCase(). When you do more than one comparison,
+    // the benefits of String.toLowerCase() dominates.
+    //
+    //
+    // for FI,
+    //   use application/fastinfoset for SOAP 1.1
+    //   use application/soap+fastinfoset for SOAP 1.2
+    // to speed up comparisons, test methods always use lower cases.
+
+    /**
+     * @param primary
+     *      must be all lower case
+     * @param sub
+     *      must be all lower case
+     */
+    private static boolean isSoap1_1Type(String primary, String sub) {
+        return primary.equalsIgnoreCase("text") && sub.equalsIgnoreCase("xml")
+            || primary.equalsIgnoreCase("text") && sub.equalsIgnoreCase("xml-soap")
+            || primary.equals("application")
+               && sub.equals("fastinfoset");
+    }
+
+    /**
+     * @param type
+     *      must be all lower case
+     */
+    private static boolean isEqualToSoap1_1Type(String type) {
+        return type.startsWith("text/xml") ||
+               type.startsWith("application/fastinfoset");
+    }
+
+    /**
+     * @param primary
+     *      must be all lower case
+     * @param sub
+     *      must be all lower case
+     */
+    private static boolean isSoap1_2Type(String primary, String sub) {
+        return primary.equals("application")
+               && (sub.equals("soap+xml")
+                   || sub.equals("soap+fastinfoset"));
+    }
+
+    /**
+     * @param type
+     *      must be all lower case
+     */
+    private static boolean isEqualToSoap1_2Type(String type) {
+        return type.startsWith("application/soap+xml") ||
+               type.startsWith("application/soap+fastinfoset");
+    }
+
+    /**
+      * Construct a new message. This will be invoked before message
+      * sends.
+      */
+    protected MessageImpl() {
+        this(false, false);
+        attachmentsInitialized = true;
+    }
+
+    /**
+      * Construct a new message. This will be invoked before message
+      * sends.
+      */
+    protected MessageImpl(boolean isFastInfoset, boolean acceptFastInfoset) {
+        this.isFastInfoset = isFastInfoset;
+        this.acceptFastInfoset = acceptFastInfoset;
+
+        headers = new MimeHeaders();
+        headers.setHeader("Accept", getExpectedAcceptHeader());
+        contentType = new ContentType();
+    }
+
+    /**
+     * Shallow copy.
+     */
+    protected MessageImpl(SOAPMessage msg) {
+        if (!(msg instanceof MessageImpl)) {
+            // don't know how to handle this.
+        }
+        MessageImpl src = (MessageImpl) msg;
+        this.headers = src.headers;
+        this.soapPartImpl = src.soapPartImpl;
+        this.attachments = src.attachments;
+        this.saved = src.saved;
+        this.messageBytes = src.messageBytes;
+        this.messageByteCount = src.messageByteCount;
+        this.properties = src.properties;
+        this.contentType = src.contentType;
+    }
+
+    /**
+     * @param stat
+     *      the mask value obtained from {@link #identifyContentType(ContentType)}
+     */
+    protected static boolean isSoap1_1Content(int stat) {
+        return (stat & SOAP1_1_FLAG) != 0;
+    }
+
+    /**
+     * @param stat
+     *      the mask value obtained from {@link #identifyContentType(ContentType)}
+     */
+    protected static boolean isSoap1_2Content(int stat) {
+        return (stat & SOAP1_2_FLAG) != 0;
+    }
+
+     private static boolean isMimeMultipartXOPSoap1_2Package(ContentType contentType) {
+        String type = contentType.getParameter("type");
+        if (type == null) {
+            return false;
+        }
+        type = type.toLowerCase();
+        if (!type.startsWith("application/xop+xml")) {
+            return false;
+        }
+        String startinfo = contentType.getParameter("start-info");
+        if (startinfo == null) {
+            return false;
+        }
+        startinfo = startinfo.toLowerCase();
+        return isEqualToSoap1_2Type(startinfo);
+    }
+
+
+     //private static boolean isMimeMultipartXOPPackage(ContentType contentType) {
+     private static boolean isMimeMultipartXOPSoap1_1Package(ContentType contentType) {
+        String type = contentType.getParameter("type");
+        if(type==null)
+            return false;
+
+        type = type.toLowerCase();
+        if(!type.startsWith("application/xop+xml"))
+            return false;
+
+        String startinfo = contentType.getParameter("start-info");
+        if(startinfo == null)
+            return false;
+        startinfo = startinfo.toLowerCase();
+        return isEqualToSoap1_1Type(startinfo);
+    }
+
+    private static boolean isSOAPBodyXOPPackage(ContentType contentType){
+        String primary = contentType.getPrimaryType();
+        String sub = contentType.getSubType();
+
+        if (primary.equalsIgnoreCase("application")) {
+            if (sub.equalsIgnoreCase("xop+xml")) {
+                String type = getTypeParameter(contentType);
+                return isEqualToSoap1_2Type(type) || isEqualToSoap1_1Type(type);
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Construct a message from an input stream. When messages are
+     * received, there's two parts -- the transport headers and the
+     * message content in a transport specific stream.
+     */
+    protected MessageImpl(MimeHeaders headers, final InputStream in)
+        throws SOAPExceptionImpl {
+        contentType = parseContentType(headers);
+        init(headers,identifyContentType(contentType),contentType,in);
+    }
+
+    private static ContentType parseContentType(MimeHeaders headers) throws SOAPExceptionImpl {
+        final String ct;
+        if (headers != null)
+            ct = getContentType(headers);
+        else {
+            log.severe("SAAJ0550.soap.null.headers");
+            throw new SOAPExceptionImpl("Cannot create message: " +
+                                        "Headers can't be null");
+        }
+
+        if (ct == null) {
+            log.severe("SAAJ0532.soap.no.Content-Type");
+            throw new SOAPExceptionImpl("Absent Content-Type");
+        }
+        try {
+            return new ContentType(ct);
+        } catch (Throwable ex) {
+            log.severe("SAAJ0535.soap.cannot.internalize.message");
+            throw new SOAPExceptionImpl("Unable to internalize message", ex);
+        }
+    }
+
+    /**
+     * Construct a message from an input stream. When messages are
+     * received, there's two parts -- the transport headers and the
+     * message content in a transport specific stream.
+     *
+     * @param contentType
+     *      The parsed content type header from the headers variable.
+     *      This is redundant parameter, but it avoids reparsing this header again.
+     * @param stat
+     *      The result of {@link #identifyContentType(ContentType)} over
+     *      the contentType parameter. This redundant parameter, but it avoids
+     *      recomputing this information again.
+     */
+    protected MessageImpl(MimeHeaders headers, final ContentType contentType, int stat, final InputStream in) throws SOAPExceptionImpl {
+        init(headers, stat, contentType, in);
+
+    }
+
+    public MessageImpl(MimeHeaders headers, ContentType ct, int stat,
+            XMLStreamReader reader) throws SOAPExceptionImpl {
+        init(headers, stat, ct, reader);
+    }
+
+    private void init(MimeHeaders headers, int stat, final ContentType contentType, final Object input) throws SOAPExceptionImpl {
+        this.headers = headers;
+
+        try {
+
+            // Set isFastInfoset/acceptFastInfoset flag based on MIME type
+            if ((stat & FI_ENCODED_FLAG) > 0) {
+                isFastInfoset = acceptFastInfoset = true;
+            }
+
+            // If necessary, inspect Accept header to set acceptFastInfoset
+            if (!isFastInfoset) {
+                String[] values = headers.getHeader("Accept");
+                if (values != null) {
+                    for (int i = 0; i < values.length; i++) {
+                        StringTokenizer st = new StringTokenizer(values[i], ",");
+                        while (st.hasMoreTokens()) {
+                            final String token = st.nextToken().trim();
+                            if (token.equalsIgnoreCase("application/fastinfoset") ||
+                                token.equalsIgnoreCase("application/soap+fastinfoset")) {
+                                acceptFastInfoset = true;
+                                break;
+                            }
+                        }
+                    }
+                }
+            }
+
+            if (!isCorrectSoapVersion(stat)) {
+                log.log(
+                    Level.SEVERE,
+                    "SAAJ0533.soap.incorrect.Content-Type",
+                    new String[] {
+                        contentType.toString(),
+                        getExpectedContentType()});
+                throw new SOAPVersionMismatchException(
+                    "Cannot create message: incorrect content-type for SOAP version. Got: "
+                        + contentType
+                        + " Expected: "
+                        + getExpectedContentType());
+            }
+            InputStream in = null;
+            XMLStreamReader rdr = null;
+            if (input instanceof InputStream) {
+               in = (InputStream) input;
+            } else {
+              //is a StAX reader
+                rdr = (XMLStreamReader) input;
+            }
+            if ((stat & PLAIN_XML_FLAG) != 0) {
+                if (in != null) {
+                    if (isFastInfoset) {
+                        getSOAPPart().setContent(
+                                FastInfosetReflection.FastInfosetSource_new(in));
+                    } else {
+                        initCharsetProperty(contentType);
+                        getSOAPPart().setContent(new StreamSource(in));
+                    }
+                } else {
+                    //is a StAX reader
+                    if (isFastInfoset) {
+                        //need to get FI stax reader
+                    } else {
+                        initCharsetProperty(contentType);
+                        getSOAPPart().setContent(new StAXSource(rdr));
+                    }
+                }
+            }
+            else if ((stat & MIME_MULTIPART_FLAG) != 0 && in == null) {
+                //only parse multipart in the inputstream case
+                //in stax reader case, we would be given the attachments separately
+                getSOAPPart().setContent(new StAXSource(rdr));
+            } else if ((stat & MIME_MULTIPART_FLAG) != 0) {
+                final InputStream finalIn = in;
+                DataSource ds = new DataSource() {
+                    public InputStream getInputStream() {
+                        return finalIn;
+                    }
+
+                    public OutputStream getOutputStream() {
+                        return null;
+                    }
+
+                    public String getContentType() {
+                        return contentType.toString();
+                    }
+
+                    public String getName() {
+                        return "";
+                    }
+                };
+
+                multiPart = null;
+                if (useMimePull) {
+                    multiPart = new MimePullMultipart(ds,contentType);
+                } else if (switchOffBM) {
+                    multiPart = new MimeMultipart(ds,contentType);
+                } else {
+                    multiPart = new BMMimeMultipart(ds,contentType);
+                }
+
+                String startParam = contentType.getParameter("start");
+                MimeBodyPart soapMessagePart = null;
+                InputStream soapPartInputStream = null;
+                String contentID = null;
+                String contentIDNoAngle = null;
+                if (switchOffBM || switchOffLazyAttachment) {
+                    if(startParam == null) {
+                        soapMessagePart = multiPart.getBodyPart(0);
+                        for (int i = 1; i < multiPart.getCount(); i++) {
+                            initializeAttachment(multiPart, i);
+                        }
+                    } else {
+                        soapMessagePart = multiPart.getBodyPart(startParam);
+                        for (int i = 0; i < multiPart.getCount(); i++) {
+                            contentID = multiPart.getBodyPart(i).getContentID();
+                            // Old versions of AXIS2 put angle brackets around the content
+                            // id but not the start param
+                            contentIDNoAngle = (contentID != null) ?
+                                contentID.replaceFirst("^<", "").replaceFirst(">$", "") : null;
+                            if(!startParam.equals(contentID) && !startParam.equals(contentIDNoAngle))
+                                initializeAttachment(multiPart, i);
+                        }
+                    }
+                } else {
+                    if (useMimePull) {
+                        MimePullMultipart mpMultipart = (MimePullMultipart)multiPart;
+                        MIMEPart sp = mpMultipart.readAndReturnSOAPPart();
+                        soapMessagePart = new MimeBodyPart(sp);
+                        soapPartInputStream = sp.readOnce();
+                    } else {
+                        BMMimeMultipart bmMultipart =
+                                (BMMimeMultipart) multiPart;
+                        InputStream stream = bmMultipart.initStream();
+
+                        SharedInputStream sin = null;
+                        if (stream instanceof SharedInputStream) {
+                            sin = (SharedInputStream) stream;
+                        }
+
+                        String boundary = "--" +
+                                contentType.getParameter("boundary");
+                        byte[] bndbytes = ASCIIUtility.getBytes(boundary);
+                        if (startParam == null) {
+                            soapMessagePart =
+                                    bmMultipart.getNextPart(stream, bndbytes, sin);
+                            bmMultipart.removeBodyPart(soapMessagePart);
+                        } else {
+                            MimeBodyPart bp = null;
+                            try {
+                               while (!startParam.equals(contentID) && !startParam.equals(contentIDNoAngle)) {
+                                    bp = bmMultipart.getNextPart(
+                                            stream, bndbytes, sin);
+                                    contentID = bp.getContentID();
+                                    // Old versions of AXIS2 put angle brackets around the content
+                                    // id but not the start param
+                                    contentIDNoAngle = (contentID != null) ?
+                                        contentID.replaceFirst("^<", "").replaceFirst(">$", "") : null;
+                                }
+                                soapMessagePart = bp;
+                                bmMultipart.removeBodyPart(bp);
+                            } catch (Exception e) {
+                                throw new SOAPExceptionImpl(e);
+                            }
+                        }
+                    }
+                }
+
+                // findbugs correctly points out that we'd NPE instantiating
+                // the ContentType (just below here) if soapMessagePart were
+                // null.  Hence are better off throwing a controlled exception
+                // at this point if it is null.
+                if (soapMessagePart == null) {
+                    log.severe("SAAJ0510.soap.cannot.create.envelope");
+                    throw new SOAPExceptionImpl(
+                        "Unable to create envelope from given source: SOAP part not found");
+                }
+
+                if (soapPartInputStream == null) {
+                    soapPartInputStream = soapMessagePart.getInputStream();
+                }
+
+                ContentType soapPartCType = new ContentType(
+                                            soapMessagePart.getContentType());
+                initCharsetProperty(soapPartCType);
+                String baseType = soapPartCType.getBaseType().toLowerCase();
+                if(!(isEqualToSoap1_1Type(baseType)
+                  || isEqualToSoap1_2Type(baseType)
+                  || isSOAPBodyXOPPackage(soapPartCType))) {
+                    log.log(Level.SEVERE,
+                            "SAAJ0549.soap.part.invalid.Content-Type",
+                            new Object[] {baseType});
+                    throw new SOAPExceptionImpl(
+                            "Bad Content-Type for SOAP Part : " +
+                            baseType);
+                }
+
+                SOAPPart soapPart = getSOAPPart();
+                setMimeHeaders(soapPart, soapMessagePart);
+                soapPart.setContent(isFastInfoset ?
+                     (Source) FastInfosetReflection.FastInfosetSource_new(
+                         soapPartInputStream) :
+                     (Source) new StreamSource(soapPartInputStream));
+            } else {
+                log.severe("SAAJ0534.soap.unknown.Content-Type");
+                throw new SOAPExceptionImpl("Unrecognized Content-Type");
+            }
+        } catch (Throwable ex) {
+            log.severe("SAAJ0535.soap.cannot.internalize.message");
+            throw new SOAPExceptionImpl("Unable to internalize message", ex);
+        }
+        needsSave();
+    }
+
+    public boolean isFastInfoset() {
+        return isFastInfoset;
+    }
+
+    public boolean acceptFastInfoset() {
+        return acceptFastInfoset;
+    }
+
+    public void setIsFastInfoset(boolean value) {
+        if (value != isFastInfoset) {
+            isFastInfoset = value;
+            if (isFastInfoset) {
+                acceptFastInfoset = true;
+            }
+            saved = false;      // ensure transcoding if necessary
+        }
+    }
+
+    public boolean isLazySoapBodyParsing() {
+        Object lazyParsingProp = getProperty(LAZY_SOAP_BODY_PARSING);
+        if (lazyParsingProp == null) return false;
+        if (lazyParsingProp instanceof Boolean) {
+            return ((Boolean) lazyParsingProp).booleanValue();
+        } else {
+            return Boolean.valueOf(lazyParsingProp.toString());
+        }
+    }
+    public Object getProperty(String property) {
+        return (String) properties.get(property);
+    }
+
+    public void setProperty(String property, Object value) {
+        verify(property, value);
+        properties.put(property, value);
+    }
+
+    private void verify(String property, Object value) {
+        if (property.equalsIgnoreCase(SOAPMessage.WRITE_XML_DECLARATION)) {
+            if (!("true".equals(value) || "false".equals(value)))
+                throw new RuntimeException(
+                    property + " must have value false or true");
+
+            try {
+                EnvelopeImpl env = (EnvelopeImpl) getSOAPPart().getEnvelope();
+                if ("true".equalsIgnoreCase((String)value)) {
+                    env.setOmitXmlDecl("no");
+                } else if ("false".equalsIgnoreCase((String)value)) {
+                    env.setOmitXmlDecl("yes");
+                }
+            } catch (Exception e) {
+                log.log(Level.SEVERE, "SAAJ0591.soap.exception.in.set.property",
+                    new Object[] {e.getMessage(), "javax.xml.soap.write-xml-declaration"});
+                throw new RuntimeException(e);
+            }
+            return;
+        }
+
+        if (property.equalsIgnoreCase(SOAPMessage.CHARACTER_SET_ENCODING)) {
+            try {
+                ((EnvelopeImpl) getSOAPPart().getEnvelope()).setCharsetEncoding((String)value);
+            } catch (Exception e) {
+                log.log(Level.SEVERE, "SAAJ0591.soap.exception.in.set.property",
+                    new Object[] {e.getMessage(), "javax.xml.soap.character-set-encoding"});
+                throw new RuntimeException(e);
+            }
+        }
+    }
+
+    protected abstract boolean isCorrectSoapVersion(int contentTypeId);
+
+    protected abstract String getExpectedContentType();
+    protected abstract String getExpectedAcceptHeader();
+
+    /**
+     * Sniffs the Content-Type header so that we can determine how to process.
+     *
+     * <p>
+     * In the absence of type attribute we assume it to be text/xml.
+     * That would mean we're easy on accepting the message and
+     * generate the correct thing (as the SWA spec also specifies
+     * that the type parameter should always be text/xml)
+     *
+     * @return
+     *      combination of flags, such as PLAIN_XML_CODE and MIME_MULTIPART_CODE.
+     */
+    // SOAP1.2 allow SOAP1.2 content type
+    static int identifyContentType(ContentType ct)
+        throws SOAPExceptionImpl {
+        // TBD
+        //    Is there anything else we need to verify here?
+
+        String primary = ct.getPrimaryType().toLowerCase();
+        String sub = ct.getSubType().toLowerCase();
+
+        if (primary.equals("multipart")) {
+            if (sub.equals("related")) {
+                String type = getTypeParameter(ct);
+                if (isEqualToSoap1_1Type(type)) {
+                    return (type.equals("application/fastinfoset") ?
+                           FI_ENCODED_FLAG : 0) | MIME_MULTIPART_FLAG | SOAP1_1_FLAG;
+                }
+                else if (isEqualToSoap1_2Type(type)) {
+                    return (type.equals("application/soap+fastinfoset") ?
+                           FI_ENCODED_FLAG : 0) | MIME_MULTIPART_FLAG | SOAP1_2_FLAG;
+                /*} else if (isMimeMultipartXOPPackage(ct)) {
+                    return MIME_MULTIPART_XOP_FLAG;*/
+                } else if (isMimeMultipartXOPSoap1_1Package(ct)) {
+                    return MIME_MULTIPART_XOP_SOAP1_1_FLAG;
+                } else if (isMimeMultipartXOPSoap1_2Package(ct)) {
+                    return MIME_MULTIPART_XOP_SOAP1_2_FLAG;
+                } else {
+                    log.severe("SAAJ0536.soap.content-type.mustbe.multipart");
+                    throw new SOAPExceptionImpl(
+                        "Content-Type needs to be Multipart/Related "
+                            + "and with \"type=text/xml\" "
+                            + "or \"type=application/soap+xml\"");
+                }
+            } else {
+                log.severe("SAAJ0537.soap.invalid.content-type");
+                throw new SOAPExceptionImpl(
+                    "Invalid Content-Type: " + primary + '/' + sub);
+            }
+        }
+        else if (isSoap1_1Type(primary, sub)) {
+            return (primary.equalsIgnoreCase("application")
+                    && sub.equalsIgnoreCase("fastinfoset") ?
+                        FI_ENCODED_FLAG : 0)
+                   | PLAIN_XML_FLAG | SOAP1_1_FLAG;
+        }
+        else if (isSoap1_2Type(primary, sub)) {
+            return (primary.equalsIgnoreCase("application")
+                    && sub.equalsIgnoreCase("soap+fastinfoset") ?
+                        FI_ENCODED_FLAG : 0)
+                   | PLAIN_XML_FLAG | SOAP1_2_FLAG;
+        } else if(isSOAPBodyXOPPackage(ct)){
+            return XOP_FLAG;
+        } else {
+            log.severe("SAAJ0537.soap.invalid.content-type");
+            throw new SOAPExceptionImpl(
+                "Invalid Content-Type:"
+                    + primary
+                    + '/'
+                    + sub
+                    + ". Is this an error message instead of a SOAP response?");
+        }
+    }
+
+    /**
+     * Obtains the type parameter of the Content-Type header. Defaults to "text/xml".
+     */
+    private static String getTypeParameter(ContentType contentType) {
+        String p = contentType.getParameter("type");
+        if(p!=null)
+            return p.toLowerCase();
+        else
+            return "text/xml";
+    }
+
+    public MimeHeaders getMimeHeaders() {
+        return this.headers;
+    }
+
+    final static String getContentType(MimeHeaders headers) {
+        String[] values = headers.getHeader("Content-Type");
+        if (values == null)
+            return null;
+        else
+            return values[0];
+    }
+
+    /*
+     * Get the complete ContentType value along with optional parameters.
+     */
+    public String getContentType() {
+        return getContentType(this.headers);
+    }
+
+    public void setContentType(String type) {
+        headers.setHeader("Content-Type", type);
+        needsSave();
+    }
+
+    private ContentType contentType() {
+        ContentType ct = null;
+        try {
+            String currentContent = getContentType();
+            if (currentContent == null) {
+                return this.contentType;
+            }
+            ct = new ContentType(currentContent);
+        } catch (Exception e) {
+            // what to do here?
+        }
+        return ct;
+    }
+
+    /*
+     * Return the MIME type string, without the parameters.
+     */
+    public String getBaseType() {
+        return contentType().getBaseType();
+    }
+
+    public void setBaseType(String type) {
+        ContentType ct = contentType();
+        ct.setParameter("type", type);
+        headers.setHeader("Content-Type", ct.toString());
+        needsSave();
+    }
+
+    public String getAction() {
+        return contentType().getParameter("action");
+    }
+
+    public void setAction(String action) {
+        ContentType ct = contentType();
+        ct.setParameter("action", action);
+        headers.setHeader("Content-Type", ct.toString());
+        needsSave();
+    }
+
+    public String getCharset() {
+        return contentType().getParameter("charset");
+    }
+
+    public void setCharset(String charset) {
+        ContentType ct = contentType();
+        ct.setParameter("charset", charset);
+        headers.setHeader("Content-Type", ct.toString());
+        needsSave();
+    }
+
+    /**
+     * All write methods (i.e setters) should call this method in
+     * order to make sure that a save is necessary since the state
+     * has been modified.
+     */
+    private final void needsSave() {
+        saved = false;
+    }
+
+    public  boolean saveRequired() {
+        return saved != true;
+    }
+
+    public String getContentDescription() {
+        String[] values = headers.getHeader("Content-Description");
+        if (values != null && values.length > 0)
+            return values[0];
+        return null;
+    }
+
+    public void setContentDescription(String description) {
+        headers.setHeader("Content-Description", description);
+        needsSave();
+    }
+
+    public abstract SOAPPart getSOAPPart();
+
+    public void removeAllAttachments() {
+        try {
+            initializeAllAttachments();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+
+        if (attachments != null) {
+            attachments.clear();
+            needsSave();
+        }
+    }
+
+    public int countAttachments() {
+        try {
+            initializeAllAttachments();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        if (attachments != null)
+            return attachments.size();
+        return 0;
+    }
+
+    public void addAttachmentPart(AttachmentPart attachment) {
+        try {
+            initializeAllAttachments();
+            this.optimizeAttachmentProcessing = true;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        if (attachments == null)
+            attachments = new FinalArrayList();
+
+        attachments.add(attachment);
+
+        needsSave();
+    }
+
+    static private final Iterator nullIter = Collections.EMPTY_LIST.iterator();
+
+    public Iterator getAttachments() {
+        try {
+            initializeAllAttachments();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        if (attachments == null)
+            return nullIter;
+        return attachments.iterator();
+    }
+
+    private void setFinalContentType(String charset) {
+        ContentType ct = contentType();
+        if (ct == null) {
+            ct = new ContentType();
+        }
+        String[] split = getExpectedContentType().split("/");
+        ct.setPrimaryType(split[0]);
+        ct.setSubType(split[1]);
+        ct.setParameter("charset", charset);
+        headers.setHeader("Content-Type", ct.toString());
+    }
+
+    private class MimeMatchingIterator implements Iterator {
+        public MimeMatchingIterator(MimeHeaders headers) {
+            this.headers = headers;
+            this.iter = attachments.iterator();
+        }
+
+        private Iterator iter;
+        private MimeHeaders headers;
+        private Object nextAttachment;
+
+        public boolean hasNext() {
+            if (nextAttachment == null)
+                nextAttachment = nextMatch();
+            return nextAttachment != null;
+        }
+
+        public Object next() {
+            if (nextAttachment != null) {
+                Object ret = nextAttachment;
+                nextAttachment = null;
+                return ret;
+            }
+
+            if (hasNext())
+                return nextAttachment;
+
+            return null;
+        }
+
+        Object nextMatch() {
+            while (iter.hasNext()) {
+                AttachmentPartImpl ap = (AttachmentPartImpl) iter.next();
+                if (ap.hasAllHeaders(headers))
+                    return ap;
+            }
+            return null;
+        }
+
+        public void remove() {
+            iter.remove();
+        }
+    }
+
+    public Iterator getAttachments(MimeHeaders headers) {
+        try {
+            initializeAllAttachments();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        if (attachments == null)
+            return nullIter;
+
+        return new MimeMatchingIterator(headers);
+    }
+
+    public void removeAttachments(MimeHeaders headers) {
+        try {
+            initializeAllAttachments();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        if (attachments == null)
+            return ;
+
+        Iterator it =  new MimeMatchingIterator(headers);
+        while (it.hasNext()) {
+            int index = attachments.indexOf(it.next());
+            attachments.set(index, null);
+        }
+        FinalArrayList f = new FinalArrayList();
+        for (int i = 0; i < attachments.size(); i++) {
+            if (attachments.get(i) != null) {
+                f.add(attachments.get(i));
+            }
+        }
+        attachments = f;
+       // needsSave();
+    }
+
+    public AttachmentPart createAttachmentPart() {
+        return new AttachmentPartImpl();
+    }
+
+    public  AttachmentPart getAttachment(SOAPElement element)
+        throws SOAPException {
+        try {
+            initializeAllAttachments();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        String uri;
+        String hrefAttr = element.getAttribute("href");
+        if ("".equals(hrefAttr)) {
+            Node node = getValueNodeStrict(element);
+            String swaRef = null;
+            if (node != null) {
+                swaRef = node.getValue();
+            }
+            if (swaRef == null || "".equals(swaRef)) {
+                return null;
+            } else {
+                uri = swaRef;
+            }
+        } else {
+            uri = hrefAttr;
+        }
+        return getAttachmentPart(uri);
+    }
+
+    private Node getValueNodeStrict(SOAPElement element) {
+        Node node = (Node)element.getFirstChild();
+        if (node != null) {
+            if (node.getNextSibling() == null
+                && node.getNodeType() == org.w3c.dom.Node.TEXT_NODE) {
+                return node;
+            } else {
+                return null;
+            }
+        }
+        return null;
+    }
+
+
+    private AttachmentPart getAttachmentPart(String uri) throws SOAPException {
+        AttachmentPart _part;
+        try {
+            if (uri.startsWith("cid:")) {
+                // rfc2392
+                uri = '<'+uri.substring("cid:".length())+'>';
+
+                MimeHeaders headersToMatch = new MimeHeaders();
+                headersToMatch.addHeader(CONTENT_ID, uri);
+
+                Iterator i = this.getAttachments(headersToMatch);
+                _part = (i == null) ? null : (AttachmentPart)i.next();
+            } else {
+                // try content-location
+                MimeHeaders headersToMatch = new MimeHeaders();
+                headersToMatch.addHeader(CONTENT_LOCATION, uri);
+
+                Iterator i = this.getAttachments(headersToMatch);
+                _part = (i == null) ? null : (AttachmentPart)i.next();
+            }
+
+            // try  auto-generated JAXRPC CID
+            if (_part == null) {
+                Iterator j = this.getAttachments();
+
+                while (j.hasNext()) {
+                    AttachmentPart p = (AttachmentPart)j.next();
+                    String cl = p.getContentId();
+                    if (cl != null) {
+                        // obtain the partname
+                        int eqIndex = cl.indexOf("=");
+                        if (eqIndex > -1) {
+                            cl = cl.substring(1, eqIndex);
+                            if (cl.equalsIgnoreCase(uri)) {
+                                _part = p;
+                                 break;
+                            }
+                        }
+                    }
+                }
+            }
+
+        } catch (Exception se) {
+            log.log(Level.SEVERE, "SAAJ0590.soap.unable.to.locate.attachment", new Object[] {uri});
+            throw new SOAPExceptionImpl(se);
+        }
+        return _part;
+    }
+
+    private final InputStream getHeaderBytes()
+        throws IOException {
+        SOAPPartImpl sp = (SOAPPartImpl) getSOAPPart();
+        return sp.getContentAsStream();
+    }
+
+    private String convertToSingleLine(String contentType) {
+        StringBuffer buffer = new StringBuffer();
+        for (int i = 0; i < contentType.length(); i ++) {
+            char c = contentType.charAt(i);
+            if (c != '\r' && c != '\n' && c != '\t')
+                buffer.append(c);
+        }
+        return buffer.toString();
+    }
+
+    private MimeMultipart getMimeMessage() throws SOAPException {
+        try {
+            SOAPPartImpl soapPart = (SOAPPartImpl) getSOAPPart();
+            MimeBodyPart mimeSoapPart = soapPart.getMimePart();
+
+            /*
+             * Get content type from this message instead of soapPart
+             * to ensure agreement if soapPart is transcoded (XML <-> FI)
+             */
+            ContentType soapPartCtype = new ContentType(getExpectedContentType());
+
+            if (!isFastInfoset) {
+                soapPartCtype.setParameter("charset", initCharset());
+            }
+            mimeSoapPart.setHeader("Content-Type", soapPartCtype.toString());
+
+            MimeMultipart headerAndBody = null;
+
+            if (!switchOffBM && !switchOffLazyAttachment &&
+                   (multiPart != null) && !attachmentsInitialized) {
+                headerAndBody = new BMMimeMultipart();
+                headerAndBody.addBodyPart(mimeSoapPart);
+                if (attachments != null) {
+                    for (Iterator eachAttachment = attachments.iterator();
+                         eachAttachment.hasNext();) {
+                        headerAndBody.addBodyPart(
+                            ((AttachmentPartImpl) eachAttachment.next())
+                                .getMimePart());
+                    }
+                }
+                InputStream in = ((BMMimeMultipart)multiPart).getInputStream();
+                if (!((BMMimeMultipart)multiPart).lastBodyPartFound() &&
+                    !((BMMimeMultipart)multiPart).isEndOfStream()) {
+                    ((BMMimeMultipart)headerAndBody).setInputStream(in);
+                    ((BMMimeMultipart)headerAndBody).setBoundary(
+                        ((BMMimeMultipart)multiPart).getBoundary());
+                    ((BMMimeMultipart)headerAndBody).
+                        setLazyAttachments(lazyAttachments);
+                }
+
+            } else {
+                headerAndBody = new MimeMultipart();
+                headerAndBody.addBodyPart(mimeSoapPart);
+
+                for (Iterator eachAttachement = getAttachments();
+                    eachAttachement.hasNext();
+                    ) {
+                    headerAndBody.addBodyPart(
+                        ((AttachmentPartImpl) eachAttachement.next())
+                            .getMimePart());
+                }
+            }
+
+            ContentType contentType = headerAndBody.getContentType();
+
+            ParameterList l = contentType.getParameterList();
+
+            // set content type depending on SOAP version
+            l.set("type", getExpectedContentType());
+            l.set("boundary", contentType.getParameter("boundary"));
+            ContentType nct = new ContentType("multipart", "related", l);
+
+            headers.setHeader(
+                "Content-Type",
+                convertToSingleLine(nct.toString()));
+          // TBD
+          //    Set content length MIME header here.
+
+            return headerAndBody;
+        } catch (SOAPException ex) {
+            throw ex;
+        } catch (Throwable ex) {
+            log.severe("SAAJ0538.soap.cannot.convert.msg.to.multipart.obj");
+            throw new SOAPExceptionImpl(
+                "Unable to convert SOAP message into "
+                    + "a MimeMultipart object",
+                ex);
+        }
+    }
+
+    private String initCharset() {
+
+        String charset = null;
+
+        String[] cts = getMimeHeaders().getHeader("Content-Type");
+        if ((cts != null) && (cts[0] != null)) {
+            charset = getCharsetString(cts[0]);
+        }
+
+        if (charset == null) {
+            charset = (String) getProperty(CHARACTER_SET_ENCODING);
+        }
+
+        if (charset != null) {
+            return charset;
+        }
+
+        return "utf-8";
+    }
+
+    private String getCharsetString(String s) {
+        try {
+            int index = s.indexOf(";");
+            if(index < 0)
+                return null;
+            ParameterList pl = new ParameterList(s.substring(index));
+            return pl.get("charset");
+        } catch(Exception e) {
+            return null;
+        }
+    }
+
+    public void saveChanges() throws SOAPException {
+
+        // suck in all the data from the attachments and have it
+        // ready for writing/sending etc.
+
+        String charset = initCharset();
+
+        /*if (countAttachments() == 0) {*/
+        int attachmentCount = (attachments == null) ? 0 : attachments.size();
+        if (attachmentCount == 0) {
+            if (!switchOffBM && !switchOffLazyAttachment &&
+                !attachmentsInitialized && (multiPart != null)) {
+                // so there might be attachments
+                attachmentCount = 1;
+            }
+        }
+
+        try {
+            if ((attachmentCount == 0) && !hasXOPContent()) {
+                InputStream in;
+                try{
+                /*
+                 * Not sure why this is called getHeaderBytes(), but it actually
+                 * returns the whole message as a byte stream. This stream could
+                 * be either XML of Fast depending on the mode.
+                 */
+                    in = getHeaderBytes();
+                    // no attachments, hence this property can be false
+                    this.optimizeAttachmentProcessing = false;
+                    if (SOAPPartImpl.lazyContentLength) {
+                        inputStreamAfterSaveChanges = in;
+                    }
+                } catch (IOException ex) {
+                    log.severe("SAAJ0539.soap.cannot.get.header.stream");
+                    throw new SOAPExceptionImpl(
+                            "Unable to get header stream in saveChanges: ",
+                            ex);
+                }
+
+                if (in instanceof ByteInputStream) {
+                    ByteInputStream bIn = (ByteInputStream)in;
+                    messageBytes = bIn.getBytes();
+                    messageByteCount = bIn.getCount();
+                }
+
+                setFinalContentType(charset);
+                /*
+                headers.setHeader(
+                        "Content-Type",
+                        getExpectedContentType() +
+                        (isFastInfoset ? "" : "; charset=" + charset));*/
+                if (messageByteCount > 0) {
+                    headers.setHeader(
+                            "Content-Length",
+                            Integer.toString(messageByteCount));
+                }
+            } else {
+                if(hasXOPContent())
+                    mmp = getXOPMessage();
+                else
+                    mmp = getMimeMessage();
+            }
+        } catch (Throwable ex) {
+            log.severe("SAAJ0540.soap.err.saving.multipart.msg");
+            throw new SOAPExceptionImpl(
+                    "Error during saving a multipart message",
+                    ex);
+        }
+
+        // FIX ME -- SOAP Action replaced by Content-Type optional parameter action
+        /*
+        if(isCorrectSoapVersion(SOAP1_1_FLAG)) {
+
+            String[] soapAction = headers.getHeader("SOAPAction");
+
+            if (soapAction == null || soapAction.length == 0)
+                headers.setHeader("SOAPAction", "\"\"");
+
+        }
+        */
+
+        saved = true;
+    }
+
+    private MimeMultipart getXOPMessage() throws SOAPException {
+        try {
+            MimeMultipart headerAndBody = new MimeMultipart();
+            SOAPPartImpl soapPart =  (SOAPPartImpl)getSOAPPart();
+            MimeBodyPart mimeSoapPart = soapPart.getMimePart();
+            ContentType soapPartCtype =
+                new ContentType("application/xop+xml");
+            soapPartCtype.setParameter("type", getExpectedContentType());
+            String charset = initCharset();
+            soapPartCtype.setParameter("charset", charset);
+            mimeSoapPart.setHeader("Content-Type", soapPartCtype.toString());
+            headerAndBody.addBodyPart(mimeSoapPart);
+
+            for (Iterator eachAttachement = getAttachments();
+                eachAttachement.hasNext();
+                ) {
+                headerAndBody.addBodyPart(
+                    ((AttachmentPartImpl) eachAttachement.next())
+                        .getMimePart());
+            }
+
+            ContentType contentType = headerAndBody.getContentType();
+
+            ParameterList l = contentType.getParameterList();
+
+            //lets not write start-info for now till we get servlet fix done
+            l.set("start-info", getExpectedContentType());//+";charset="+initCharset());
+
+            // set content type depending on SOAP version
+            l.set("type", "application/xop+xml");
+
+            if (isCorrectSoapVersion(SOAP1_2_FLAG)) {
+                 String action = getAction();
+                 if(action != null)
+                     l.set("action", action);
+            }
+
+            l.set("boundary", contentType.getParameter("boundary"));
+            ContentType nct = new ContentType("Multipart", "Related", l);
+            headers.setHeader(
+                "Content-Type",
+                convertToSingleLine(nct.toString()));
+            // TBD
+            //    Set content length MIME header here.
+
+            return headerAndBody;
+        } catch (SOAPException ex) {
+            throw ex;
+        } catch (Throwable ex) {
+            log.severe("SAAJ0538.soap.cannot.convert.msg.to.multipart.obj");
+            throw new SOAPExceptionImpl(
+                "Unable to convert SOAP message into "
+                    + "a MimeMultipart object",
+                ex);
+        }
+
+    }
+
+    private boolean hasXOPContent() throws ParseException {
+        String type = getContentType();
+        if(type == null)
+            return false;
+        ContentType ct = new ContentType(type);
+        //return isMimeMultipartXOPPackage(ct) || isSOAPBodyXOPPackage(ct);
+        return isMimeMultipartXOPSoap1_1Package(ct) ||
+            isMimeMultipartXOPSoap1_2Package(ct) || isSOAPBodyXOPPackage(ct);
+
+    }
+
+    public void writeTo(OutputStream out) throws SOAPException, IOException {
+        if (saveRequired()){
+            this.optimizeAttachmentProcessing = true;
+            saveChanges();
+        }
+
+        if(!optimizeAttachmentProcessing){
+            if (SOAPPartImpl.lazyContentLength && messageByteCount <= 0) {
+                byte[] buf = new byte[1024];
+
+                int length = 0;
+                while( (length = inputStreamAfterSaveChanges.read(buf)) != -1) {
+                    out.write(buf,0, length);
+                    messageByteCount += length;
+                }
+                if (messageByteCount > 0) {
+                    headers.setHeader(
+                            "Content-Length",
+                            Integer.toString(messageByteCount));
+                }
+            } else {
+                out.write(messageBytes, 0, messageByteCount);
+            }
+        }
+        else{
+            try{
+                if(hasXOPContent()){
+                    mmp.writeTo(out);
+                }else{
+                    mmp.writeTo(out);
+                    if (!switchOffBM && !switchOffLazyAttachment &&
+                            (multiPart != null) && !attachmentsInitialized) {
+                        ((BMMimeMultipart)multiPart).setInputStream(
+                                ((BMMimeMultipart)mmp).getInputStream());
+                    }
+                }
+            } catch(Exception ex){
+                log.severe("SAAJ0540.soap.err.saving.multipart.msg");
+                throw new SOAPExceptionImpl(
+                        "Error during saving a multipart message",
+                        ex);
+            }
+        }
+
+        if(isCorrectSoapVersion(SOAP1_1_FLAG)) {
+
+            String[] soapAction = headers.getHeader("SOAPAction");
+
+            if (soapAction == null || soapAction.length == 0)
+                headers.setHeader("SOAPAction", "\"\"");
+
+        }
+
+        messageBytes = null;
+        needsSave();
+    }
+
+    public SOAPBody getSOAPBody() throws SOAPException {
+        SOAPBody body = getSOAPPart().getEnvelope().getBody();
+        /*if (body == null) {
+             throw new SOAPException("No SOAP Body was found in the SOAP Message");
+        }*/
+        return body;
+    }
+
+    public SOAPHeader getSOAPHeader() throws SOAPException {
+        SOAPHeader hdr = getSOAPPart().getEnvelope().getHeader();
+        /*if (hdr == null) {
+            throw new SOAPException("No SOAP Header was found in the SOAP Message");
+        }*/
+        return hdr;
+    }
+
+    private void initializeAllAttachments ()
+        throws MessagingException, SOAPException {
+        if (switchOffBM || switchOffLazyAttachment) {
+            return;
+        }
+
+        if (attachmentsInitialized || (multiPart == null)) {
+            return;
+        }
+
+        if (attachments == null)
+            attachments = new FinalArrayList();
+
+        int count = multiPart.getCount();
+        for (int i=0; i < count; i++ ) {
+            initializeAttachment(multiPart.getBodyPart(i));
+        }
+        attachmentsInitialized = true;
+        //multiPart = null;
+        needsSave();
+     }
+
+    private void initializeAttachment(MimeBodyPart mbp) throws SOAPException {
+        AttachmentPartImpl attachmentPart = new AttachmentPartImpl();
+        DataHandler attachmentHandler = mbp.getDataHandler();
+        attachmentPart.setDataHandler(attachmentHandler);
+
+        AttachmentPartImpl.copyMimeHeaders(mbp, attachmentPart);
+        attachments.add(attachmentPart);
+    }
+
+    private void initializeAttachment(MimeMultipart multiPart, int i)
+        throws Exception {
+        MimeBodyPart currentBodyPart = multiPart.getBodyPart(i);
+        AttachmentPartImpl attachmentPart = new AttachmentPartImpl();
+
+        DataHandler attachmentHandler = currentBodyPart.getDataHandler();
+        attachmentPart.setDataHandler(attachmentHandler);
+
+        AttachmentPartImpl.copyMimeHeaders(currentBodyPart, attachmentPart);
+        addAttachmentPart(attachmentPart);
+    }
+
+    private void setMimeHeaders(SOAPPart soapPart,
+            MimeBodyPart soapMessagePart) throws Exception {
+
+        // first remove the existing content-type
+        soapPart.removeAllMimeHeaders();
+        // add everything present in soapMessagePart
+        List headers = soapMessagePart.getAllHeaders();
+        int sz = headers.size();
+        for( int i=0; i<sz; i++ ) {
+            Header h = (Header) headers.get(i);
+            soapPart.addMimeHeader(h.getName(), h.getValue());
+        }
+    }
+
+    private void initCharsetProperty(ContentType contentType) {
+        String charset = contentType.getParameter("charset");
+        if (charset != null) {
+            ((SOAPPartImpl) getSOAPPart()).setSourceCharsetEncoding(charset);
+            if(!charset.equalsIgnoreCase("utf-8"))
+                setProperty(CHARACTER_SET_ENCODING, charset);
+        }
+    }
+
+    public void setLazyAttachments(boolean flag) {
+        lazyAttachments = flag;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/MultipartDataContentHandler.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import java.io.*;
+import java.awt.datatransfer.DataFlavor;
+import javax.activation.*;
+import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeMultipart;
+import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.ContentType;
+import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;
+
+public class MultipartDataContentHandler implements DataContentHandler {
+    private ActivationDataFlavor myDF = new ActivationDataFlavor(
+            com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeMultipart.class,
+            "multipart/mixed",
+            "Multipart");
+
+    /**
+     * Return the DataFlavors for this <code>DataContentHandler</code>.
+     *
+     * @return The DataFlavors
+     */
+    public DataFlavor[] getTransferDataFlavors() { // throws Exception;
+        return new DataFlavor[] { myDF };
+    }
+
+    /**
+     * Return the Transfer Data of type DataFlavor from InputStream.
+     *
+     * @param df The DataFlavor
+     * @param ins The InputStream corresponding to the data
+     * @return String object
+     */
+    public Object getTransferData(DataFlavor df, DataSource ds) {
+        // use myDF.equals to be sure to get ActivationDataFlavor.equals,
+        // which properly ignores Content-Type parameters in comparison
+        if (myDF.equals(df))
+            return getContent(ds);
+        else
+            return null;
+    }
+
+    /**
+     * Return the content.
+     */
+    public Object getContent(DataSource ds) {
+        try {
+            return new MimeMultipart(
+                ds, new ContentType(ds.getContentType()));
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+    /**
+     * Write the object to the output stream, using the specific MIME type.
+     */
+    public void writeTo(Object obj, String mimeType, OutputStream os)
+                        throws IOException {
+        if (obj instanceof MimeMultipart) {
+            try {
+                //TODO: temporarily allow only ByteOutputStream
+                // Need to add writeTo(OutputStream) on MimeMultipart
+                ByteOutputStream baos = null;
+                if (os instanceof ByteOutputStream) {
+                    baos = (ByteOutputStream)os;
+                } else {
+                    throw new IOException("Input Stream expected to be a com.sun.xml.internal.messaging.saaj.util.ByteOutputStream, but found " +
+                        os.getClass().getName());
+                }
+                ((MimeMultipart)obj).writeTo(baos);
+            } catch (Exception e) {
+                throw new IOException(e.toString());
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SAAJMetaFactoryImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import javax.xml.soap.SAAJMetaFactory;
+import javax.xml.soap.SOAPConstants;
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.SOAPFactory;
+import javax.xml.soap.SOAPException;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
+
+public class SAAJMetaFactoryImpl extends SAAJMetaFactory {
+
+    protected static final Logger log =
+        Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
+                         "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
+
+    protected  MessageFactory newMessageFactory(String protocol)
+        throws SOAPException {
+        if (SOAPConstants.SOAP_1_1_PROTOCOL.equals(protocol)) {
+              return new com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl();
+        } else if (SOAPConstants.SOAP_1_2_PROTOCOL.equals(protocol)) {
+              return new com.sun.xml.internal.messaging.saaj.soap.ver1_2.SOAPMessageFactory1_2Impl();
+        } else if (SOAPConstants.DYNAMIC_SOAP_PROTOCOL.equals(protocol)) {
+              return new com.sun.xml.internal.messaging.saaj.soap.dynamic.SOAPMessageFactoryDynamicImpl();
+        } else {
+            log.log(
+                Level.SEVERE,
+                "SAAJ0569.soap.unknown.protocol",
+                new Object[] {protocol, "MessageFactory"});
+            throw new SOAPException("Unknown Protocol: " + protocol +
+                                        "  specified for creating MessageFactory");
+        }
+    }
+
+    protected  SOAPFactory newSOAPFactory(String protocol)
+        throws SOAPException {
+        if (SOAPConstants.SOAP_1_1_PROTOCOL.equals(protocol)) {
+            return new com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl();
+        } else if (SOAPConstants.SOAP_1_2_PROTOCOL.equals(protocol)) {
+            return new com.sun.xml.internal.messaging.saaj.soap.ver1_2.SOAPFactory1_2Impl();
+        } else if (SOAPConstants.DYNAMIC_SOAP_PROTOCOL.equals(protocol)) {
+            return new com.sun.xml.internal.messaging.saaj.soap.dynamic.SOAPFactoryDynamicImpl();
+        } else {
+            log.log(
+                Level.SEVERE,
+                "SAAJ0569.soap.unknown.protocol",
+                new Object[] {protocol, "SOAPFactory"});
+            throw new SOAPException("Unknown Protocol: " + protocol +
+                                        "  specified for creating SOAPFactory");
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocument.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap;
+
+public interface SOAPDocument {
+    SOAPPartImpl getSOAPPart();
+    SOAPDocumentImpl getDocument();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocumentFragment.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl;
+import com.sun.org.apache.xerces.internal.dom.DocumentFragmentImpl;
+
+public class SOAPDocumentFragment extends DocumentFragmentImpl {
+
+    public SOAPDocumentFragment(CoreDocumentImpl ownerDoc) {
+        super(ownerDoc);
+    }
+
+    public SOAPDocumentFragment() {
+        super();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocumentImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,193 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import java.util.logging.Logger;
+
+import com.sun.org.apache.xerces.internal.dom.DocumentImpl;
+import org.w3c.dom.*;
+
+import com.sun.xml.internal.messaging.saaj.soap.impl.*;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
+
+public class SOAPDocumentImpl extends DocumentImpl implements SOAPDocument {
+
+    private static final String XMLNS = "xmlns".intern();
+    protected static final Logger log =
+        Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
+                         "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
+
+    SOAPPartImpl enclosingSOAPPart;
+
+    public SOAPDocumentImpl(SOAPPartImpl enclosingDocument) {
+        this.enclosingSOAPPart = enclosingDocument;
+    }
+
+    //    public SOAPDocumentImpl(boolean grammarAccess) {
+    //        super(grammarAccess);
+    //    }
+    //
+    //    public SOAPDocumentImpl(DocumentType doctype) {
+    //        super(doctype);
+    //    }
+    //
+    //    public SOAPDocumentImpl(DocumentType doctype, boolean grammarAccess) {
+    //        super(doctype, grammarAccess);
+    //    }
+
+    public SOAPPartImpl getSOAPPart() {
+        if (enclosingSOAPPart == null) {
+            log.severe("SAAJ0541.soap.fragment.not.bound.to.part");
+            throw new RuntimeException("Could not complete operation. Fragment not bound to SOAP part.");
+        }
+        return enclosingSOAPPart;
+    }
+
+    public SOAPDocumentImpl getDocument() {
+        return this;
+    }
+
+    public DocumentType getDoctype() {
+        // SOAP means no DTD, No DTD means no doctype (SOAP 1.2 only?)
+        return null;
+    }
+
+    public DOMImplementation getImplementation() {
+        return super.getImplementation();
+    }
+
+    public Element getDocumentElement() {
+        // This had better be an Envelope!
+        getSOAPPart().doGetDocumentElement();
+        return doGetDocumentElement();
+    }
+
+    protected Element doGetDocumentElement() {
+        return super.getDocumentElement();
+    }
+
+    public Element createElement(String tagName) throws DOMException {
+        return ElementFactory.createElement(
+            this,
+            NameImpl.getLocalNameFromTagName(tagName),
+            NameImpl.getPrefixFromTagName(tagName),
+            null);
+    }
+
+    public DocumentFragment createDocumentFragment() {
+        return new SOAPDocumentFragment(this);
+    }
+
+    public org.w3c.dom.Text createTextNode(String data) {
+        return new SOAPTextImpl(this, data);
+    }
+
+    public Comment createComment(String data) {
+        return new SOAPCommentImpl(this, data);
+    }
+
+    public CDATASection createCDATASection(String data) throws DOMException {
+        return new CDATAImpl(this, data);
+    }
+
+    public ProcessingInstruction createProcessingInstruction(
+        String target,
+        String data)
+        throws DOMException {
+        log.severe("SAAJ0542.soap.proc.instructions.not.allowed.in.docs");
+        throw new UnsupportedOperationException("Processing Instructions are not allowed in SOAP documents");
+    }
+
+    public Attr createAttribute(String name) throws DOMException {
+        boolean isQualifiedName = (name.indexOf(":") > 0);
+        if (isQualifiedName) {
+            String nsUri = null;
+            String prefix = name.substring(0, name.indexOf(":"));
+            //cannot do anything to resolve the URI if prefix is not
+            //XMLNS.
+            if (XMLNS.equals(prefix)) {
+                nsUri = ElementImpl.XMLNS_URI;
+                return createAttributeNS(nsUri, name);
+            }
+        }
+
+        return super.createAttribute(name);
+    }
+
+    public EntityReference createEntityReference(String name)
+        throws DOMException {
+            log.severe("SAAJ0543.soap.entity.refs.not.allowed.in.docs");
+            throw new UnsupportedOperationException("Entity References are not allowed in SOAP documents");
+    }
+
+    public NodeList getElementsByTagName(String tagname) {
+        return super.getElementsByTagName(tagname);
+    }
+
+    public org.w3c.dom.Node importNode(Node importedNode, boolean deep)
+        throws DOMException {
+        return super.importNode(importedNode, deep);
+    }
+
+    public Element createElementNS(String namespaceURI, String qualifiedName)
+        throws DOMException {
+        return ElementFactory.createElement(
+            this,
+            NameImpl.getLocalNameFromTagName(qualifiedName),
+            NameImpl.getPrefixFromTagName(qualifiedName),
+            namespaceURI);
+    }
+
+    public Attr createAttributeNS(String namespaceURI, String qualifiedName)
+        throws DOMException {
+        return super.createAttributeNS(namespaceURI, qualifiedName);
+    }
+
+    public NodeList getElementsByTagNameNS(
+        String namespaceURI,
+        String localName) {
+        return super.getElementsByTagNameNS(namespaceURI, localName);
+    }
+
+    public Element getElementById(String elementId) {
+        return super.getElementById(elementId);
+    }
+
+    public Node cloneNode(boolean deep) {
+        SOAPPartImpl newSoapPart = getSOAPPart().doCloneNode();
+        super.cloneNode(newSoapPart.getDocument(), deep);
+        return newSoapPart;
+    }
+
+    public void cloneNode(SOAPDocumentImpl newdoc, boolean deep) {
+        super.cloneNode(newdoc, deep);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPFactoryImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,179 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import java.util.logging.Logger;
+import java.util.logging.Level;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.*;
+
+import com.sun.xml.internal.messaging.saaj.soap.impl.ElementFactory;
+import com.sun.xml.internal.messaging.saaj.soap.impl.ElementImpl;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+import com.sun.xml.internal.messaging.saaj.util.*;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Attr;
+
+public abstract class SOAPFactoryImpl extends SOAPFactory {
+
+    protected static final Logger
+        log = Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
+                               "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
+
+    protected abstract SOAPDocumentImpl createDocument();
+
+    public SOAPElement createElement(String tagName) throws SOAPException {
+         if (tagName == null) {
+             log.log(
+                 Level.SEVERE,"SAAJ0567.soap.null.input",
+                 new Object[] {"tagName","SOAPFactory.createElement"});
+             throw new SOAPException("Null tagName argument passed to createElement");
+         }
+        return ElementFactory.createElement(createDocument(),
+                        NameImpl.createFromTagName(tagName));
+    }
+
+    public SOAPElement createElement(Name name) throws SOAPException {
+        // @since SAAJ 1.3
+        // If the Name was null it would cause a NullPointerException in earlier release
+        if (name == null) {
+            log.log(Level.SEVERE,"SAAJ0567.soap.null.input",
+                        new Object[] {"name","SOAPFactory.createElement"});
+            throw new SOAPException("Null name argument passed to createElement");
+        }
+        return ElementFactory.createElement(createDocument(), name);
+    }
+
+    public SOAPElement createElement(QName qname) throws SOAPException {
+        if (qname == null) {
+            log.log(Level.SEVERE,"SAAJ0567.soap.null.input",
+                        new Object[] {"qname","SOAPFactory.createElement"});
+            throw new SOAPException("Null qname argument passed to createElement");
+        }
+        return ElementFactory.createElement(createDocument(),qname);
+    }
+
+    public SOAPElement createElement(
+        String localName,
+        String prefix,
+        String uri)  throws SOAPException {
+
+        // @since SAAJ 1.3
+        // if prefix !=null but localName== null then in earlier releases it would create
+        // a Qualified Name  <prefix>:null which is not meaningful
+        if (localName == null) {
+            log.log(Level.SEVERE,"SAAJ0567.soap.null.input",
+                        new Object[] {"localName","SOAPFactory.createElement"});
+            throw new SOAPException("Null localName argument passed to createElement");
+        }
+        return ElementFactory.createElement(createDocument(), localName, prefix, uri);
+    }
+
+    public Name createName(String localName, String prefix, String uri)
+        throws SOAPException {
+        // @since SAAJ 1.3
+        // if localName==null, earlier impl would create Name with localName=""
+        // which is absurd.
+        if (localName == null) {
+            log.log(
+                 Level.SEVERE,"SAAJ0567.soap.null.input",
+                 new Object[] {"localName","SOAPFactory.createName"});
+            throw new SOAPException("Null localName argument passed to createName");
+        }
+        return NameImpl.create(localName, prefix, uri);
+    }
+
+    public Name createName(String localName) throws SOAPException {
+        // @since SAAJ 1.3
+        // if localName==null, earlier impl would create Name with localName=null
+        // which is absurd.
+        if (localName == null) {
+            log.log(
+                Level.SEVERE,"SAAJ0567.soap.null.input",
+                new Object[] {"localName","SOAPFactory.createName"});
+            throw new SOAPException("Null localName argument passed to createName");
+        }
+        return NameImpl.createFromUnqualifiedName(localName);
+    }
+
+    // Note: the child elements might still be org.w3c.dom.Element's, but the
+    // getChildElements will do the conversion to SOAPElement when called.
+    public SOAPElement createElement(Element domElement) throws SOAPException {
+        if (domElement == null) {
+            return null;
+        }
+        return convertToSoapElement(domElement);
+    }
+
+    private  SOAPElement convertToSoapElement(Element element) throws SOAPException {
+
+        if (element instanceof SOAPElement) {
+            return (SOAPElement) element;
+        }
+
+        SOAPElement copy = createElement(
+                                element.getLocalName(),
+                                element.getPrefix(),
+                                element.getNamespaceURI());
+
+        Document ownerDoc = copy.getOwnerDocument();
+
+        NamedNodeMap attrMap = element.getAttributes();
+        for (int i=0; i < attrMap.getLength(); i++) {
+            Attr nextAttr = (Attr)attrMap.item(i);
+            Attr importedAttr = (Attr)ownerDoc.importNode(nextAttr, true);
+            copy.setAttributeNodeNS(importedAttr);
+        }
+
+
+        NodeList nl = element.getChildNodes();
+        for (int i=0; i < nl.getLength(); i++) {
+            org.w3c.dom.Node next = nl.item(i);
+            org.w3c.dom.Node imported = ownerDoc.importNode(next, true);
+            copy.appendChild(imported);
+        }
+
+        return copy;
+    }
+
+    public Detail createDetail() throws SOAPException {
+        throw new UnsupportedOperationException();
+    }
+
+    public  SOAPFault createFault(String reasonText, QName faultCode) throws SOAPException {
+        throw new UnsupportedOperationException();
+    }
+
+    public SOAPFault createFault() throws SOAPException {
+        throw new UnsupportedOperationException();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPIOException.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Created on Nov 19, 2002
+ *
+ * To change this generated comment edit the template variable "filecomment":
+ * Window>Preferences>Java>Templates.
+ * To enable and disable the creation of file comments go to
+ * Window>Preferences>Java>Code Generation.
+ */
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import java.io.*;
+
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+
+public class SOAPIOException extends IOException {
+    SOAPExceptionImpl soapException;
+
+    public SOAPIOException() {
+        super();
+        soapException = new SOAPExceptionImpl();
+        soapException.fillInStackTrace();
+    }
+
+    public SOAPIOException(String s) {
+        super();
+        soapException = new SOAPExceptionImpl(s);
+        soapException.fillInStackTrace();
+    }
+
+    public SOAPIOException(String reason, Throwable cause) {
+        super();
+        soapException = new SOAPExceptionImpl(reason, cause);
+        soapException.fillInStackTrace();
+    }
+
+    public SOAPIOException(Throwable cause) {
+        super(cause.toString());
+        soapException = new SOAPExceptionImpl(cause);
+        soapException.fillInStackTrace();
+    }
+
+    public Throwable fillInStackTrace() {
+        if (soapException != null) {
+            soapException.fillInStackTrace();
+        }
+        return this;
+    }
+
+    public String getLocalizedMessage() {
+        return soapException.getLocalizedMessage();
+    }
+
+    public String getMessage() {
+        return soapException.getMessage();
+    }
+
+    public void printStackTrace() {
+        soapException.printStackTrace();
+    }
+
+    public void printStackTrace(PrintStream s) {
+        soapException.printStackTrace(s);
+    }
+
+    public void printStackTrace(PrintWriter s) {
+        soapException.printStackTrace(s);
+    }
+
+    public String toString() {
+        return soapException.toString();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPPartImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,822 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import java.io.*;
+import java.util.Iterator;
+import java.util.logging.Logger;
+import java.util.logging.Level;
+
+import javax.activation.DataHandler;
+import javax.activation.DataSource;
+import javax.xml.soap.*;
+import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamSource;
+
+import org.w3c.dom.*;
+
+import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeBodyPart;
+
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.ElementImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+import com.sun.xml.internal.messaging.saaj.util.*;
+
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.sax.SAXSource;
+
+/**
+ * SOAPPartImpl is the first attachment. This contains the XML/SOAP document.
+ *
+ * @author Anil Vijendran (anil@sun.com)
+ */
+public abstract class SOAPPartImpl extends SOAPPart implements SOAPDocument {
+    protected static final Logger log =
+        Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
+                         "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
+
+    protected MimeHeaders headers;
+    protected Envelope envelope;
+    protected Source source;
+    protected SOAPDocumentImpl document;
+
+    //flag to indicate if a setContent happened.
+    private boolean sourceWasSet = false;
+
+    // Records whether the input source had an xml decl or not.
+    protected boolean omitXmlDecl = true;
+
+    // Records the charset encoding of the input stream source if provided.
+    protected String sourceCharsetEncoding = null;
+
+    /**
+     * Reference to containing message (may be null)
+     */
+    protected MessageImpl message;
+
+    static final boolean lazyContentLength;
+    static {
+            lazyContentLength = SAAJUtil.getSystemBoolean("saaj.lazy.contentlength");
+    }
+
+    protected SOAPPartImpl() {
+        this(null);
+    }
+
+    protected SOAPPartImpl(MessageImpl message) {
+        document = new SOAPDocumentImpl(this);
+        headers = new MimeHeaders();
+        this.message = message;
+        headers.setHeader("Content-Type", getContentType());
+    }
+
+    protected abstract String getContentType();
+    protected abstract Envelope createEnvelopeFromSource()
+    throws SOAPException;
+    protected abstract Envelope createEmptyEnvelope(String prefix)
+    throws SOAPException;
+    protected abstract SOAPPartImpl duplicateType();
+
+    protected String getContentTypeString() {
+        return getContentType();
+    }
+
+    public boolean isFastInfoset() {
+        return (message != null) ? message.isFastInfoset() : false;
+    }
+
+    public SOAPEnvelope getEnvelope() throws SOAPException {
+
+        // If there is no SOAP envelope already created, then create
+        // one from a source if one exists. If there is a newer source
+        // then use that source.
+
+        if (sourceWasSet)
+              sourceWasSet = false;
+
+        lookForEnvelope();
+        if (envelope != null) {
+            if (source != null) { // there's a newer source, use it
+                document.removeChild(envelope);
+                envelope = createEnvelopeFromSource();
+            }
+        } else if (source != null) {
+            envelope = createEnvelopeFromSource();
+        } else {
+            envelope = createEmptyEnvelope(null);
+            document.insertBefore(envelope, null);
+        }
+        return envelope;
+    }
+
+    protected void lookForEnvelope() throws SOAPException {
+        Element envelopeChildElement = document.doGetDocumentElement();
+        if (envelopeChildElement == null || envelopeChildElement instanceof Envelope) {
+            envelope = (EnvelopeImpl) envelopeChildElement;
+        } else if (!(envelopeChildElement instanceof ElementImpl)) {
+            log.severe("SAAJ0512.soap.incorrect.factory.used");
+            throw new SOAPExceptionImpl("Unable to create envelope: incorrect factory used during tree construction");
+        } else {
+            ElementImpl soapElement = (ElementImpl) envelopeChildElement;
+            if (soapElement.getLocalName().equalsIgnoreCase("Envelope")) {
+                String prefix = soapElement.getPrefix();
+                String uri = (prefix == null) ? soapElement.getNamespaceURI() : soapElement.getNamespaceURI(prefix);
+                if(!uri.equals(NameImpl.SOAP11_NAMESPACE) && !uri.equals(NameImpl.SOAP12_NAMESPACE)) {
+                    log.severe("SAAJ0513.soap.unknown.ns");
+                    throw new SOAPVersionMismatchException("Unable to create envelope from given source because the namespace was not recognized");
+                }
+            } else {
+                log.severe("SAAJ0514.soap.root.elem.not.named.envelope");
+                throw new SOAPExceptionImpl(
+                    "Unable to create envelope from given source because the root element is not named \"Envelope\"");
+            }
+        }
+    }
+
+    public void removeAllMimeHeaders() {
+        headers.removeAllHeaders();
+    }
+
+    public void removeMimeHeader(String header) {
+        headers.removeHeader(header);
+    }
+
+    public String[] getMimeHeader(String name) {
+        return headers.getHeader(name);
+    }
+
+    public void setMimeHeader(String name, String value) {
+        headers.setHeader(name, value);
+    }
+
+    public void addMimeHeader(String name, String value) {
+        headers.addHeader(name, value);
+    }
+
+    public Iterator getAllMimeHeaders() {
+        return headers.getAllHeaders();
+    }
+
+    public Iterator getMatchingMimeHeaders(String[] names) {
+        return headers.getMatchingHeaders(names);
+    }
+
+    public Iterator getNonMatchingMimeHeaders(String[] names) {
+        return headers.getNonMatchingHeaders(names);
+    }
+
+    public Source getContent() throws SOAPException {
+        if (source != null) {
+            InputStream bis = null;
+            if (source instanceof JAXMStreamSource) {
+                StreamSource streamSource = (StreamSource)source;
+                bis = streamSource.getInputStream();
+            } else if (FastInfosetReflection.isFastInfosetSource(source)) {
+                // FastInfosetSource inherits from SAXSource
+                SAXSource saxSource = (SAXSource)source;
+                bis = saxSource.getInputSource().getByteStream();
+            }
+
+            if (bis != null) {
+                try {
+                    bis.reset();
+                } catch (IOException e) {
+                    /* This exception will never be thrown.
+                     *
+                     * The setContent method will modify the source
+                     * if StreamSource to JAXMStreamSource, that uses
+                     * a ByteInputStream, and for a FastInfosetSource will
+                     * replace the InputStream with a ByteInputStream.
+                     */
+                }
+            }
+            return source;
+        }
+
+        return ((Envelope) getEnvelope()).getContent();
+    }
+
+    public void setContent(Source source) throws SOAPException {
+        try {
+            if (source instanceof StreamSource) {
+                InputStream is = ((StreamSource) source).getInputStream();
+                Reader rdr = ((StreamSource) source).getReader();
+
+                if (is != null) {
+                    this.source = new JAXMStreamSource(is);
+                } else if (rdr != null) {
+                    this.source = new JAXMStreamSource(rdr);
+                } else {
+                    log.severe("SAAJ0544.soap.no.valid.reader.for.src");
+                    throw new SOAPExceptionImpl("Source does not have a valid Reader or InputStream");
+                }
+            }
+            else if (FastInfosetReflection.isFastInfosetSource(source)) {
+                // InputStream is = source.getInputStream()
+                InputStream is = FastInfosetReflection.FastInfosetSource_getInputStream(source);
+
+                /*
+                 * Underlying stream must be ByteInputStream for getContentAsStream(). We pay the
+                 * cost of copying the underlying bytes here to avoid multiple copies every time
+                 * getBytes() is called on a ByteInputStream.
+                 */
+                if (!(is instanceof ByteInputStream)) {
+                    ByteOutputStream bout = null;
+                    try {
+                        bout = new ByteOutputStream();
+                        bout.write(is);
+
+                        // source.setInputStream(new ByteInputStream(...))
+                        FastInfosetReflection.FastInfosetSource_setInputStream(
+                                source, bout.newInputStream());
+                    } finally {
+                        if (bout != null)
+                            bout.close();
+                    }
+                }
+                this.source = source;
+            }
+            else {
+                this.source = source;
+            }
+            sourceWasSet = true;
+        }
+        catch (Exception ex) {
+            ex.printStackTrace();
+
+            log.severe("SAAJ0545.soap.cannot.set.src.for.part");
+            throw new SOAPExceptionImpl(
+            "Error setting the source for SOAPPart: " + ex.getMessage());
+        }
+    }
+
+    public InputStream getContentAsStream() throws IOException {
+        if (source != null) {
+            InputStream is = null;
+
+            // Allow message to be transcode if so requested
+            if (source instanceof StreamSource && !isFastInfoset()) {
+                is = ((StreamSource) source).getInputStream();
+            }
+            else if (FastInfosetReflection.isFastInfosetSource(source) &&
+                isFastInfoset())
+            {
+                try {
+                    // InputStream is = source.getInputStream()
+                    is = FastInfosetReflection.FastInfosetSource_getInputStream(source);
+                }
+                catch (Exception e) {
+                    throw new IOException(e.toString());
+                }
+            }
+
+            if (is != null) {
+                if (lazyContentLength) {
+                    return is;
+                }
+                if (!(is instanceof ByteInputStream)) {
+                    log.severe("SAAJ0546.soap.stream.incorrect.type");
+                    throw new IOException("Internal error: stream not of the right type");
+                }
+                return (ByteInputStream) is;
+            }
+            // need to do something here for reader...
+            // for now we'll see if we can fallback...
+        }
+
+        ByteOutputStream b = new ByteOutputStream();
+
+        Envelope env = null;
+
+        try {
+            env = (Envelope) getEnvelope();
+            env.output(b, isFastInfoset());
+        }
+        catch (SOAPException soapException) {
+            log.severe("SAAJ0547.soap.cannot.externalize");
+            throw new SOAPIOException(
+            "SOAP exception while trying to externalize: ",
+            soapException);
+        }
+
+        return b.newInputStream();
+    }
+
+    MimeBodyPart getMimePart() throws SOAPException {
+        try {
+            MimeBodyPart headerEnvelope = new MimeBodyPart();
+
+            headerEnvelope.setDataHandler(getDataHandler());
+            AttachmentPartImpl.copyMimeHeaders(headers, headerEnvelope);
+
+            return headerEnvelope;
+        } catch (SOAPException ex) {
+            throw ex;
+        } catch (Exception ex) {
+            log.severe("SAAJ0548.soap.cannot.externalize.hdr");
+            throw new SOAPExceptionImpl("Unable to externalize header", ex);
+        }
+    }
+
+    MimeHeaders getMimeHeaders() {
+        return headers;
+    }
+
+    DataHandler getDataHandler() {
+        DataSource ds = new DataSource() {
+            public OutputStream getOutputStream() throws IOException {
+                throw new IOException("Illegal Operation");
+            }
+
+            public String getContentType() {
+                return getContentTypeString();
+            }
+
+            public String getName() {
+                return getContentId();
+            }
+
+            public InputStream getInputStream() throws IOException {
+                return getContentAsStream();
+            }
+        };
+        return new DataHandler(ds);
+    }
+
+    public SOAPDocumentImpl getDocument() {
+        handleNewSource();
+        return document;
+    }
+
+    public SOAPPartImpl getSOAPPart() {
+        return this;
+    }
+
+    public DocumentType getDoctype() {
+        return document.getDoctype();
+    }
+
+    // Forward all of these calls to the document to ensure that they work the
+    // same way whether they are called from here or directly from the document.
+    // If the document needs any help from this SOAPPart then
+    // Make it use a call-back as in doGetDocumentElement() below
+    public DOMImplementation getImplementation() {
+        return document.getImplementation();
+    }
+
+    public Element getDocumentElement() {
+        // If there is no SOAP envelope already created, then create
+        // one from a source if one exists. If there is a newer source
+        // then use that source.
+        try {
+            getEnvelope();
+        } catch (SOAPException e) {
+        }
+        return document.getDocumentElement();
+    }
+
+    protected void doGetDocumentElement() {
+        handleNewSource();
+        try {
+            lookForEnvelope();
+        } catch (SOAPException e) {
+        }
+    }
+
+    public Element createElement(String tagName) throws DOMException {
+        return document.createElement(tagName);
+    }
+
+    public DocumentFragment createDocumentFragment() {
+        return document.createDocumentFragment();
+    }
+
+    public org.w3c.dom.Text createTextNode(String data) {
+        return document.createTextNode(data);
+    }
+
+    public Comment createComment(String data) {
+        return document.createComment(data);
+    }
+
+    public CDATASection createCDATASection(String data) throws DOMException {
+        return document.createCDATASection(data);
+    }
+
+    public ProcessingInstruction createProcessingInstruction(
+    String target,
+    String data)
+    throws DOMException {
+        return document.createProcessingInstruction(target, data);
+    }
+
+    public Attr createAttribute(String name) throws DOMException {
+        return document.createAttribute(name);
+    }
+
+    public EntityReference createEntityReference(String name)
+    throws DOMException {
+        return document.createEntityReference(name);
+    }
+
+    public NodeList getElementsByTagName(String tagname) {
+        handleNewSource();
+        return document.getElementsByTagName(tagname);
+    }
+
+    public org.w3c.dom.Node importNode(
+        org.w3c.dom.Node importedNode,
+        boolean deep)
+        throws DOMException {
+        handleNewSource();
+        return document.importNode(importedNode, deep);
+    }
+
+    public Element createElementNS(String namespaceURI, String qualifiedName)
+    throws DOMException {
+        return document.createElementNS(namespaceURI, qualifiedName);
+    }
+
+    public Attr createAttributeNS(String namespaceURI, String qualifiedName)
+    throws DOMException {
+        return document.createAttributeNS(namespaceURI, qualifiedName);
+    }
+
+    public NodeList getElementsByTagNameNS(
+        String namespaceURI,
+        String localName) {
+        handleNewSource();
+        return document.getElementsByTagNameNS(namespaceURI, localName);
+    }
+
+    public Element getElementById(String elementId) {
+        handleNewSource();
+        return document.getElementById(elementId);
+    }
+    public org.w3c.dom.Node appendChild(org.w3c.dom.Node newChild)
+        throws DOMException {
+        handleNewSource();
+        return document.appendChild(newChild);
+    }
+
+    public org.w3c.dom.Node cloneNode(boolean deep) {
+        handleNewSource();
+        return document.cloneNode(deep);
+    }
+
+    protected SOAPPartImpl doCloneNode() {
+        handleNewSource();
+        SOAPPartImpl newSoapPart = duplicateType();
+
+        newSoapPart.headers = MimeHeadersUtil.copy(this.headers);
+        newSoapPart.source = this.source;
+        return newSoapPart;
+    }
+
+    public NamedNodeMap getAttributes() {
+        return document.getAttributes();
+    }
+
+    public NodeList getChildNodes() {
+        handleNewSource();
+        return document.getChildNodes();
+    }
+
+    public org.w3c.dom.Node getFirstChild() {
+        handleNewSource();
+        return document.getFirstChild();
+    }
+
+    public org.w3c.dom.Node getLastChild() {
+        handleNewSource();
+        return document.getLastChild();
+    }
+
+    public String getLocalName() {
+        return document.getLocalName();
+    }
+
+    public String getNamespaceURI() {
+        return document.getNamespaceURI();
+    }
+
+    public org.w3c.dom.Node getNextSibling() {
+        handleNewSource();
+        return document.getNextSibling();
+    }
+
+    public String getNodeName() {
+        return document.getNodeName();
+    }
+
+    public short getNodeType() {
+        return document.getNodeType();
+    }
+
+    public String getNodeValue() throws DOMException {
+        return document.getNodeValue();
+    }
+
+    public Document getOwnerDocument() {
+        return document.getOwnerDocument();
+    }
+
+    public org.w3c.dom.Node getParentNode() {
+        return document.getParentNode();
+    }
+
+    public String getPrefix() {
+        return document.getPrefix();
+    }
+
+    public org.w3c.dom.Node getPreviousSibling() {
+        return document.getPreviousSibling();
+    }
+
+    public boolean hasAttributes() {
+        return document.hasAttributes();
+    }
+
+    public boolean hasChildNodes() {
+        handleNewSource();
+        return document.hasChildNodes();
+    }
+
+    public org.w3c.dom.Node insertBefore(
+        org.w3c.dom.Node arg0,
+        org.w3c.dom.Node arg1)
+        throws DOMException {
+        handleNewSource();
+        return document.insertBefore(arg0, arg1);
+    }
+
+    public boolean isSupported(String arg0, String arg1) {
+        return document.isSupported(arg0, arg1);
+    }
+
+    public void normalize() {
+        handleNewSource();
+        document.normalize();
+    }
+
+    public org.w3c.dom.Node removeChild(org.w3c.dom.Node arg0)
+        throws DOMException {
+        handleNewSource();
+        return document.removeChild(arg0);
+    }
+
+    public org.w3c.dom.Node replaceChild(
+        org.w3c.dom.Node arg0,
+        org.w3c.dom.Node arg1)
+        throws DOMException {
+        handleNewSource();
+        return document.replaceChild(arg0, arg1);
+    }
+
+    public void setNodeValue(String arg0) throws DOMException {
+        document.setNodeValue(arg0);
+    }
+
+    public void setPrefix(String arg0) throws DOMException {
+        document.setPrefix(arg0);
+    }
+
+    private void handleNewSource() {
+        if (sourceWasSet) {
+         // There is a newer source use that source.
+         try {
+             getEnvelope();
+         } catch (SOAPException e) {
+         }
+      }
+    }
+
+    protected XMLDeclarationParser lookForXmlDecl() throws SOAPException {
+        if ((source != null) && (source instanceof StreamSource)) {
+
+            Reader reader = null;
+
+            InputStream inputStream = ((StreamSource) source).getInputStream();
+            if (inputStream != null) {
+                if (getSourceCharsetEncoding() == null) {
+                    reader = new InputStreamReader(inputStream);
+                } else {
+                    try {
+                        reader =
+                            new InputStreamReader(
+                                inputStream, getSourceCharsetEncoding());
+                    } catch (UnsupportedEncodingException uee) {
+                        log.log(
+                            Level.SEVERE,
+                            "SAAJ0551.soap.unsupported.encoding",
+                            new Object[] {getSourceCharsetEncoding()});
+                        throw new SOAPExceptionImpl(
+                            "Unsupported encoding " + getSourceCharsetEncoding(),
+                            uee);
+                    }
+                }
+            } else {
+                reader = ((StreamSource) source).getReader();
+            }
+            if (reader != null) {
+                PushbackReader pushbackReader =
+                    new PushbackReader(reader, 4096); //some size to unread <?xml ....?>
+                XMLDeclarationParser ev =
+                        new XMLDeclarationParser(pushbackReader);
+                try {
+                    ev.parse();
+                } catch (Exception e) {
+                    log.log(
+                        Level.SEVERE,
+                        "SAAJ0552.soap.xml.decl.parsing.failed");
+                    throw new SOAPExceptionImpl(
+                        "XML declaration parsing failed", e);
+                }
+                String xmlDecl = ev.getXmlDeclaration();
+                if ((xmlDecl != null) && (xmlDecl.length() > 0)) {
+                    this.omitXmlDecl = false;
+                }
+                if (lazyContentLength) {
+                    source = new StreamSource(pushbackReader);
+                }
+                return ev;
+            }
+        } else if ((source != null) && (source instanceof DOMSource)) {
+           //TODO: A Domsource maynot contain XMLDecl ?.
+        }
+        return null;
+    }
+
+    public void setSourceCharsetEncoding(String charset) {
+        this.sourceCharsetEncoding = charset;
+    }
+
+    public org.w3c.dom.Node renameNode(org.w3c.dom.Node n, String namespaceURI, String qualifiedName)
+        throws DOMException {
+        handleNewSource();
+        return document.renameNode(n, namespaceURI, qualifiedName);
+    }
+
+    public void normalizeDocument() {
+        document.normalizeDocument();
+    }
+
+    public DOMConfiguration getDomConfig() {
+        return document.getDomConfig();
+    }
+
+    public org.w3c.dom.Node adoptNode(org.w3c.dom.Node source) throws DOMException {
+        handleNewSource();
+        return document.adoptNode(source);
+    }
+
+    public void setDocumentURI(String documentURI) {
+        document.setDocumentURI(documentURI);
+    }
+
+    public String getDocumentURI() {
+        return document.getDocumentURI();
+    }
+
+    public void  setStrictErrorChecking(boolean strictErrorChecking) {
+        document.setStrictErrorChecking(strictErrorChecking);
+    }
+
+    public String getInputEncoding() {
+        return document.getInputEncoding();
+    }
+
+    public String getXmlEncoding() {
+        return document.getXmlEncoding();
+    }
+
+    public boolean getXmlStandalone() {
+        return document.getXmlStandalone();
+    }
+
+    public void setXmlStandalone(boolean xmlStandalone) throws DOMException {
+        document.setXmlStandalone(xmlStandalone);
+    }
+
+    public String getXmlVersion() {
+        return document.getXmlVersion();
+    }
+
+    public void setXmlVersion(String xmlVersion) throws DOMException {
+        document.setXmlVersion(xmlVersion);
+    }
+
+    public boolean  getStrictErrorChecking() {
+        return document.getStrictErrorChecking();
+    }
+
+    // DOM L3 methods from org.w3c.dom.Node
+    public String getBaseURI() {
+        return document.getBaseURI();
+    }
+
+    public short compareDocumentPosition(org.w3c.dom.Node other)
+                              throws DOMException {
+        return document.compareDocumentPosition(other);
+    }
+
+    public String getTextContent()
+                      throws DOMException {
+        return document.getTextContent();
+    }
+
+    public void setTextContent(String textContent) throws DOMException {
+         document.setTextContent(textContent);
+    }
+
+    public boolean isSameNode(org.w3c.dom.Node other) {
+        return document.isSameNode(other);
+    }
+
+    public String lookupPrefix(String namespaceURI) {
+        return document.lookupPrefix(namespaceURI);
+    }
+
+    public boolean isDefaultNamespace(String namespaceURI) {
+        return document.isDefaultNamespace(namespaceURI);
+    }
+
+    public String lookupNamespaceURI(String prefix) {
+        return document.lookupNamespaceURI(prefix);
+    }
+
+    public boolean isEqualNode(org.w3c.dom.Node arg) {
+        return document.isEqualNode(arg);
+    }
+
+    public Object getFeature(String feature,
+                  String version) {
+        return  document.getFeature(feature,version);
+    }
+
+    public Object setUserData(String key,
+                   Object data,
+                  UserDataHandler handler) {
+        return document.setUserData(key, data, handler);
+    }
+
+    public Object getUserData(String key) {
+        return document.getUserData(key);
+    }
+
+    public void recycleNode() {
+        // Nothing seems to be required to be done here
+    }
+
+    public String getValue() {
+        return null;
+    }
+
+    public void setValue(String value) {
+        log.severe("SAAJ0571.soappart.setValue.not.defined");
+        throw new IllegalStateException("Setting value of a soap part is not defined");
+    }
+
+    public void setParentElement(SOAPElement parent) throws SOAPException {
+        log.severe("SAAJ0570.soappart.parent.element.not.defined");
+        throw new SOAPExceptionImpl("The parent element of a soap part is not defined");
+    }
+
+    public SOAPElement getParentElement() {
+        return null;
+    }
+
+    public void detachNode() {
+        // Nothing seems to be required to be done here
+    }
+
+    public String getSourceCharsetEncoding() {
+        return sourceCharsetEncoding;
+    }
+
+    public abstract String getSOAPNamespace();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPVersionMismatchException.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+
+public class SOAPVersionMismatchException extends SOAPExceptionImpl {
+    /**
+     * Constructs a <code>SOAPExceptionImpl</code> object with no
+     * reason or embedded <code>Throwable</code> object.
+     */
+    public SOAPVersionMismatchException() {
+        super();
+    }
+
+    /**
+     * Constructs a <code>SOAPExceptionImpl</code> object with the given
+     * <code>String</code> as the reason for the exception being thrown.
+     *
+     * @param reason a description of what caused the exception
+     */
+    public SOAPVersionMismatchException(String reason) {
+        super(reason);
+    }
+
+    /**
+     * Constructs a <code>SOAPExceptionImpl</code> object with the given
+     * <code>String</code> as the reason for the exception being thrown
+     * and the given <code>Throwable</code> object as an embedded
+     * exception.
+     *
+     * @param reason a description of what caused the exception
+     * @param cause a <code>Throwable</code> object that is to
+     *        be embedded in this <code>SOAPExceptionImpl</code> object
+     */
+    public SOAPVersionMismatchException(String reason, Throwable cause) {
+        super(reason, cause);
+    }
+
+    /**
+     * Constructs a <code>SOAPExceptionImpl</code> object initialized
+     * with the given <code>Throwable</code> object.
+     */
+    public SOAPVersionMismatchException(Throwable cause) {
+        super(cause);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/StaxBridge.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import com.sun.xml.internal.messaging.saaj.util.stax.SaajStaxWriter;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPException;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import com.sun.xml.internal.org.jvnet.staxex.util.XMLStreamReaderToXMLStreamWriter;
+
+
+/**
+ * StaxBridge builds Envelope using a XMLStreamReaderToXMLStreamWriter
+ *
+ * @author shih-chang.chen@oracle.com
+ */
+public abstract class StaxBridge {
+        protected SaajStaxWriter saajWriter;
+        protected XMLStreamReaderToXMLStreamWriter readerToWriter;
+        protected XMLStreamReaderToXMLStreamWriter.Breakpoint breakpoint;
+
+
+        public StaxBridge(SOAPPartImpl soapPart) throws SOAPException {
+                readerToWriter = new XMLStreamReaderToXMLStreamWriter();
+                saajWriter = new SaajStaxWriter(soapPart.message, soapPart.getSOAPNamespace());
+        }
+
+        public void bridgeEnvelopeAndHeaders() throws XMLStreamException {
+                readerToWriter.bridge(breakpoint);
+        }
+
+        public void bridgePayload() throws XMLStreamException {
+                readerToWriter.bridge(breakpoint);
+        }
+
+    abstract public XMLStreamReader getPayloadReader();
+
+    abstract public QName getPayloadQName();
+
+    abstract public String getPayloadAttributeValue(String attName) ;
+
+    abstract public String getPayloadAttributeValue(QName attName) ;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/StaxLazySourceBridge.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,105 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPException;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+
+import com.sun.xml.internal.messaging.saaj.LazyEnvelopeSource;
+import com.sun.xml.internal.org.jvnet.staxex.util.XMLStreamReaderToXMLStreamWriter;
+
+
+/**
+ * StaxBridge builds Envelope from LazyEnvelopeSource
+ *
+ * @author shih-chang.chen@oracle.com
+ */
+public class StaxLazySourceBridge extends StaxBridge {
+        private LazyEnvelopeSource lazySource;
+
+        public StaxLazySourceBridge(LazyEnvelopeSource src, SOAPPartImpl soapPart) throws SOAPException {
+                super(soapPart);
+                lazySource = src;
+                final String soapEnvNS = soapPart.getSOAPNamespace();
+                try {
+                        breakpoint = new XMLStreamReaderToXMLStreamWriter.Breakpoint(src.readToBodyStarTag(), saajWriter) {
+                                        public boolean proceedAfterStartElement()  {
+                                                if ("Body".equals(reader.getLocalName()) && soapEnvNS.equals(reader.getNamespaceURI()) ){
+                                                        return false;
+                                                } else
+                                                        return true;
+                                        }
+                                };
+                } catch (XMLStreamException e) {
+                        throw new SOAPException(e);
+                }
+        }
+
+        @Override
+    public XMLStreamReader getPayloadReader() {
+        return lazySource.readPayload();
+//              throw new UnsupportedOperationException();
+    }
+
+        @Override
+    public QName getPayloadQName() {
+        return lazySource.getPayloadQName();
+    }
+
+        @Override
+    public String getPayloadAttributeValue(String attName) {
+        if (lazySource.isPayloadStreamReader()) {
+            XMLStreamReader reader = lazySource.readPayload();
+            if (reader.getEventType() == reader.START_ELEMENT) {
+                return reader.getAttributeValue(null, attName);
+            }
+        }
+        return null;
+    }
+
+        @Override
+    public String getPayloadAttributeValue(QName attName) {
+        if (lazySource.isPayloadStreamReader()) {
+            XMLStreamReader reader = lazySource.readPayload();
+            if (reader.getEventType() == reader.START_ELEMENT) {
+                return reader.getAttributeValue(attName.getNamespaceURI(), attName.getLocalPart());
+            }
+        }
+        return null;
+    }
+
+        public void bridgePayload() throws XMLStreamException {
+                //Assuming out is at Body
+                writePayloadTo(saajWriter);
+        }
+
+        public void writePayloadTo(XMLStreamWriter writer) throws XMLStreamException {
+        lazySource.writePayloadTo(writer);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/StaxReaderBridge.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPException;
+import javax.xml.stream.XMLStreamReader;
+
+import com.sun.xml.internal.org.jvnet.staxex.util.XMLStreamReaderToXMLStreamWriter;
+
+/**
+ * StaxBridge builds Envelope using a XMLStreamReaderToXMLStreamWriter
+ *
+ * @author shih-chang.chen@oracle.com
+ */
+public class StaxReaderBridge extends StaxBridge {
+        private XMLStreamReader in;
+
+        public StaxReaderBridge(XMLStreamReader reader, SOAPPartImpl soapPart) throws SOAPException {
+                super(soapPart);
+                in = reader;
+                final String soapEnvNS = soapPart.getSOAPNamespace();
+                breakpoint =  new XMLStreamReaderToXMLStreamWriter.Breakpoint(reader, saajWriter) {
+                        boolean seenBody = false;
+                        boolean stopedAtBody = false;
+                    public boolean proceedBeforeStartElement()  {
+                        if (stopedAtBody) return true;
+                        if (seenBody) {
+                                stopedAtBody = true;
+                                return false;
+                        }
+                            if ("Body".equals(reader.getLocalName()) && soapEnvNS.equals(reader.getNamespaceURI()) ){
+                                seenBody = true;
+                            }
+                            return true;
+                    }
+                };
+        }
+
+    public XMLStreamReader getPayloadReader() {
+        return in;
+    }
+
+    public QName getPayloadQName() {
+        return (in.getEventType() == in.START_ELEMENT) ? in.getName() : null;
+    }
+
+    public String getPayloadAttributeValue(String attName) {
+        return (in.getEventType() == in.START_ELEMENT) ? in.getAttributeValue(null, attName) : null;
+    }
+
+    public String getPayloadAttributeValue(QName attName) {
+        return (in.getEventType() == in.START_ELEMENT) ? in.getAttributeValue(attName.getNamespaceURI(), attName.getLocalPart()) : null;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/StringDataContentHandler.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,167 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import java.awt.datatransfer.DataFlavor;
+import java.io.*;
+
+import javax.activation.*;
+import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeUtility;
+import com.sun.xml.internal.messaging.saaj.packaging.mime.util.ASCIIUtility;
+import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.ContentType;
+
+/**
+ * JAF data content handler for text/plain --> String
+ *
+ */
+public class StringDataContentHandler implements DataContentHandler {
+    private static ActivationDataFlavor myDF = new ActivationDataFlavor(
+        java.lang.String.class,
+        "text/plain",
+        "Text String");
+
+    protected ActivationDataFlavor getDF() {
+        return myDF;
+    }
+
+    /**
+     * Return the DataFlavors for this <code>DataContentHandler</code>.
+     *
+     * @return The DataFlavors
+     */
+    public DataFlavor[] getTransferDataFlavors() {
+        return new DataFlavor[] { getDF() };
+    }
+
+    /**
+     * Return the Transfer Data of type DataFlavor from InputStream.
+     *
+     * @param df The DataFlavor
+     * @param ds The DataSource corresponding to the data
+     * @return String object
+     */
+    public Object getTransferData(DataFlavor df, DataSource ds)
+                        throws IOException {
+        // use myDF.equals to be sure to get ActivationDataFlavor.equals,
+        // which properly ignores Content-Type parameters in comparison
+        if (getDF().equals(df))
+            return getContent(ds);
+        else
+            return null;
+    }
+
+    public Object getContent(DataSource ds) throws IOException {
+        String enc = null;
+        InputStreamReader is = null;
+
+        try {
+            enc = getCharset(ds.getContentType());
+            is = new InputStreamReader(ds.getInputStream(), enc);
+        } catch (IllegalArgumentException iex) {
+            /*
+             * An unknown charset of the form ISO-XXX-XXX will cause
+             * the JDK to throw an IllegalArgumentException.  The
+             * JDK will attempt to create a classname using this string,
+             * but valid classnames must not contain the character '-',
+             * and this results in an IllegalArgumentException, rather than
+             * the expected UnsupportedEncodingException.  Yikes.
+             */
+            throw new UnsupportedEncodingException(enc);
+        }
+
+        try {
+            int pos = 0;
+            int count;
+            char buf[] = new char[1024];
+
+            while ((count = is.read(buf, pos, buf.length - pos)) != -1) {
+                pos += count;
+                if (pos >= buf.length) {
+                    int size = buf.length;
+                    if (size < 256*1024)
+                        size += size;
+                    else
+                        size += 256*1024;
+                    char tbuf[] = new char[size];
+                    System.arraycopy(buf, 0, tbuf, 0, pos);
+                    buf = tbuf;
+                }
+            }
+            return new String(buf, 0, pos);
+        } finally {
+            try {
+                is.close();
+            } catch (IOException ex) { }
+        }
+    }
+
+    /**
+     * Write the object to the output stream, using the specified MIME type.
+     */
+    public void writeTo(Object obj, String type, OutputStream os)
+                        throws IOException {
+        if (!(obj instanceof String))
+            throw new IOException("\"" + getDF().getMimeType() +
+                "\" DataContentHandler requires String object, " +
+                "was given object of type " + obj.getClass().toString());
+
+        String enc = null;
+        OutputStreamWriter osw = null;
+
+        try {
+            enc = getCharset(type);
+            osw = new OutputStreamWriter(os, enc);
+        } catch (IllegalArgumentException iex) {
+            /*
+             * An unknown charset of the form ISO-XXX-XXX will cause
+             * the JDK to throw an IllegalArgumentException.  The
+             * JDK will attempt to create a classname using this string,
+             * but valid classnames must not contain the character '-',
+             * and this results in an IllegalArgumentException, rather than
+             * the expected UnsupportedEncodingException.  Yikes.
+             */
+            throw new UnsupportedEncodingException(enc);
+        }
+
+        String s = (String)obj;
+        osw.write(s, 0, s.length());
+        osw.flush();
+    }
+
+    private String getCharset(String type) {
+        try {
+            ContentType ct = new ContentType(type);
+            String charset = ct.getParameter("charset");
+            if (charset == null)
+                // If the charset parameter is absent, use US-ASCII.
+                charset = "us-ascii";
+            return MimeUtility.javaCharset(charset);
+        } catch (Exception ex) {
+            return null;
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/XmlDataContentHandler.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,127 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap;
+
+import java.awt.datatransfer.DataFlavor;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import javax.activation.*;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import com.sun.xml.internal.messaging.saaj.util.transform.EfficientStreamingTransformer;
+
+/**
+ * JAF data handler for XML content
+ *
+ * @author Anil Vijendran
+ */
+public class XmlDataContentHandler implements DataContentHandler {
+    public static final String STR_SRC = "javax.xml.transform.stream.StreamSource";
+    private static Class streamSourceClass = null;
+
+    public XmlDataContentHandler() throws ClassNotFoundException {
+        if (streamSourceClass == null) {
+            streamSourceClass = Class.forName(STR_SRC);
+        }
+    }
+
+    /**
+     * return the DataFlavors for this <code>DataContentHandler</code>
+     * @return The DataFlavors.
+     */
+    public DataFlavor[] getTransferDataFlavors() { // throws Exception;
+        DataFlavor flavors[] = new DataFlavor[2];
+
+        flavors[0] =
+            new ActivationDataFlavor(streamSourceClass, "text/xml", "XML");
+        flavors[1] =
+            new ActivationDataFlavor(streamSourceClass, "application/xml", "XML");
+
+        return flavors;
+    }
+
+    /**
+     * return the Transfer Data of type DataFlavor from InputStream
+     * @param df The DataFlavor.
+     * @param ins The InputStream corresponding to the data.
+     * @return The constructed Object.
+     */
+    public Object getTransferData(DataFlavor flavor, DataSource dataSource)
+        throws IOException {
+        if (flavor.getMimeType().startsWith("text/xml") ||
+                flavor.getMimeType().startsWith("application/xml")) {
+            if (flavor.getRepresentationClass().getName().equals(STR_SRC)) {
+                return new StreamSource(dataSource.getInputStream());
+            }
+        }
+        return null;
+    }
+
+    /**
+     *
+     */
+    public Object getContent(DataSource dataSource) throws IOException {
+        return new StreamSource(dataSource.getInputStream());
+    }
+
+    /**
+     * construct an object from a byte stream
+     * (similar semantically to previous method, we are deciding
+     *  which one to support)
+     */
+    public void writeTo(Object obj, String mimeType, OutputStream os)
+        throws IOException {
+        if (!mimeType.startsWith("text/xml") && !mimeType.startsWith("application/xml"))
+            throw new IOException(
+                "Invalid content type \"" + mimeType + "\" for XmlDCH");
+
+
+        try {
+            Transformer transformer = EfficientStreamingTransformer.newTransformer();
+            StreamResult result = new StreamResult(os);
+            if (obj instanceof DataSource) {
+                // Streaming transform applies only to javax.xml.transform.StreamSource
+                transformer.transform((Source) getContent((DataSource)obj), result);
+            } else {
+                Source src=null;
+                if (obj instanceof String) {
+                     src= new StreamSource(new java.io.StringReader((String) obj));
+                } else {
+                    src=(Source) obj;
+                }
+                transformer.transform(src, result);
+            }
+        } catch (Exception ex) {
+            throw new IOException(
+                "Unable to run the JAXP transformer on a stream "
+                    + ex.getMessage());
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/dynamic/SOAPFactoryDynamicImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.dynamic;
+
+import javax.xml.soap.Detail;
+import javax.xml.soap.SOAPException;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPFactoryImpl;
+
+public class SOAPFactoryDynamicImpl extends SOAPFactoryImpl {
+    protected SOAPDocumentImpl createDocument() {
+        return null;
+    }
+
+    public Detail createDetail() throws SOAPException {
+        throw new UnsupportedOperationException(
+                "createDetail() not supported for Dynamic Protocol");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/dynamic/SOAPMessageFactoryDynamicImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.dynamic;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.xml.soap.*;
+
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+import com.sun.xml.internal.messaging.saaj.soap.MessageFactoryImpl;
+
+public class SOAPMessageFactoryDynamicImpl extends MessageFactoryImpl {
+    public SOAPMessage createMessage() throws SOAPException {
+        throw new UnsupportedOperationException(
+                "createMessage() not supported for Dynamic Protocol");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/BodyElementImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap.impl;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.*;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+
+/**
+ * All elements of the SOAP-ENV:BODY.
+ *
+ * @author Anil Vijendran (akv@eng.sun.com)
+ */
+public abstract class BodyElementImpl
+    extends ElementImpl
+    implements SOAPBodyElement {
+
+    public BodyElementImpl(SOAPDocumentImpl ownerDoc, Name qname) {
+        super(ownerDoc, qname);
+    }
+
+    public BodyElementImpl(SOAPDocumentImpl ownerDoc, QName qname) {
+        super(ownerDoc, qname);
+    }
+
+    public void setParentElement(SOAPElement element) throws SOAPException {
+        if (! (element instanceof SOAPBody)) {
+            log.severe("SAAJ0101.impl.parent.of.body.elem.mustbe.body");
+            throw new SOAPException("Parent of a SOAPBodyElement has to be a SOAPBody");
+        }
+        super.setParentElement(element);
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/BodyImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,467 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap.impl;
+
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.logging.Level;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.*;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.w3c.dom.*;
+import org.w3c.dom.Node;
+
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.StaxBridge;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+
+/**
+ * The implementation of SOAP-ENV:BODY or the SOAPBody abstraction.
+ *
+ * @author Anil Vijendran (anil@sun.com)
+ */
+public abstract class BodyImpl extends ElementImpl implements SOAPBody {
+    private SOAPFault fault;
+//  private XMLStreamReaderToXMLStreamWriter staxBridge;
+    private StaxBridge staxBridge;
+    private boolean payloadStreamRead = false;
+
+    protected BodyImpl(SOAPDocumentImpl ownerDoc, NameImpl bodyName) {
+        super(ownerDoc, bodyName);
+    }
+
+    protected abstract NameImpl getFaultName(String name);
+    protected abstract boolean isFault(SOAPElement child);
+    protected abstract SOAPBodyElement createBodyElement(Name name);
+    protected abstract SOAPBodyElement createBodyElement(QName name);
+    protected abstract SOAPFault createFaultElement();
+    protected abstract QName getDefaultFaultCode();
+
+    public SOAPFault addFault() throws SOAPException {
+        if (hasFault()) {
+            log.severe("SAAJ0110.impl.fault.already.exists");
+            throw new SOAPExceptionImpl("Error: Fault already exists");
+        }
+
+        fault = createFaultElement();
+
+        addNode(fault);
+
+        fault.setFaultCode(getDefaultFaultCode());
+        fault.setFaultString("Fault string, and possibly fault code, not set");
+
+        return fault;
+    }
+
+    public SOAPFault addFault(
+        Name faultCode,
+        String faultString,
+        Locale locale)
+        throws SOAPException {
+
+        SOAPFault fault = addFault();
+        fault.setFaultCode(faultCode);
+        fault.setFaultString(faultString, locale);
+        return fault;
+    }
+
+   public SOAPFault addFault(
+        QName faultCode,
+        String faultString,
+        Locale locale)
+        throws SOAPException {
+
+        SOAPFault fault = addFault();
+        fault.setFaultCode(faultCode);
+        fault.setFaultString(faultString, locale);
+        return fault;
+    }
+
+    public SOAPFault addFault(Name faultCode, String faultString)
+        throws SOAPException {
+
+        SOAPFault fault = addFault();
+        fault.setFaultCode(faultCode);
+        fault.setFaultString(faultString);
+        return fault;
+    }
+
+    public SOAPFault addFault(QName faultCode, String faultString)
+        throws SOAPException {
+
+        SOAPFault fault = addFault();
+        fault.setFaultCode(faultCode);
+        fault.setFaultString(faultString);
+        return fault;
+    }
+
+    void initializeFault() {
+        FaultImpl flt = (FaultImpl) findFault();
+        fault = flt;
+    }
+
+    protected SOAPElement findFault() {
+        Iterator eachChild = getChildElementNodes();
+        while (eachChild.hasNext()) {
+            SOAPElement child = (SOAPElement) eachChild.next();
+            if (isFault(child)) {
+                return child;
+            }
+        }
+
+        return null;
+    }
+
+    public boolean hasFault() {
+        QName payloadQName = getPayloadQName();
+        return getFaultQName().equals(payloadQName);
+    }
+
+    private Object getFaultQName() {
+        return new QName(getNamespaceURI(), "Fault");
+    }
+
+    public SOAPFault getFault() {
+        if (hasFault()) {
+            if (fault == null) {
+                //initialize fault member
+                fault = (SOAPFault) getFirstChildElement();
+            }
+            return fault;
+        }
+        return null;
+    }
+
+    public SOAPBodyElement addBodyElement(Name name) throws SOAPException {
+        SOAPBodyElement newBodyElement =
+            (SOAPBodyElement) ElementFactory.createNamedElement(
+                ((SOAPDocument) getOwnerDocument()).getDocument(),
+                name.getLocalName(),
+                name.getPrefix(),
+                name.getURI());
+        if (newBodyElement == null) {
+            newBodyElement = createBodyElement(name);
+        }
+        addNode(newBodyElement);
+        return newBodyElement;
+    }
+
+    public SOAPBodyElement addBodyElement(QName qname) throws SOAPException {
+        SOAPBodyElement newBodyElement =
+            (SOAPBodyElement) ElementFactory.createNamedElement(
+                ((SOAPDocument) getOwnerDocument()).getDocument(),
+                qname.getLocalPart(),
+                qname.getPrefix(),
+                qname.getNamespaceURI());
+        if (newBodyElement == null) {
+            newBodyElement = createBodyElement(qname);
+        }
+        addNode(newBodyElement);
+        return newBodyElement;
+    }
+
+    public void setParentElement(SOAPElement element) throws SOAPException {
+
+        if (!(element instanceof SOAPEnvelope)) {
+            log.severe("SAAJ0111.impl.body.parent.must.be.envelope");
+            throw new SOAPException("Parent of SOAPBody has to be a SOAPEnvelope");
+        }
+        super.setParentElement(element);
+    }
+
+    protected SOAPElement addElement(Name name) throws SOAPException {
+        return addBodyElement(name);
+    }
+
+    protected SOAPElement addElement(QName name) throws SOAPException {
+        return addBodyElement(name);
+    }
+
+    //    public Node insertBefore(Node newElement, Node ref) throws DOMException {
+    //        if (!(newElement instanceof SOAPBodyElement) && (newElement instanceof SOAPElement)) {
+    //            newElement = new ElementWrapper((ElementImpl) newElement);
+    //        }
+    //        return super.insertBefore(newElement, ref);
+    //    }
+    //
+    //    public Node replaceChild(Node newElement, Node ref) throws DOMException {
+    //        if (!(newElement instanceof SOAPBodyElement) && (newElement instanceof SOAPElement)) {
+    //            newElement = new ElementWrapper((ElementImpl) newElement);
+    //        }
+    //        return super.replaceChild(newElement, ref);
+    //    }
+
+    public SOAPBodyElement addDocument(Document document)
+        throws SOAPException {
+        /*
+
+                Element rootNode =
+                    document.getDocumentElement();
+                // Causes all deferred nodes to be inflated
+                rootNode.normalize();
+                adoptElement(rootNode);
+                SOAPBodyElement bodyElement = (SOAPBodyElement) convertToSoapElement(rootNode);
+                addNode(bodyElement);
+                return bodyElement;
+        */
+        ///*
+        SOAPBodyElement newBodyElement = null;
+        DocumentFragment docFrag = document.createDocumentFragment();
+        Element rootElement = document.getDocumentElement();
+        if(rootElement != null) {
+            docFrag.appendChild(rootElement);
+
+            Document ownerDoc = getOwnerDocument();
+            // This copies the whole tree which could be very big so it's slow.
+            // However, it does have the advantage of actually working.
+            org.w3c.dom.Node replacingNode = ownerDoc.importNode(docFrag, true);
+            // Adding replacingNode at the last of the children list of body
+            addNode(replacingNode);
+            Iterator i =
+                getChildElements(NameImpl.copyElementName(rootElement));
+            // Return the child element with the required name which is at the
+            // end of the list
+            while(i.hasNext())
+                newBodyElement = (SOAPBodyElement) i.next();
+        }
+        return newBodyElement;
+        //*/
+    }
+
+    protected SOAPElement convertToSoapElement(Element element) {
+        if ((element instanceof SOAPBodyElement) &&
+            //this check is required because ElementImpl currently
+            // implements SOAPBodyElement
+            !(element.getClass().equals(ElementImpl.class))) {
+            return (SOAPElement) element;
+        } else {
+            return replaceElementWithSOAPElement(
+                element,
+                (ElementImpl) createBodyElement(NameImpl
+                    .copyElementName(element)));
+        }
+    }
+
+    public SOAPElement setElementQName(QName newName) throws SOAPException {
+        log.log(Level.SEVERE,
+                "SAAJ0146.impl.invalid.name.change.requested",
+                new Object[] {elementQName.getLocalPart(),
+                              newName.getLocalPart()});
+        throw new SOAPException("Cannot change name for "
+                                + elementQName.getLocalPart() + " to "
+                                + newName.getLocalPart());
+    }
+
+    public Document extractContentAsDocument() throws SOAPException {
+
+        Iterator eachChild = getChildElements();
+        javax.xml.soap.Node firstBodyElement = null;
+
+        while (eachChild.hasNext() &&
+               !(firstBodyElement instanceof SOAPElement))
+            firstBodyElement = (javax.xml.soap.Node) eachChild.next();
+
+        boolean exactlyOneChildElement = true;
+        if (firstBodyElement == null)
+            exactlyOneChildElement = false;
+        else {
+            for (org.w3c.dom.Node node = firstBodyElement.getNextSibling();
+                 node != null;
+                 node = node.getNextSibling()) {
+
+                if (node instanceof Element) {
+                    exactlyOneChildElement = false;
+                    break;
+                }
+            }
+        }
+
+        if(!exactlyOneChildElement) {
+            log.log(Level.SEVERE,
+                    "SAAJ0250.impl.body.should.have.exactly.one.child");
+            throw new SOAPException("Cannot extract Document from body");
+        }
+
+        Document document = null;
+        try {
+            DocumentBuilderFactory factory =
+                new com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl();
+            factory.setNamespaceAware(true);
+            DocumentBuilder builder = factory.newDocumentBuilder();
+            document = builder.newDocument();
+
+            Element rootElement = (Element) document.importNode(
+                                                firstBodyElement,
+                                                true);
+
+            document.appendChild(rootElement);
+
+        } catch(Exception e) {
+            log.log(Level.SEVERE,
+                    "SAAJ0251.impl.cannot.extract.document.from.body");
+            throw new SOAPExceptionImpl(
+                "Unable to extract Document from body", e);
+        }
+
+        firstBodyElement.detachNode();
+
+        return document;
+    }
+
+    private void materializePayloadWrapException() {
+        try {
+            materializePayload();
+        } catch (SOAPException e) {
+            throw new RuntimeException(e);
+        }
+    }
+    private void materializePayload() throws SOAPException {
+        if (staxBridge != null) {
+            if (payloadStreamRead) {
+                //the payload has already been read via stream reader and the
+                //stream has been exhausted already. Throw an
+                //exception since we are now trying to materialize as DOM and
+                //there is no stream left to read
+                throw new SOAPException("SOAPBody payload stream has been fully read - cannot materialize as DOM!");
+            }
+            try {
+                staxBridge.bridgePayload();
+                staxBridge = null;
+                payloadStreamRead = true;
+            } catch (XMLStreamException e) {
+                throw new SOAPException(e);
+            }
+        }
+    }
+
+    @Override
+    public boolean hasChildNodes() {
+        boolean hasChildren = super.hasChildNodes();
+        //to answer this question we need to know _whether_ we have at least one child
+        //So no need to materialize body if we already know we have a header child
+        if (!hasChildren) {
+            materializePayloadWrapException();
+        }
+        return super.hasChildNodes();
+    }
+
+    @Override
+    public NodeList getChildNodes() {
+        materializePayloadWrapException();
+        return super.getChildNodes();
+    }
+
+    @Override
+    public Node getFirstChild() {
+        Node child = super.getFirstChild();
+        if (child == null) {
+            materializePayloadWrapException();
+        }
+        return super.getFirstChild();
+    }
+
+    public Node getFirstChildNoMaterialize() {
+        return super.getFirstChild();
+    }
+
+    @Override
+    public Node getLastChild() {
+        materializePayloadWrapException();
+        return super.getLastChild();
+    }
+
+    XMLStreamReader getPayloadReader() {
+        return staxBridge.getPayloadReader();
+    }
+
+    void setStaxBridge(StaxBridge bridge) {
+        this.staxBridge = bridge;
+    }
+
+    StaxBridge getStaxBridge() {
+        return staxBridge;
+    }
+
+    void setPayloadStreamRead() {
+        this.payloadStreamRead = true;
+    }
+
+    QName getPayloadQName() {
+        if (staxBridge != null) {
+                return staxBridge.getPayloadQName();
+        } else {
+            //not lazy - Just get first child element and return its name
+            Element elem = getFirstChildElement();
+            if (elem != null) {
+                String ns = elem.getNamespaceURI();
+                String pref = elem.getPrefix();
+                String local = elem.getLocalName();
+                if (pref != null) return new QName(ns, local, pref);
+                if (ns != null) return new QName(ns, local);
+                return new QName(local);
+            }
+        }
+        return null;
+    }
+
+    String getPayloadAttributeValue(String attName) {
+        if (staxBridge != null) {
+            return staxBridge.getPayloadAttributeValue(attName);
+        } else {
+            //not lazy -Just get first child element and return its attribute
+            Element elem = getFirstChildElement();
+            if (elem != null) {
+                return elem.getAttribute(localName);
+            }
+        }
+        return null;
+    }
+
+    String getPayloadAttributeValue(QName attNAme) {
+        if (staxBridge != null) {
+            return staxBridge.getPayloadAttributeValue(attNAme);
+        } else {
+            //not lazy -Just get first child element and return its attribute
+            Element elem = getFirstChildElement();
+            if (elem != null) {
+                return elem.getAttributeNS(attNAme.getNamespaceURI(), attNAme.getLocalPart());
+            }
+        }
+        return null;
+    }
+
+    public boolean isLazy() {
+        return (staxBridge != null && !payloadStreamRead);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/CDATAImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap.impl;
+
+import java.util.logging.Logger;
+
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPException;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
+
+public class CDATAImpl
+    extends com.sun.org.apache.xerces.internal.dom.CDATASectionImpl
+    implements javax.xml.soap.Text {
+
+    protected static final Logger log =
+        Logger.getLogger(LogDomainConstants.SOAP_IMPL_DOMAIN,
+                         "com.sun.xml.internal.messaging.saaj.soap.impl.LocalStrings");
+
+    static final String cdataUC = "<![CDATA[";
+    static final String cdataLC = "<![cdata[";
+
+    public CDATAImpl(SOAPDocumentImpl ownerDoc, String text) {
+        super(ownerDoc, text);
+    }
+
+    public String getValue() {
+        String nodeValue = getNodeValue();
+        return (nodeValue.equals("") ? null : nodeValue);
+    }
+
+    public void setValue(String text) {
+        setNodeValue(text);
+    }
+
+    public void setParentElement(SOAPElement parent) throws SOAPException {
+        if (parent == null) {
+            log.severe("SAAJ0145.impl.no.null.to.parent.elem");
+            throw new SOAPException("Cannot pass NULL to setParentElement");
+        }
+        ((ElementImpl) parent).addNode(this);
+    }
+
+    public SOAPElement getParentElement() {
+        return (SOAPElement) getParentNode();
+    }
+
+
+    public void detachNode() {
+        org.w3c.dom.Node parent = getParentNode();
+        if (parent != null) {
+            parent.removeChild(this);
+        }
+    }
+
+    public void recycleNode() {
+        detachNode();
+        // TBD
+        //  - add this to the factory so subsequent
+        //    creations can reuse this object.
+    }
+
+    public boolean isComment() {
+        return false;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/DetailEntryImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap.impl;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.DetailEntry;
+import javax.xml.soap.Name;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+
+public abstract class DetailEntryImpl
+    extends ElementImpl
+    implements DetailEntry {
+    public DetailEntryImpl(SOAPDocumentImpl ownerDoc, Name qname) {
+        super(ownerDoc, qname);
+    }
+    public DetailEntryImpl(SOAPDocumentImpl ownerDoc, QName qname) {
+        super(ownerDoc, qname);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/DetailImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,146 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap.impl;
+
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.*;
+
+import org.w3c.dom.Element;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+
+public abstract class DetailImpl extends FaultElementImpl implements Detail {
+    public DetailImpl(SOAPDocumentImpl ownerDoc, NameImpl detailName) {
+        super(ownerDoc, detailName);
+    }
+
+    protected abstract DetailEntry createDetailEntry(Name name);
+    protected abstract DetailEntry createDetailEntry(QName name);
+
+    public DetailEntry addDetailEntry(Name name) throws SOAPException {
+        DetailEntry entry = createDetailEntry(name);
+        addNode(entry);
+        return (DetailEntry) circumventBug5034339(entry);
+    }
+
+    public DetailEntry addDetailEntry(QName qname) throws SOAPException {
+        DetailEntry entry = createDetailEntry(qname);
+        addNode(entry);
+        return (DetailEntry) circumventBug5034339(entry);
+    }
+
+    protected SOAPElement addElement(Name name) throws SOAPException {
+        return addDetailEntry(name);
+    }
+
+    protected SOAPElement addElement(QName name) throws SOAPException {
+        return addDetailEntry(name);
+    }
+
+    protected SOAPElement convertToSoapElement(Element element) {
+        if (element instanceof DetailEntry) {
+            return (SOAPElement) element;
+        } else {
+            DetailEntry detailEntry =
+                createDetailEntry(NameImpl.copyElementName(element));
+            return replaceElementWithSOAPElement(
+                element,
+                (ElementImpl) detailEntry);
+        }
+    }
+
+    public Iterator getDetailEntries() {
+        return new Iterator() {
+            Iterator eachNode = getChildElementNodes();
+            SOAPElement next = null;
+            SOAPElement last = null;
+
+            public boolean hasNext() {
+                if (next == null) {
+                    while (eachNode.hasNext()) {
+                        next = (SOAPElement) eachNode.next();
+                        if (next instanceof DetailEntry) {
+                            break;
+                        }
+                        next = null;
+                    }
+                }
+                return next != null;
+            }
+
+            public Object next() {
+                if (!hasNext()) {
+                    throw new NoSuchElementException();
+                }
+                last = next;
+                next = null;
+                return last;
+            }
+
+            public void remove() {
+                if (last == null) {
+                    throw new IllegalStateException();
+                }
+                SOAPElement target = last;
+                removeChild(target);
+                last = null;
+            }
+        };
+    }
+
+   protected  boolean isStandardFaultElement() {
+       return true;
+   }
+
+    //overriding this method since the only two uses of this method
+    // are in ElementImpl and DetailImpl
+    //whereas the original base impl does the correct job for calls to it inside ElementImpl
+    // But it would not work for DetailImpl.
+    protected SOAPElement circumventBug5034339(SOAPElement element) {
+
+        Name elementName = element.getElementName();
+        if (!isNamespaceQualified(elementName)) {
+            String prefix = elementName.getPrefix();
+            String defaultNamespace = getNamespaceURI(prefix);
+            if (defaultNamespace != null) {
+                Name newElementName =
+                    NameImpl.create(
+                        elementName.getLocalName(),
+                        elementName.getPrefix(),
+                        defaultNamespace);
+                SOAPElement newElement = createDetailEntry(newElementName);
+                replaceChild(newElement, element);
+                return newElement;
+            }
+        }
+        return element;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/ElementFactory.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,167 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap.impl;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.*;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+import com.sun.xml.internal.messaging.saaj.soap.ver1_1.*;
+import com.sun.xml.internal.messaging.saaj.soap.ver1_2.*;
+
+
+public class ElementFactory {
+    public static SOAPElement createElement(
+        SOAPDocumentImpl ownerDocument,
+        Name name) {
+        return createElement(
+            ownerDocument,
+            name.getLocalName(),
+            name.getPrefix(),
+            name.getURI());
+    }
+    public static SOAPElement createElement(
+        SOAPDocumentImpl ownerDocument,
+        QName name) {
+        return createElement(
+            ownerDocument,
+            name.getLocalPart(),
+            name.getPrefix(),
+            name.getNamespaceURI());
+    }
+
+    public static SOAPElement createElement(
+        SOAPDocumentImpl ownerDocument,
+        String localName,
+        String prefix,
+        String namespaceUri) {
+
+
+        if (ownerDocument == null) {
+            if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
+                ownerDocument = new SOAPPart1_1Impl().getDocument();
+            } else if (NameImpl.SOAP12_NAMESPACE.equals(namespaceUri)) {
+                ownerDocument = new SOAPPart1_2Impl().getDocument();
+            } else {
+                ownerDocument = new SOAPDocumentImpl(null);
+            }
+        }
+
+        SOAPElement newElement =
+            createNamedElement(ownerDocument, localName, prefix, namespaceUri);
+
+        return newElement != null
+            ? newElement
+            : new ElementImpl(
+                ownerDocument,
+                namespaceUri,
+                NameImpl.createQName(prefix, localName));
+    }
+
+    public static SOAPElement createNamedElement(
+        SOAPDocumentImpl ownerDocument,
+        String localName,
+        String prefix,
+        String namespaceUri) {
+
+        if (prefix == null) {
+            prefix = NameImpl.SOAP_ENVELOPE_PREFIX;
+        }
+
+        if (localName.equalsIgnoreCase("Envelope")) {
+            if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
+                return new Envelope1_1Impl(ownerDocument, prefix);
+            } else if (NameImpl.SOAP12_NAMESPACE.equals(namespaceUri)) {
+                return new Envelope1_2Impl(ownerDocument, prefix);
+            }
+        }
+        if (localName.equalsIgnoreCase("Body")) {
+            if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
+                return new Body1_1Impl(ownerDocument, prefix);
+            } else if (NameImpl.SOAP12_NAMESPACE.equals(namespaceUri)) {
+                return new Body1_2Impl(ownerDocument, prefix);
+            }
+        }
+        if (localName.equalsIgnoreCase("Header")) {
+            if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
+                return new Header1_1Impl(ownerDocument, prefix);
+            } else if (NameImpl.SOAP12_NAMESPACE.equals(namespaceUri)) {
+                return new Header1_2Impl(ownerDocument, prefix);
+            }
+        }
+        if (localName.equalsIgnoreCase("Fault")) {
+            SOAPFault fault = null;
+            if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
+                fault = new Fault1_1Impl(ownerDocument, prefix);
+            } else if (NameImpl.SOAP12_NAMESPACE.equals(namespaceUri)) {
+                fault = new Fault1_2Impl(ownerDocument, prefix);
+            }
+
+            if (fault != null) {
+//                try {
+//                    fault.addNamespaceDeclaration(
+//                        NameImpl.SOAP_ENVELOPE_PREFIX,
+//                        SOAPConstants.URI_NS_SOAP_ENVELOPE);
+//                    fault.setFaultCode(
+//                        NameImpl.create(
+//                            "Server",
+//                            NameImpl.SOAP_ENVELOPE_PREFIX,
+//                            SOAPConstants.URI_NS_SOAP_ENVELOPE));
+//                    fault.setFaultString(
+//                        "Fault string, and possibly fault code, not set");
+//                } catch (SOAPException e) {
+//                }
+                return fault;
+            }
+
+        }
+        if (localName.equalsIgnoreCase("Detail")) {
+            if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
+                return new Detail1_1Impl(ownerDocument, prefix);
+            } else if (NameImpl.SOAP12_NAMESPACE.equals(namespaceUri)) {
+                return new Detail1_2Impl(ownerDocument, prefix);
+            }
+        }
+        if (localName.equalsIgnoreCase("faultcode")
+            || localName.equalsIgnoreCase("faultstring")
+            || localName.equalsIgnoreCase("faultactor")) {
+            // SOAP 1.2 does not have fault(code/string/actor)
+            // So there is no else case required
+            if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
+                return new FaultElement1_1Impl(ownerDocument,
+                                               localName,
+                                               prefix);
+            }
+        }
+
+        return null;
+    }
+
+    protected static void invalidCreate(String msg) {
+        throw new TreeException(msg);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/ElementImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,1290 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap.impl;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.*;
+
+import org.w3c.dom.*;
+import org.w3c.dom.Node;
+
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+import com.sun.xml.internal.messaging.saaj.util.*;
+
+public class ElementImpl
+    extends com.sun.org.apache.xerces.internal.dom.ElementNSImpl
+    implements SOAPElement, SOAPBodyElement {
+
+    public static final String DSIG_NS = "http://www.w3.org/2000/09/xmldsig#".intern();
+    public static final String XENC_NS = "http://www.w3.org/2001/04/xmlenc#".intern();
+    public static final String WSU_NS = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd".intern();
+
+    private transient AttributeManager encodingStyleAttribute = new AttributeManager();
+
+    protected QName elementQName;
+
+    protected static final Logger log =
+        Logger.getLogger(LogDomainConstants.SOAP_IMPL_DOMAIN,
+                         "com.sun.xml.internal.messaging.saaj.soap.impl.LocalStrings");
+
+    /**
+     * XML Information Set REC
+     * all namespace attributes (including those named xmlns,
+     * whose [prefix] property has no value) have a namespace URI of http://www.w3.org/2000/xmlns/
+     */
+    public final static String XMLNS_URI = "http://www.w3.org/2000/xmlns/".intern();
+
+    /**
+     * The XML Namespace ("http://www.w3.org/XML/1998/namespace"). This is
+     * the Namespace URI that is automatically mapped to the "xml" prefix.
+     */
+    public final static String XML_URI = "http://www.w3.org/XML/1998/namespace".intern();
+
+    public ElementImpl(SOAPDocumentImpl ownerDoc, Name name) {
+        super(
+            ownerDoc,
+            name.getURI(),
+            name.getQualifiedName(),
+            name.getLocalName());
+        elementQName = NameImpl.convertToQName(name);
+    }
+
+    public ElementImpl(SOAPDocumentImpl ownerDoc, QName name) {
+        super(
+            ownerDoc,
+            name.getNamespaceURI(),
+            getQualifiedName(name),
+            name.getLocalPart());
+        elementQName = name;
+    }
+
+    public ElementImpl(
+        SOAPDocumentImpl ownerDoc,
+        String uri,
+        String qualifiedName) {
+
+        super(ownerDoc, uri, qualifiedName);
+        elementQName =
+            new QName(uri, getLocalPart(qualifiedName), getPrefix(qualifiedName));
+    }
+
+    public void ensureNamespaceIsDeclared(String prefix, String uri) {
+        String alreadyDeclaredUri = getNamespaceURI(prefix);
+        if (alreadyDeclaredUri == null || !alreadyDeclaredUri.equals(uri)) {
+            try {
+                addNamespaceDeclaration(prefix, uri);
+            } catch (SOAPException e) { /*ignore*/
+            }
+        }
+    }
+
+    public Document getOwnerDocument() {
+        Document doc = super.getOwnerDocument();
+        if (doc instanceof SOAPDocument)
+            return ((SOAPDocument) doc).getDocument();
+        else
+            return doc;
+    }
+
+    public SOAPElement addChildElement(Name name) throws SOAPException {
+        return  addElement(name);
+    }
+
+    public SOAPElement addChildElement(QName qname) throws SOAPException {
+        return  addElement(qname);
+    }
+
+    public SOAPElement addChildElement(String localName) throws SOAPException {
+        return (SOAPElement) addChildElement(
+            NameImpl.createFromUnqualifiedName(localName));
+    }
+
+    public SOAPElement addChildElement(String localName, String prefix)
+        throws SOAPException {
+        String uri = getNamespaceURI(prefix);
+        if (uri == null) {
+            log.log(
+                Level.SEVERE,
+                "SAAJ0101.impl.parent.of.body.elem.mustbe.body",
+                new String[] { prefix });
+            throw new SOAPExceptionImpl(
+                "Unable to locate namespace for prefix " + prefix);
+        }
+        return addChildElement(localName, prefix, uri);
+    }
+
+    public String getNamespaceURI(String prefix) {
+
+        if ("xmlns".equals(prefix)) {
+            return XMLNS_URI;
+        }
+
+        if("xml".equals(prefix)) {
+            return XML_URI;
+        }
+
+        if ("".equals(prefix)) {
+
+            org.w3c.dom.Node currentAncestor = this;
+            while (currentAncestor != null &&
+                   !(currentAncestor instanceof Document)) {
+
+                if (currentAncestor instanceof ElementImpl) {
+                    QName name = ((ElementImpl) currentAncestor).getElementQName();
+                    /*
+                    if (prefix.equals(name.getPrefix())) {
+                        String uri = name.getNamespaceURI();
+                        if ("".equals(uri)) {
+                            return null;
+                        }
+                        else {
+                            return uri;
+                        }
+                    }*/
+                    if (((Element) currentAncestor).hasAttributeNS(
+                            XMLNS_URI, "xmlns")) {
+
+                        String uri =
+                            ((Element) currentAncestor).getAttributeNS(
+                                XMLNS_URI, "xmlns");
+                        if ("".equals(uri))
+                            return null;
+                        else {
+                            return uri;
+                        }
+                    }
+                }
+                currentAncestor = currentAncestor.getParentNode();
+            }
+
+        } else if (prefix != null) {
+            // Find if there's an ancester whose name contains this prefix
+            org.w3c.dom.Node currentAncestor = this;
+
+//            String uri = currentAncestor.lookupNamespaceURI(prefix);
+//            return uri;
+            while (currentAncestor != null &&
+                   !(currentAncestor instanceof Document)) {
+
+               /* if (prefix.equals(currentAncestor.getPrefix())) {
+                    String uri = currentAncestor.getNamespaceURI();
+                    // this is because the javadoc says getNamespaceURI() is not a computed value
+                    // and URI for a non-empty prefix cannot be null
+                    if (uri != null)
+                        return uri;
+                }*/
+                //String uri = currentAncestor.lookupNamespaceURI(prefix);
+                //if (uri != null) {
+                //    return uri;
+                //}
+
+                if (((Element) currentAncestor).hasAttributeNS(
+                        XMLNS_URI, prefix)) {
+                    return ((Element) currentAncestor).getAttributeNS(
+                               XMLNS_URI, prefix);
+                }
+
+                currentAncestor = currentAncestor.getParentNode();
+            }
+        }
+
+        return null;
+    }
+
+    public SOAPElement setElementQName(QName newName) throws SOAPException {
+        ElementImpl copy =
+            new ElementImpl((SOAPDocumentImpl) getOwnerDocument(), newName);
+        return replaceElementWithSOAPElement(this,copy);
+    }
+
+    public QName createQName(String localName, String prefix)
+        throws SOAPException {
+        String uri = getNamespaceURI(prefix);
+        if (uri == null) {
+            log.log(Level.SEVERE, "SAAJ0102.impl.cannot.locate.ns",
+                    new Object[] {prefix});
+            throw new SOAPException("Unable to locate namespace for prefix "
+                                    + prefix);
+        }
+        return new QName(uri, localName, prefix);
+    }
+
+    public String getNamespacePrefix(String uri) {
+
+        NamespaceContextIterator eachNamespace = getNamespaceContextNodes();
+        while (eachNamespace.hasNext()) {
+            org.w3c.dom.Attr namespaceDecl = eachNamespace.nextNamespaceAttr();
+            if (namespaceDecl.getNodeValue().equals(uri)) {
+                String candidatePrefix = namespaceDecl.getLocalName();
+                if ("xmlns".equals(candidatePrefix))
+                    return "";
+                else
+                    return candidatePrefix;
+            }
+        }
+
+        // Find if any of the ancestors' name has this uri
+        org.w3c.dom.Node currentAncestor = this;
+        while (currentAncestor != null &&
+               !(currentAncestor instanceof Document)) {
+
+            if (uri.equals(currentAncestor.getNamespaceURI()))
+                return currentAncestor.getPrefix();
+            currentAncestor = currentAncestor.getParentNode();
+        }
+
+        return null;
+    }
+
+    protected org.w3c.dom.Attr getNamespaceAttr(String prefix) {
+        NamespaceContextIterator eachNamespace = getNamespaceContextNodes();
+        if (!"".equals(prefix))
+            prefix = ":"+prefix;
+        while (eachNamespace.hasNext()) {
+            org.w3c.dom.Attr namespaceDecl = eachNamespace.nextNamespaceAttr();
+            if (!"".equals(prefix)) {
+                if (namespaceDecl.getNodeName().endsWith(prefix))
+                    return namespaceDecl;
+            } else {
+                if (namespaceDecl.getNodeName().equals("xmlns"))
+                    return namespaceDecl;
+            }
+        }
+        return null;
+    }
+
+    public NamespaceContextIterator getNamespaceContextNodes() {
+        return getNamespaceContextNodes(true);
+    }
+
+    public NamespaceContextIterator getNamespaceContextNodes(boolean traverseStack) {
+        return new NamespaceContextIterator(this, traverseStack);
+    }
+
+    public SOAPElement addChildElement(
+        String localName,
+        String prefix,
+        String uri)
+        throws SOAPException {
+
+        SOAPElement newElement = createElement(NameImpl.create(localName, prefix, uri));
+        addNode(newElement);
+        return convertToSoapElement(newElement);
+    }
+
+    public SOAPElement addChildElement(SOAPElement element)
+        throws SOAPException {
+
+        // check if Element falls in SOAP 1.1 or 1.2 namespace.
+        String elementURI = element.getElementName().getURI();
+        String localName = element.getLocalName();
+
+        if ((SOAPConstants.URI_NS_SOAP_ENVELOPE).equals(elementURI)
+            || (SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE).equals(elementURI)) {
+
+
+            if ("Envelope".equalsIgnoreCase(localName) ||
+                "Header".equalsIgnoreCase(localName) || "Body".equalsIgnoreCase(localName)) {
+                log.severe("SAAJ0103.impl.cannot.add.fragements");
+                throw new SOAPExceptionImpl(
+                    "Cannot add fragments which contain elements "
+                        + "which are in the SOAP namespace");
+            }
+
+            if ("Fault".equalsIgnoreCase(localName) && !"Body".equalsIgnoreCase(this.getLocalName())) {
+                log.severe("SAAJ0154.impl.adding.fault.to.nonbody");
+                throw new SOAPExceptionImpl("Cannot add a SOAPFault as a child of " + this.getLocalName());
+            }
+
+            if ("Detail".equalsIgnoreCase(localName) && !"Fault".equalsIgnoreCase(this.getLocalName())) {
+                log.severe("SAAJ0155.impl.adding.detail.nonfault");
+                throw new SOAPExceptionImpl("Cannot add a Detail as a child of " + this.getLocalName());
+            }
+
+            if ("Fault".equalsIgnoreCase(localName)) {
+               // if body is not empty throw an exception
+               if (!elementURI.equals(this.getElementName().getURI())) {
+                   log.severe("SAAJ0158.impl.version.mismatch.fault");
+                   throw new SOAPExceptionImpl("SOAP Version mismatch encountered when trying to add SOAPFault to SOAPBody");
+               }
+               Iterator it = this.getChildElements();
+               if (it.hasNext()) {
+                   log.severe("SAAJ0156.impl.adding.fault.error");
+                   throw new SOAPExceptionImpl("Cannot add SOAPFault as a child of a non-Empty SOAPBody");
+               }
+            }
+        }
+
+        // preserve the encodingStyle attr as it may get lost in the import
+        String encodingStyle = element.getEncodingStyle();
+
+        ElementImpl importedElement = (ElementImpl) importElement(element);
+        addNode(importedElement);
+
+        if (encodingStyle != null)
+            importedElement.setEncodingStyle(encodingStyle);
+
+        return convertToSoapElement(importedElement);
+    }
+
+    protected Element importElement(Element element) {
+        Document document = getOwnerDocument();
+        Document oldDocument = element.getOwnerDocument();
+        if (!oldDocument.equals(document)) {
+            return (Element) document.importNode(element, true);
+        } else {
+            return element;
+        }
+    }
+
+    protected SOAPElement addElement(Name name) throws SOAPException {
+        SOAPElement newElement = createElement(name);
+        addNode(newElement);
+        return circumventBug5034339(newElement);
+    }
+
+    protected SOAPElement addElement(QName name) throws SOAPException {
+        SOAPElement newElement = createElement(name);
+        addNode(newElement);
+        return circumventBug5034339(newElement);
+    }
+
+    protected SOAPElement createElement(Name name) {
+
+        if (isNamespaceQualified(name)) {
+            return (SOAPElement)
+                getOwnerDocument().createElementNS(
+                                       name.getURI(),
+                                       name.getQualifiedName());
+        } else {
+            return (SOAPElement)
+                getOwnerDocument().createElement(name.getQualifiedName());
+        }
+    }
+
+    protected SOAPElement createElement(QName name) {
+
+        if (isNamespaceQualified(name)) {
+            return (SOAPElement)
+                getOwnerDocument().createElementNS(
+                                       name.getNamespaceURI(),
+                                       getQualifiedName(name));
+        } else {
+            return (SOAPElement)
+                getOwnerDocument().createElement(getQualifiedName(name));
+        }
+    }
+
+    protected void addNode(org.w3c.dom.Node newElement) throws SOAPException {
+        insertBefore(newElement, null);
+
+        if (getOwnerDocument() instanceof DocumentFragment)
+            return;
+
+        if (newElement instanceof ElementImpl) {
+            ElementImpl element = (ElementImpl) newElement;
+            QName elementName = element.getElementQName();
+            if (!"".equals(elementName.getNamespaceURI())) {
+                element.ensureNamespaceIsDeclared(
+                    elementName.getPrefix(), elementName.getNamespaceURI());
+            }
+        }
+
+    }
+
+    Element getFirstChildElement() {
+        Node child = getFirstChild();
+        while (child != null) {
+            if (child instanceof Element) {
+                return ((Element) child);
+            }
+            child = child.getNextSibling();
+        }
+        return null;
+    }
+
+    protected SOAPElement findChild(NameImpl name) {
+        Node eachChild = getFirstChild();
+        while (eachChild != null) {
+            if (eachChild instanceof SOAPElement) {
+                SOAPElement eachChildSoap = (SOAPElement) eachChild;
+                if (eachChildSoap.getElementName().equals(name)) {
+                    return eachChildSoap;
+                }
+            }
+            eachChild = eachChild.getNextSibling();
+        }
+        return null;
+    }
+
+    protected SOAPElement findAndConvertChildElement(NameImpl name) {
+        Iterator eachChild = getChildElementNodes();
+        while (eachChild.hasNext()) {
+            SOAPElement child = (SOAPElement) eachChild.next();
+            if (child.getElementName().equals(name)) {
+                return child;
+            }
+        }
+
+        return null;
+    }
+
+    public SOAPElement addTextNode(String text) throws SOAPException {
+        if (text.startsWith(CDATAImpl.cdataUC)
+            || text.startsWith(CDATAImpl.cdataLC))
+            return addCDATA(
+                text.substring(CDATAImpl.cdataUC.length(), text.length() - 3));
+        return addText(text);
+    }
+
+    protected SOAPElement addCDATA(String text) throws SOAPException {
+        org.w3c.dom.Text cdata =
+            (org.w3c.dom.Text) getOwnerDocument().createCDATASection(text);
+        addNode(cdata);
+        return this;
+    }
+
+    protected SOAPElement addText(String text) throws SOAPException {
+        org.w3c.dom.Text textNode =
+            (org.w3c.dom.Text) getOwnerDocument().createTextNode(text);
+        addNode(textNode);
+        return this;
+    }
+
+    public SOAPElement addAttribute(Name name, String value)
+        throws SOAPException {
+        addAttributeBare(name, value);
+        if (!"".equals(name.getURI())) {
+            ensureNamespaceIsDeclared(name.getPrefix(), name.getURI());
+        }
+        return this;
+    }
+
+    public SOAPElement addAttribute(QName qname, String value)
+        throws SOAPException {
+        addAttributeBare(qname, value);
+        if (!"".equals(qname.getNamespaceURI())) {
+            ensureNamespaceIsDeclared(qname.getPrefix(), qname.getNamespaceURI());
+        }
+        return this;
+    }
+
+    private void addAttributeBare(Name name, String value) {
+        addAttributeBare(
+            name.getURI(),
+            name.getPrefix(),
+            name.getQualifiedName(),
+            value);
+    }
+    private void addAttributeBare(QName name, String value) {
+        addAttributeBare(
+            name.getNamespaceURI(),
+            name.getPrefix(),
+            getQualifiedName(name),
+            value);
+    }
+
+    private void addAttributeBare(
+        String uri,
+        String prefix,
+        String qualifiedName,
+        String value) {
+
+        uri = uri.length() == 0 ? null : uri;
+        if (qualifiedName.equals("xmlns")) {
+            uri = XMLNS_URI;
+        }
+
+        if (uri == null) {
+            setAttribute(qualifiedName, value);
+        } else {
+            setAttributeNS(uri, qualifiedName, value);
+        }
+    }
+
+    public SOAPElement addNamespaceDeclaration(String prefix, String uri)
+        throws SOAPException {
+        if (prefix.length() > 0) {
+            setAttributeNS(XMLNS_URI, "xmlns:" + prefix, uri);
+        } else {
+            setAttributeNS(XMLNS_URI, "xmlns", uri);
+        }
+        //Fix for CR:6474641
+        //tryToFindEncodingStyleAttributeName();
+        return this;
+    }
+
+    public String getAttributeValue(Name name) {
+        return getAttributeValueFrom(this, name);
+    }
+
+    public String getAttributeValue(QName qname) {
+        return getAttributeValueFrom(
+                   this,
+                   qname.getNamespaceURI(),
+                   qname.getLocalPart(),
+                   qname.getPrefix(),
+                   getQualifiedName(qname));
+    }
+
+    public Iterator getAllAttributes() {
+        Iterator i = getAllAttributesFrom(this);
+        ArrayList list = new ArrayList();
+        while (i.hasNext()) {
+            Name name = (Name) i.next();
+            if (!"xmlns".equalsIgnoreCase(name.getPrefix()))
+                list.add(name);
+        }
+        return list.iterator();
+    }
+
+    public Iterator getAllAttributesAsQNames() {
+        Iterator i = getAllAttributesFrom(this);
+        ArrayList list = new ArrayList();
+        while (i.hasNext()) {
+            Name name = (Name) i.next();
+            if (!"xmlns".equalsIgnoreCase(name.getPrefix())) {
+                list.add(NameImpl.convertToQName(name));
+            }
+        }
+        return list.iterator();
+    }
+
+
+    public Iterator getNamespacePrefixes() {
+        return doGetNamespacePrefixes(false);
+    }
+
+    public Iterator getVisibleNamespacePrefixes() {
+        return doGetNamespacePrefixes(true);
+    }
+
+    protected Iterator doGetNamespacePrefixes(final boolean deep) {
+        return new Iterator() {
+            String next = null;
+            String last = null;
+            NamespaceContextIterator eachNamespace =
+                getNamespaceContextNodes(deep);
+
+            void findNext() {
+                while (next == null && eachNamespace.hasNext()) {
+                    String attributeKey =
+                        eachNamespace.nextNamespaceAttr().getNodeName();
+                    if (attributeKey.startsWith("xmlns:")) {
+                        next = attributeKey.substring("xmlns:".length());
+                    }
+                }
+            }
+
+            public boolean hasNext() {
+                findNext();
+                return next != null;
+            }
+
+            public Object next() {
+                findNext();
+                if (next == null) {
+                    throw new NoSuchElementException();
+                }
+
+                last = next;
+                next = null;
+                return last;
+            }
+
+            public void remove() {
+                if (last == null) {
+                    throw new IllegalStateException();
+                }
+                eachNamespace.remove();
+                next = null;
+                last = null;
+            }
+        };
+    }
+
+    public Name getElementName() {
+        return NameImpl.convertToName(elementQName);
+    }
+
+    public QName getElementQName() {
+        return elementQName;
+    }
+
+    public boolean removeAttribute(Name name) {
+        return removeAttribute(name.getURI(), name.getLocalName());
+    }
+
+    public boolean removeAttribute(QName name) {
+        return removeAttribute(name.getNamespaceURI(), name.getLocalPart());
+    }
+
+    private boolean removeAttribute(String uri, String localName) {
+        String nonzeroLengthUri =
+            (uri == null || uri.length() == 0) ? null : uri;
+        org.w3c.dom.Attr attribute =
+            getAttributeNodeNS(nonzeroLengthUri, localName);
+        if (attribute == null) {
+            return false;
+        }
+        removeAttributeNode(attribute);
+        return true;
+    }
+
+    public boolean removeNamespaceDeclaration(String prefix) {
+        org.w3c.dom.Attr declaration = getNamespaceAttr(prefix);
+        if (declaration == null) {
+            return false;
+        }
+        try {
+            removeAttributeNode(declaration);
+        } catch (DOMException de) {
+            // ignore
+        }
+        return true;
+    }
+
+    public Iterator getChildElements() {
+        return getChildElementsFrom(this);
+    }
+
+    protected SOAPElement convertToSoapElement(Element element) {
+        if (element instanceof SOAPElement) {
+            return (SOAPElement) element;
+        } else {
+            return replaceElementWithSOAPElement(
+                element,
+                (ElementImpl) createElement(NameImpl.copyElementName(element)));
+        }
+    }
+
+    protected static SOAPElement replaceElementWithSOAPElement(
+        Element element,
+        ElementImpl copy) {
+
+        Iterator eachAttribute = getAllAttributesFrom(element);
+        while (eachAttribute.hasNext()) {
+            Name name = (Name) eachAttribute.next();
+            copy.addAttributeBare(name, getAttributeValueFrom(element, name));
+        }
+
+        Iterator eachChild = getChildElementsFrom(element);
+        while (eachChild.hasNext()) {
+            Node nextChild = (Node) eachChild.next();
+            copy.insertBefore(nextChild, null);
+        }
+
+        Node parent = element.getParentNode();
+        if (parent != null) {
+            parent.replaceChild(copy, element);
+        } // XXX else throw an exception?
+
+        return copy;
+    }
+
+    protected Iterator getChildElementNodes() {
+        return new Iterator() {
+            Iterator eachNode = getChildElements();
+            Node next = null;
+            Node last = null;
+
+            public boolean hasNext() {
+                if (next == null) {
+                    while (eachNode.hasNext()) {
+                        Node node = (Node) eachNode.next();
+                        if (node instanceof SOAPElement) {
+                            next = node;
+                            break;
+                        }
+                    }
+                }
+                return next != null;
+            }
+
+            public Object next() {
+                if (hasNext()) {
+                    last = next;
+                    next = null;
+                    return last;
+                }
+                throw new NoSuchElementException();
+            }
+
+            public void remove() {
+                if (last == null) {
+                    throw new IllegalStateException();
+                }
+                Node target = last;
+                last = null;
+                removeChild(target);
+            }
+        };
+    }
+
+    public Iterator getChildElements(final Name name) {
+       return getChildElements(name.getURI(), name.getLocalName());
+    }
+
+    public Iterator getChildElements(final QName qname) {
+        return getChildElements(qname.getNamespaceURI(), qname.getLocalPart());
+    }
+
+    private Iterator getChildElements(final String nameUri, final String nameLocal) {
+        return new Iterator() {
+            Iterator eachElement = getChildElementNodes();
+            Node next = null;
+            Node last = null;
+
+            public boolean hasNext() {
+                if (next == null) {
+                    while (eachElement.hasNext()) {
+                        Node element = (Node) eachElement.next();
+                        String elementUri = element.getNamespaceURI();
+                        elementUri = elementUri == null ? "" : elementUri;
+                        String elementName = element.getLocalName();
+                        if (elementUri.equals(nameUri)
+                            && elementName.equals(nameLocal)) {
+                            next = element;
+                            break;
+                        }
+                    }
+                }
+                return next != null;
+            }
+
+            public Object next() {
+                if (!hasNext()) {
+                    throw new NoSuchElementException();
+                }
+                last = next;
+                next = null;
+                return last;
+            }
+
+            public void remove() {
+                if (last == null) {
+                    throw new IllegalStateException();
+                }
+                Node target = last;
+                last = null;
+                removeChild(target);
+            }
+        };
+    }
+
+    public void removeContents() {
+        Node currentChild = getFirstChild();
+
+        while (currentChild != null) {
+            Node temp = currentChild.getNextSibling();
+            if (currentChild instanceof javax.xml.soap.Node) {
+                ((javax.xml.soap.Node) currentChild).detachNode();
+            } else {
+                Node parent = currentChild.getParentNode();
+                if (parent != null) {
+                    parent.removeChild(currentChild);
+                }
+
+            }
+            currentChild = temp;
+        }
+    }
+
+    public void setEncodingStyle(String encodingStyle) throws SOAPException {
+        if (!"".equals(encodingStyle)) {
+            try {
+                new URI(encodingStyle);
+            } catch (URISyntaxException m) {
+                log.log(
+                    Level.SEVERE,
+                    "SAAJ0105.impl.encoding.style.mustbe.valid.URI",
+                    new String[] { encodingStyle });
+                throw new IllegalArgumentException(
+                    "Encoding style (" + encodingStyle + ") should be a valid URI");
+            }
+        }
+        encodingStyleAttribute.setValue(encodingStyle);
+        tryToFindEncodingStyleAttributeName();
+    }
+
+    public String getEncodingStyle() {
+        String encodingStyle = encodingStyleAttribute.getValue();
+        if (encodingStyle != null)
+            return encodingStyle;
+        String soapNamespace = getSOAPNamespace();
+        if (soapNamespace != null) {
+            Attr attr = getAttributeNodeNS(soapNamespace, "encodingStyle");
+            if (attr != null) {
+                encodingStyle = attr.getValue();
+                try {
+                    setEncodingStyle(encodingStyle);
+                } catch (SOAPException se) {
+                    // has to be ignored
+                }
+                return encodingStyle;
+            }
+        }
+        return null;
+    }
+
+    // Node methods
+    public String getValue() {
+        javax.xml.soap.Node valueNode = getValueNode();
+        return valueNode == null ? null : valueNode.getValue();
+    }
+
+    public void setValue(String value) {
+        Node valueNode = getValueNodeStrict();
+        if (valueNode != null) {
+            valueNode.setNodeValue(value);
+        } else {
+            try {
+                addTextNode(value);
+            } catch (SOAPException e) {
+                throw new RuntimeException(e.getMessage());
+            }
+        }
+    }
+
+    protected Node getValueNodeStrict() {
+        Node node = getFirstChild();
+        if (node != null) {
+            if (node.getNextSibling() == null
+                && node.getNodeType() == org.w3c.dom.Node.TEXT_NODE) {
+                return node;
+            } else {
+                log.severe("SAAJ0107.impl.elem.child.not.single.text");
+                throw new IllegalStateException();
+            }
+        }
+
+        return null;
+    }
+
+    protected javax.xml.soap.Node getValueNode() {
+        Iterator i = getChildElements();
+        while (i.hasNext()) {
+            javax.xml.soap.Node n = (javax.xml.soap.Node) i.next();
+            if (n.getNodeType() == org.w3c.dom.Node.TEXT_NODE ||
+                n.getNodeType() == org.w3c.dom.Node.CDATA_SECTION_NODE) {
+                // TODO: Hack to fix text node split into multiple lines.
+                normalize();
+                // Should remove the normalization step when this gets fixed in
+                // DOM/Xerces.
+                return (javax.xml.soap.Node) n;
+            }
+        }
+        return null;
+    }
+
+    public void setParentElement(SOAPElement element) throws SOAPException {
+        if (element == null) {
+            log.severe("SAAJ0106.impl.no.null.to.parent.elem");
+            throw new SOAPException("Cannot pass NULL to setParentElement");
+        }
+        element.addChildElement(this);
+        findEncodingStyleAttributeName();
+    }
+
+    protected void findEncodingStyleAttributeName() throws SOAPException {
+        String soapNamespace = getSOAPNamespace();
+        if (soapNamespace != null) {
+            String soapNamespacePrefix = getNamespacePrefix(soapNamespace);
+            if (soapNamespacePrefix != null) {
+                setEncodingStyleNamespace(soapNamespace, soapNamespacePrefix);
+            }
+        }
+    }
+
+    protected void setEncodingStyleNamespace(
+        String soapNamespace,
+        String soapNamespacePrefix)
+        throws SOAPException {
+        Name encodingStyleAttributeName =
+            NameImpl.create(
+                "encodingStyle",
+                soapNamespacePrefix,
+                soapNamespace);
+        encodingStyleAttribute.setName(encodingStyleAttributeName);
+    }
+
+    public SOAPElement getParentElement() {
+        Node parentNode = getParentNode();
+        if (parentNode instanceof SOAPDocument) {
+            return null;
+        }
+        return (SOAPElement) parentNode;
+    }
+
+    protected String getSOAPNamespace() {
+        String soapNamespace = null;
+
+        SOAPElement antecedent = this;
+        while (antecedent != null) {
+            Name antecedentName = antecedent.getElementName();
+            String antecedentNamespace = antecedentName.getURI();
+
+            if (NameImpl.SOAP11_NAMESPACE.equals(antecedentNamespace)
+                || NameImpl.SOAP12_NAMESPACE.equals(antecedentNamespace)) {
+
+                soapNamespace = antecedentNamespace;
+                break;
+            }
+
+            antecedent = antecedent.getParentElement();
+        }
+
+        return soapNamespace;
+    }
+
+    public void detachNode() {
+        Node parent = getParentNode();
+        if (parent != null) {
+            parent.removeChild(this);
+        }
+        encodingStyleAttribute.clearNameAndValue();
+        // Fix for CR: 6474641
+        //tryToFindEncodingStyleAttributeName();
+    }
+
+    public void tryToFindEncodingStyleAttributeName() {
+        try {
+            findEncodingStyleAttributeName();
+        } catch (SOAPException e) { /*okay to fail*/
+        }
+    }
+
+    public void recycleNode() {
+        detachNode();
+        // TBD
+        //  - add this to the factory so subsequent
+        //    creations can reuse this object.
+    }
+
+    class AttributeManager {
+        Name attributeName = null;
+        String attributeValue = null;
+
+        public void setName(Name newName) throws SOAPException {
+            clearAttribute();
+            attributeName = newName;
+            reconcileAttribute();
+        }
+        public void clearName() {
+            clearAttribute();
+            attributeName = null;
+        }
+        public void setValue(String value) throws SOAPException {
+            attributeValue = value;
+            reconcileAttribute();
+        }
+        public Name getName() {
+            return attributeName;
+        }
+        public String getValue() {
+            return attributeValue;
+        }
+
+        /** Note: to be used only in detachNode method */
+        public void clearNameAndValue() {
+            attributeName = null;
+            attributeValue = null;
+        }
+
+        private void reconcileAttribute() throws SOAPException {
+            if (attributeName != null) {
+                removeAttribute(attributeName);
+                if (attributeValue != null) {
+                    addAttribute(attributeName, attributeValue);
+                }
+            }
+        }
+        private void clearAttribute() {
+            if (attributeName != null) {
+                removeAttribute(attributeName);
+            }
+        }
+    }
+
+    protected static org.w3c.dom.Attr getNamespaceAttrFrom(
+        Element element,
+        String prefix) {
+        NamespaceContextIterator eachNamespace =
+            new NamespaceContextIterator(element);
+        while (eachNamespace.hasNext()) {
+            org.w3c.dom.Attr namespaceDecl = eachNamespace.nextNamespaceAttr();
+            String declaredPrefix =
+                NameImpl.getLocalNameFromTagName(namespaceDecl.getNodeName());
+            if (declaredPrefix.equals(prefix)) {
+                return namespaceDecl;
+            }
+        }
+        return null;
+    }
+
+    protected static Iterator getAllAttributesFrom(final Element element) {
+        final NamedNodeMap attributes = element.getAttributes();
+
+        return new Iterator() {
+            int attributesLength = attributes.getLength();
+            int attributeIndex = 0;
+            String currentName;
+
+            public boolean hasNext() {
+                return attributeIndex < attributesLength;
+            }
+
+            public Object next() {
+                if (!hasNext()) {
+                    throw new NoSuchElementException();
+                }
+                Node current = attributes.item(attributeIndex++);
+                currentName = current.getNodeName();
+
+                String prefix = NameImpl.getPrefixFromTagName(currentName);
+                if (prefix.length() == 0) {
+                    return NameImpl.createFromUnqualifiedName(currentName);
+                } else {
+                    Name attributeName =
+                        NameImpl.createFromQualifiedName(
+                            currentName,
+                            current.getNamespaceURI());
+                    return attributeName;
+                }
+            }
+
+            public void remove() {
+                if (currentName == null) {
+                    throw new IllegalStateException();
+                }
+                attributes.removeNamedItem(currentName);
+            }
+        };
+    }
+
+    protected static String getAttributeValueFrom(Element element, Name name) {
+      return getAttributeValueFrom(
+          element,
+          name.getURI(),
+          name.getLocalName(),
+          name.getPrefix(),
+          name.getQualifiedName());
+    }
+
+    private static String getAttributeValueFrom(
+        Element element,
+        String uri,
+        String localName,
+        String prefix,
+        String qualifiedName) {
+
+        String nonzeroLengthUri =
+            (uri == null || uri.length() == 0) ? null : uri;
+
+        boolean mustUseGetAttributeNodeNS =  (nonzeroLengthUri != null);
+
+        if (mustUseGetAttributeNodeNS) {
+
+            if (!element.hasAttributeNS(uri, localName)) {
+                return null;
+            }
+
+            String attrValue =
+                element.getAttributeNS(nonzeroLengthUri, localName);
+
+            return attrValue;
+        }
+
+        Attr attribute = null;
+        attribute = element.getAttributeNode(qualifiedName);
+
+        return attribute == null ? null : attribute.getValue();
+    }
+
+    protected static Iterator getChildElementsFrom(final Element element) {
+        return new Iterator() {
+            Node next = element.getFirstChild();
+            Node nextNext = null;
+            Node last = null;
+
+            public boolean hasNext() {
+                if (next != null) {
+                    return true;
+                }
+                if (next == null && nextNext != null) {
+                    next = nextNext;
+                }
+
+                return next != null;
+            }
+
+            public Object next() {
+                if (hasNext()) {
+                    last = next;
+                    next = null;
+
+                    if ((element instanceof ElementImpl)
+                        && (last instanceof Element)) {
+                        last =
+                            ((ElementImpl) element).convertToSoapElement(
+                                (Element) last);
+                    }
+
+                    nextNext = last.getNextSibling();
+                    return last;
+                }
+                throw new NoSuchElementException();
+            }
+
+            public void remove() {
+                if (last == null) {
+                    throw new IllegalStateException();
+                }
+                Node target = last;
+                last = null;
+                element.removeChild(target);
+            }
+        };
+    }
+
+    public static String getQualifiedName(QName name) {
+        String prefix = name.getPrefix();
+        String localName = name.getLocalPart();
+        String qualifiedName = null;
+
+            if (prefix != null && prefix.length() > 0) {
+                qualifiedName = prefix + ":" + localName;
+            } else {
+                qualifiedName = localName;
+            }
+         return qualifiedName;
+    }
+
+    public static String getLocalPart(String qualifiedName) {
+        if (qualifiedName == null) {
+            // Log
+            throw new IllegalArgumentException("Cannot get local name for a \"null\" qualified name");
+        }
+
+        int index = qualifiedName.indexOf(':');
+        if (index < 0)
+            return qualifiedName;
+        else
+            return qualifiedName.substring(index + 1);
+    }
+
+    public static String getPrefix(String qualifiedName) {
+        if (qualifiedName == null) {
+            // Log
+            throw new IllegalArgumentException("Cannot get prefix for a  \"null\" qualified name");
+        }
+
+        int index = qualifiedName.indexOf(':');
+        if (index < 0)
+            return "";
+        else
+            return qualifiedName.substring(0, index);
+    }
+
+    protected boolean isNamespaceQualified(Name name) {
+        return !"".equals(name.getURI());
+    }
+
+    protected boolean isNamespaceQualified(QName name) {
+        return !"".equals(name.getNamespaceURI());
+    }
+
+    protected SOAPElement circumventBug5034339(SOAPElement element) {
+
+        Name elementName = element.getElementName();
+        if (!isNamespaceQualified(elementName)) {
+            String prefix = elementName.getPrefix();
+            String defaultNamespace = getNamespaceURI(prefix);
+            if (defaultNamespace != null) {
+                Name newElementName =
+                    NameImpl.create(
+                        elementName.getLocalName(),
+                        elementName.getPrefix(),
+                        defaultNamespace);
+                SOAPElement newElement = createElement(newElementName);
+                replaceChild(newElement, element);
+                return newElement;
+            }
+        }
+        return element;
+    }
+
+    //TODO: This is a temporary SAAJ workaround for optimizing XWS
+    // should be removed once the corresponding JAXP bug is fixed
+    // It appears the bug will be fixed in JAXP 1.4 (not by Appserver 9 timeframe)
+    public void setAttributeNS(
+        String namespaceURI,String qualifiedName, String value) {
+        int index = qualifiedName.indexOf(':');
+        String localName;
+        if (index < 0)
+            localName = qualifiedName;
+        else
+            localName = qualifiedName.substring(index + 1);
+
+        // Workaround for bug 6467808 - This needs to be fixed in JAXP
+
+        // Rolling back this fix, this is a wrong fix, infact its causing other regressions in JAXWS tck and
+        // other tests, because of this change the namespace declarations on soapenv:Fault element are never
+        // picked up. The fix for bug 6467808 should be in JAXP.
+//        if(elementQName.getLocalPart().equals("Fault") &&
+//                (SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE.equals(value) ||
+//                SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE.equals(value)))
+//            return;
+
+        super.setAttributeNS(namespaceURI,qualifiedName,value);
+        //String tmpLocalName = this.getLocalName();
+        String tmpURI = this.getNamespaceURI();
+        boolean isIDNS = false;
+        if( tmpURI != null && (tmpURI.equals(DSIG_NS) || tmpURI.equals(XENC_NS))){
+            isIDNS = true;
+        }
+        //No need to check for Signature/encryption element
+        //just check for namespace.
+        if(localName.equals("Id")){
+            if(namespaceURI == null || namespaceURI.equals("")){
+                setIdAttribute(localName,true);
+            }else if(isIDNS || WSU_NS.equals(namespaceURI)){
+                setIdAttributeNS(namespaceURI,localName,true);
+            }
+        }
+
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/EnvelopeImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,438 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap.impl;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+
+import java.util.logging.Level;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.*;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+import javax.xml.transform.*;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+import com.sun.xml.internal.messaging.saaj.soap.LazyEnvelope;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.StaxBridge;
+import com.sun.xml.internal.messaging.saaj.soap.StaxLazySourceBridge;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+import com.sun.xml.internal.messaging.saaj.util.FastInfosetReflection;
+import com.sun.xml.internal.messaging.saaj.util.stax.LazyEnvelopeStaxReader;
+import com.sun.xml.internal.messaging.saaj.util.transform.EfficientStreamingTransformer;
+
+import com.sun.xml.internal.org.jvnet.staxex.util.DOMStreamReader;
+import com.sun.xml.internal.org.jvnet.staxex.util.XMLStreamReaderToXMLStreamWriter;
+
+/**
+ * Our implementation of the SOAP envelope.
+ *
+ * @author Anil Vijendran (anil@sun.com)
+ */
+public abstract class EnvelopeImpl extends ElementImpl implements LazyEnvelope {
+    protected HeaderImpl header;
+    protected BodyImpl body;
+    String omitXmlDecl = "yes";
+    String charset = "utf-8";
+    String xmlDecl = null;
+
+    protected EnvelopeImpl(SOAPDocumentImpl ownerDoc, Name name) {
+        super(ownerDoc, name);
+    }
+
+    protected EnvelopeImpl(SOAPDocumentImpl ownerDoc, QName name) {
+        super(ownerDoc, name);
+    }
+
+    protected EnvelopeImpl(
+        SOAPDocumentImpl ownerDoc,
+        NameImpl name,
+        boolean createHeader,
+        boolean createBody)
+        throws SOAPException {
+        this(ownerDoc, name);
+
+        ensureNamespaceIsDeclared(
+            getElementQName().getPrefix(), getElementQName().getNamespaceURI());
+
+        // XXX
+        if (createHeader)
+            addHeader();
+
+        if (createBody)
+            addBody();
+    }
+
+    protected abstract NameImpl getHeaderName(String prefix);
+    protected abstract NameImpl getBodyName(String prefix);
+
+    public SOAPHeader addHeader() throws SOAPException {
+        return addHeader(null);
+    }
+
+    public SOAPHeader addHeader(String prefix) throws SOAPException {
+
+        if (prefix == null || prefix.equals("")) {
+            prefix = getPrefix();
+        }
+
+        NameImpl headerName = getHeaderName(prefix);
+        NameImpl bodyName = getBodyName(prefix);
+
+        HeaderImpl header = null;
+        SOAPElement firstChild = (SOAPElement) getFirstChildElement();
+
+        if (firstChild != null) {
+            if (firstChild.getElementName().equals(headerName)) {
+                log.severe("SAAJ0120.impl.header.already.exists");
+                throw new SOAPExceptionImpl("Can't add a header when one is already present.");
+            } else if (!firstChild.getElementName().equals(bodyName)) {
+                log.severe("SAAJ0121.impl.invalid.first.child.of.envelope");
+                throw new SOAPExceptionImpl("First child of Envelope must be either a Header or Body");
+            }
+        }
+
+        header = (HeaderImpl) createElement(headerName);
+        insertBefore(header, firstChild);
+        header.ensureNamespaceIsDeclared(headerName.getPrefix(), headerName.getURI());
+
+        return header;
+    }
+
+    protected void lookForHeader() throws SOAPException {
+        NameImpl headerName = getHeaderName(null);
+
+        HeaderImpl hdr = (HeaderImpl) findChild(headerName);
+        header = hdr;
+    }
+
+    public SOAPHeader getHeader() throws SOAPException {
+        lookForHeader();
+        return header;
+    }
+
+    protected void lookForBody() throws SOAPException {
+        NameImpl bodyName = getBodyName(null);
+
+        BodyImpl bodyChildElement = (BodyImpl) findChild(bodyName);
+        body = bodyChildElement;
+    }
+
+    public SOAPBody addBody() throws SOAPException {
+        return addBody(null);
+    }
+
+    public SOAPBody addBody(String prefix) throws SOAPException {
+        lookForBody();
+
+        if (prefix == null || prefix.equals("")) {
+            prefix = getPrefix();
+        }
+
+        if (body == null) {
+            NameImpl bodyName = getBodyName(prefix);
+            body = (BodyImpl) createElement(bodyName);
+            insertBefore(body, null);
+            body.ensureNamespaceIsDeclared(bodyName.getPrefix(), bodyName.getURI());
+        } else {
+            log.severe("SAAJ0122.impl.body.already.exists");
+            throw new SOAPExceptionImpl("Can't add a body when one is already present.");
+        }
+
+        return body;
+    }
+
+    protected SOAPElement addElement(Name name) throws SOAPException {
+        if (getBodyName(null).equals(name)) {
+            return addBody(name.getPrefix());
+        }
+        if (getHeaderName(null).equals(name)) {
+            return addHeader(name.getPrefix());
+        }
+
+        return super.addElement(name);
+    }
+
+    protected SOAPElement addElement(QName name) throws SOAPException {
+        if (getBodyName(null).equals(NameImpl.convertToName(name))) {
+            return addBody(name.getPrefix());
+        }
+        if (getHeaderName(null).equals(NameImpl.convertToName(name))) {
+            return addHeader(name.getPrefix());
+        }
+
+        return super.addElement(name);
+    }
+
+    public SOAPBody getBody() throws SOAPException {
+        lookForBody();
+        return body;
+    }
+
+    public Source getContent() {
+        return new DOMSource(getOwnerDocument());
+    }
+
+    public Name createName(String localName, String prefix, String uri)
+        throws SOAPException {
+
+        // validating parameters before passing them on
+        // to make sure that the namespace specification rules are followed
+
+        // reserved xmlns prefix cannot be used.
+        if ("xmlns".equals(prefix)) {
+            log.severe("SAAJ0123.impl.no.reserved.xmlns");
+            throw new SOAPExceptionImpl("Cannot declare reserved xmlns prefix");
+        }
+        // Qualified name cannot be xmlns.
+        if ((prefix == null) && ("xmlns".equals(localName))) {
+            log.severe("SAAJ0124.impl.qualified.name.cannot.be.xmlns");
+            throw new SOAPExceptionImpl("Qualified name cannot be xmlns");
+        }
+
+        return NameImpl.create(localName, prefix, uri);
+    }
+
+    public Name createName(String localName, String prefix)
+        throws SOAPException {
+        String namespace = getNamespaceURI(prefix);
+        if (namespace == null) {
+            log.log(
+                Level.SEVERE,
+                "SAAJ0126.impl.cannot.locate.ns",
+                new String[] { prefix });
+            throw new SOAPExceptionImpl(
+                "Unable to locate namespace for prefix " + prefix);
+        }
+        return NameImpl.create(localName, prefix, namespace);
+    }
+
+    public Name createName(String localName) throws SOAPException {
+        return NameImpl.createFromUnqualifiedName(localName);
+    }
+
+    public void setOmitXmlDecl(String value) {
+        this.omitXmlDecl = value;
+    }
+
+    public void setXmlDecl(String value) {
+        this.xmlDecl = value;
+    }
+
+    private String getOmitXmlDecl() {
+        return this.omitXmlDecl;
+    }
+
+    public void setCharsetEncoding(String value) {
+        charset = value;
+    }
+
+    public void output(OutputStream out) throws IOException {
+        try {
+//            materializeBody();
+            Transformer transformer =
+                EfficientStreamingTransformer.newTransformer();
+
+            transformer.setOutputProperty(
+                OutputKeys.OMIT_XML_DECLARATION, "yes");
+                /*omitXmlDecl);*/
+            // no equivalent for "setExpandEmptyElements"
+            transformer.setOutputProperty(
+                OutputKeys.ENCODING,
+                charset);
+
+            if (omitXmlDecl.equals("no") && xmlDecl == null) {
+                xmlDecl = "<?xml version=\"" + getOwnerDocument().getXmlVersion() + "\" encoding=\"" +
+                    charset + "\" ?>";
+            }
+
+           StreamResult result = new StreamResult(out);
+            if (xmlDecl != null) {
+                OutputStreamWriter writer = new OutputStreamWriter(out, charset);
+                writer.write(xmlDecl);
+                writer.flush();
+                result = new StreamResult(writer);
+            }
+
+            if (log.isLoggable(Level.FINE)) {
+                log.log(Level.FINE, "SAAJ0190.impl.set.xml.declaration",
+                        new String[] { omitXmlDecl });
+                log.log(Level.FINE, "SAAJ0191.impl.set.encoding",
+                        new String[] { charset });
+            }
+
+            //StreamResult result = new StreamResult(out);
+            transformer.transform(getContent(), result);
+        } catch (Exception ex) {
+            throw new IOException(ex.getMessage());
+        }
+    }
+
+    /**
+     * Serialize to FI if boolean parameter set.
+     */
+    public void output(OutputStream out, boolean isFastInfoset)
+        throws IOException
+    {
+        if (!isFastInfoset) {
+            output(out);
+        }
+        else {
+            try {
+                // Run transform and generate FI output from content
+                Source source = getContent();
+                Transformer transformer = EfficientStreamingTransformer.newTransformer();
+                    transformer.transform(getContent(),
+                        FastInfosetReflection.FastInfosetResult_new(out));
+            }
+            catch (Exception ex) {
+                throw new IOException(ex.getMessage());
+            }
+        }
+    }
+
+    //    public void prettyPrint(OutputStream out) throws IOException {
+    //        if (getDocument() == null)
+    //            initDocument();
+    //
+    //        OutputFormat format = OutputFormat.createPrettyPrint();
+    //
+    //        format.setIndentSize(2);
+    //        format.setNewlines(true);
+    //        format.setTrimText(true);
+    //        format.setPadText(true);
+    //        format.setExpandEmptyElements(false);
+    //
+    //        XMLWriter writer = new XMLWriter(out, format);
+    //        writer.write(getDocument());
+    //    }
+    //
+    //    public void prettyPrint(Writer out) throws IOException {
+    //        if (getDocument() == null)
+    //            initDocument();
+    //
+    //        OutputFormat format = OutputFormat.createPrettyPrint();
+    //
+    //        format.setIndentSize(2);
+    //        format.setNewlines(true);
+    //        format.setTrimText(true);
+    //        format.setPadText(true);
+    //        format.setExpandEmptyElements(false);
+    //
+    //        XMLWriter writer = new XMLWriter(out, format);
+    //        writer.write(getDocument());
+    //    }
+
+
+     public SOAPElement setElementQName(QName newName) throws SOAPException {
+        log.log(Level.SEVERE,
+                "SAAJ0146.impl.invalid.name.change.requested",
+                new Object[] {elementQName.getLocalPart(),
+                              newName.getLocalPart()});
+        throw new SOAPException("Cannot change name for "
+                                + elementQName.getLocalPart() + " to "
+                                + newName.getLocalPart());
+     }
+
+    @Override
+    public void setStaxBridge(StaxBridge bridge) throws SOAPException {
+        //set it on the body
+        ((BodyImpl) getBody()).setStaxBridge(bridge);
+    }
+
+    @Override
+    public StaxBridge getStaxBridge() throws SOAPException {
+        return ((BodyImpl) getBody()).getStaxBridge();
+    }
+
+    @Override
+    public XMLStreamReader getPayloadReader() throws SOAPException {
+        return ((BodyImpl) getBody()).getPayloadReader();
+    }
+
+    @Override
+    public void writeTo(final XMLStreamWriter writer) throws XMLStreamException, SOAPException {
+        StaxBridge readBridge = this.getStaxBridge();
+        if (readBridge != null && readBridge instanceof StaxLazySourceBridge) {
+//              StaxSoapWriteBridge writingBridge =  new StaxSoapWriteBridge(this);
+//              writingBridge.write(writer);
+                final String soapEnvNS = this.getNamespaceURI();
+                final DOMStreamReader reader = new DOMStreamReader(this);
+                XMLStreamReaderToXMLStreamWriter writingBridge =  new XMLStreamReaderToXMLStreamWriter();
+                writingBridge.bridge( new XMLStreamReaderToXMLStreamWriter.Breakpoint(reader, writer) {
+                        public boolean proceedAfterStartElement()  {
+                                if ("Body".equals(reader.getLocalName()) && soapEnvNS.equals(reader.getNamespaceURI()) ){
+                                        return false;
+                                } else
+                                        return true;
+                        }
+            });//bridgeToBodyStartTag
+            ((StaxLazySourceBridge)readBridge).writePayloadTo(writer);
+            writer.writeEndElement();//body
+            writer.writeEndElement();//env
+            writer.writeEndDocument();
+            writer.flush();
+        } else {
+                LazyEnvelopeStaxReader lazyEnvReader = new LazyEnvelopeStaxReader(this);
+                XMLStreamReaderToXMLStreamWriter writingBridge = new XMLStreamReaderToXMLStreamWriter();
+                writingBridge.bridge(lazyEnvReader, writer);
+//            writingBridge.bridge(new XMLStreamReaderToXMLStreamWriter.Breakpoint(lazyEnvReader, writer));
+        }
+        //Assume the staxBridge is exhausted now since we would have read the body reader
+        ((BodyImpl) getBody()).setPayloadStreamRead();
+    }
+
+    @Override
+    public QName getPayloadQName() throws SOAPException {
+        return ((BodyImpl) getBody()).getPayloadQName();
+    }
+
+    @Override
+    public String getPayloadAttributeValue(String localName) throws SOAPException {
+        return ((BodyImpl) getBody()).getPayloadAttributeValue(localName);
+    }
+
+    @Override
+    public String getPayloadAttributeValue(QName qName) throws SOAPException {
+        return ((BodyImpl) getBody()).getPayloadAttributeValue(qName);
+    }
+
+    @Override
+    public boolean isLazy() {
+        try {
+            return ((BodyImpl) getBody()).isLazy();
+        } catch (SOAPException e) {
+            return false;
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/FaultElementImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap.impl;
+
+import java.util.logging.Level;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPFaultElement;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+
+public abstract class FaultElementImpl
+    extends ElementImpl
+    implements SOAPFaultElement {
+
+    protected FaultElementImpl(SOAPDocumentImpl ownerDoc, NameImpl qname) {
+        super(ownerDoc, qname);
+    }
+
+    protected FaultElementImpl(SOAPDocumentImpl ownerDoc, QName qname) {
+        super(ownerDoc, qname);
+    }
+
+    protected abstract boolean isStandardFaultElement();
+
+    public SOAPElement setElementQName(QName newName) throws SOAPException {
+            log.log(Level.SEVERE,
+                    "SAAJ0146.impl.invalid.name.change.requested",
+                    new Object[] {elementQName.getLocalPart(),
+                                  newName.getLocalPart()});
+            throw new SOAPException("Cannot change name for "
+                                    + elementQName.getLocalPart() + " to "
+                                    + newName.getLocalPart());
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/FaultImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,346 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap.impl;
+
+import java.util.Locale;
+import java.util.logging.Level;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.*;
+
+import org.w3c.dom.Element;
+
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+
+public abstract class FaultImpl extends ElementImpl implements SOAPFault {
+
+    /* This can also represent a fault reason element */
+    protected SOAPFaultElement faultStringElement;
+
+    /* This can also represent a fault role element */
+    protected SOAPFaultElement faultActorElement;
+
+    protected SOAPFaultElement faultCodeElement;
+
+    protected Detail detail;
+
+    protected FaultImpl(SOAPDocumentImpl ownerDoc, NameImpl name) {
+        super(ownerDoc, name);
+    }
+
+
+    protected abstract NameImpl getDetailName();
+    protected abstract NameImpl getFaultCodeName();
+    protected abstract NameImpl getFaultStringName();
+    protected abstract NameImpl getFaultActorName();
+    protected abstract DetailImpl createDetail();
+    protected abstract FaultElementImpl createSOAPFaultElement(String localName);
+    protected abstract FaultElementImpl createSOAPFaultElement(QName qname);
+    protected abstract FaultElementImpl createSOAPFaultElement(Name qname);
+    protected abstract void checkIfStandardFaultCode(String faultCode, String uri) throws SOAPException;
+    protected abstract void finallySetFaultCode(String faultcode) throws SOAPException;
+    protected abstract boolean isStandardFaultElement(String localName);
+    protected abstract QName getDefaultFaultCode();
+
+
+    protected void findFaultCodeElement() {
+        this.faultCodeElement =
+            (SOAPFaultElement) findAndConvertChildElement(getFaultCodeName());
+    }
+
+    protected void findFaultActorElement() {
+        this.faultActorElement =
+            (SOAPFaultElement) findAndConvertChildElement(getFaultActorName());
+    }
+
+    protected void findFaultStringElement() {
+        this.faultStringElement =
+            (SOAPFaultElement) findAndConvertChildElement(getFaultStringName());
+    }
+
+    public void setFaultCode(String faultCode) throws SOAPException {
+        setFaultCode(
+            NameImpl.getLocalNameFromTagName(faultCode),
+            NameImpl.getPrefixFromTagName(faultCode),
+            null);
+    }
+
+    public void setFaultCode(String faultCode, String prefix, String uri)
+        throws SOAPException {
+
+        if (prefix == null || "".equals(prefix)) {
+            if (uri != null && !"".equals(uri)) {
+                prefix = getNamespacePrefix(uri);
+                if (prefix == null || "".equals(prefix)) {
+                    prefix = "ns0";
+                }
+            }
+        }
+        if (this.faultCodeElement == null)
+            findFaultCodeElement();
+
+        if (this.faultCodeElement == null)
+            this.faultCodeElement = addFaultCodeElement();
+        else
+            this.faultCodeElement.removeContents();
+
+        if (uri == null || "".equals(uri)) {
+            uri = this.faultCodeElement.getNamespaceURI(prefix);
+        }
+        if (uri == null || "".equals(uri)) {
+            if (prefix != null && !"".equals(prefix)) {
+                //cannot allow an empty URI for a non-Empty prefix
+                log.log(Level.SEVERE, "SAAJ0140.impl.no.ns.URI", new Object[]{prefix + ":" + faultCode});
+                throw new SOAPExceptionImpl("Empty/Null NamespaceURI specified for faultCode \"" + prefix + ":" + faultCode + "\"");
+            } else {
+                uri = "";
+            }
+        }
+        checkIfStandardFaultCode(faultCode, uri);
+        ((FaultElementImpl) this.faultCodeElement).ensureNamespaceIsDeclared(prefix, uri);
+
+        if (prefix == null || "".equals(prefix)) {
+            finallySetFaultCode(faultCode);
+        } else {
+            finallySetFaultCode(prefix + ":" + faultCode);
+        }
+    }
+
+    public void setFaultCode(Name faultCodeQName) throws SOAPException {
+        setFaultCode(
+            faultCodeQName.getLocalName(),
+            faultCodeQName.getPrefix(),
+            faultCodeQName.getURI());
+    }
+
+    public void setFaultCode(QName faultCodeQName) throws SOAPException {
+        setFaultCode(
+            faultCodeQName.getLocalPart(),
+            faultCodeQName.getPrefix(),
+            faultCodeQName.getNamespaceURI());
+    }
+
+    protected static QName convertCodeToQName(
+        String code,
+        SOAPElement codeContainingElement) {
+
+        int prefixIndex = code.indexOf(':');
+        if (prefixIndex == -1) {
+            return new QName(code);
+        }
+
+        String prefix = code.substring(0, prefixIndex);
+        String nsName =((ElementImpl) codeContainingElement).lookupNamespaceURI(prefix);
+            //((ElementImpl) codeContainingElement).getNamespaceURI(prefix);
+        return new QName(nsName, getLocalPart(code), prefix);
+    }
+
+    protected void initializeDetail() {
+        NameImpl detailName = getDetailName();
+        detail = (Detail) findAndConvertChildElement(detailName);
+    }
+
+    public Detail getDetail() {
+        if (detail == null)
+            initializeDetail();
+        if ((detail != null) && (detail.getParentNode() == null)) {
+        // a detach node was called on it
+            detail = null;
+        }
+        return detail;
+    }
+
+    public Detail addDetail() throws SOAPException {
+        if (detail == null)
+            initializeDetail();
+        if (detail == null) {
+            detail = createDetail();
+            addNode(detail);
+            return detail;
+        } else {
+            // Log
+            throw new SOAPExceptionImpl("Error: Detail already exists");
+        }
+    }
+
+    public boolean hasDetail() {
+        return (getDetail() != null);
+    }
+
+    public abstract void setFaultActor(String faultActor) throws SOAPException;
+
+    public String getFaultActor() {
+        if (this.faultActorElement == null)
+            findFaultActorElement();
+        if (this.faultActorElement != null) {
+                return this.faultActorElement.getValue();
+        }
+        return null;
+    }
+
+    public SOAPElement setElementQName(QName newName) throws SOAPException {
+
+        log.log(
+            Level.SEVERE,
+            "SAAJ0146.impl.invalid.name.change.requested",
+            new Object[] {elementQName.getLocalPart(), newName.getLocalPart()});
+        throw new SOAPException(
+            "Cannot change name for " + elementQName.getLocalPart() + " to " + newName.getLocalPart());
+    }
+
+    protected SOAPElement convertToSoapElement(Element element) {
+        if (element instanceof SOAPFaultElement) {
+            return (SOAPElement) element;
+        } else if (element instanceof SOAPElement) {
+            SOAPElement soapElement = (SOAPElement) element;
+            if (getDetailName().equals(soapElement.getElementName())) {
+                return replaceElementWithSOAPElement(element, createDetail());
+            } else {
+                String localName =
+                    soapElement.getElementName().getLocalName();
+                if (isStandardFaultElement(localName))
+                    return replaceElementWithSOAPElement(
+                               element,
+                               createSOAPFaultElement(soapElement.getElementQName()));
+                return soapElement;
+            }
+        } else {
+            Name elementName = NameImpl.copyElementName(element);
+            ElementImpl newElement;
+            if (getDetailName().equals(elementName)) {
+                newElement = (ElementImpl) createDetail();
+            } else {
+                String localName = elementName.getLocalName();
+                if (isStandardFaultElement(localName))
+                    newElement =
+                        (ElementImpl) createSOAPFaultElement(elementName);
+                else
+                    newElement = (ElementImpl) createElement(elementName);
+            }
+            return replaceElementWithSOAPElement(element, newElement);
+        }
+    }
+
+    protected SOAPFaultElement addFaultCodeElement() throws SOAPException {
+        if (this.faultCodeElement == null)
+            findFaultCodeElement();
+        if (this.faultCodeElement == null) {
+            this.faultCodeElement =
+                addSOAPFaultElement(getFaultCodeName().getLocalName());
+            return this.faultCodeElement;
+        } else {
+            throw new SOAPExceptionImpl("Error: Faultcode already exists");
+        }
+    }
+
+    private SOAPFaultElement addFaultStringElement() throws SOAPException {
+        if (this.faultStringElement == null)
+            findFaultStringElement();
+        if (this.faultStringElement == null) {
+            this.faultStringElement =
+                addSOAPFaultElement(getFaultStringName().getLocalName());
+            return this.faultStringElement;
+        } else {
+            // Log
+            throw new SOAPExceptionImpl("Error: Faultstring already exists");
+        }
+    }
+
+    private SOAPFaultElement addFaultActorElement() throws SOAPException {
+        if (this.faultActorElement == null)
+            findFaultActorElement();
+        if (this.faultActorElement == null) {
+            this.faultActorElement =
+                addSOAPFaultElement(getFaultActorName().getLocalName());
+            return this.faultActorElement;
+        } else {
+            // Log
+            throw new SOAPExceptionImpl("Error: Faultactor already exists");
+        }
+    }
+
+    protected SOAPElement addElement(Name name) throws SOAPException {
+        if (getDetailName().equals(name)) {
+            return addDetail();
+        } else if(getFaultCodeName().equals(name)) {
+            return addFaultCodeElement();
+        } else if(getFaultStringName().equals(name)) {
+            return addFaultStringElement();
+        } else if(getFaultActorName().equals(name)) {
+            return addFaultActorElement();
+        }
+        return super.addElement(name);
+    }
+
+    protected SOAPElement addElement(QName name) throws SOAPException {
+        return addElement(NameImpl.convertToName(name));
+    }
+
+    protected FaultElementImpl addSOAPFaultElement(String localName)
+        throws SOAPException {
+
+        FaultElementImpl faultElem = createSOAPFaultElement(localName);
+        addNode(faultElem);
+        return faultElem;
+    }
+
+    /**
+     * Convert an xml:lang attribute value into a Locale object
+     */
+    protected static Locale xmlLangToLocale(String xmlLang) {
+        if (xmlLang == null) {
+            return null;
+        }
+
+        // Spec uses hyphen as separator
+        int index = xmlLang.indexOf("-");
+
+        // Accept underscore as separator as well
+        if (index == -1) {
+            index = xmlLang.indexOf("_");
+        }
+
+        if (index == -1) {
+            // No separator so assume only a language component
+            return new Locale(xmlLang, "");
+        }
+
+        String language = xmlLang.substring(0, index);
+        String country = xmlLang.substring(index + 1);
+        return new Locale(language, country);
+    }
+
+    protected static String localeToXmlLang(Locale locale) {
+        String xmlLang = locale.getLanguage();
+        String country = locale.getCountry();
+        if (!"".equals(country)) {
+            xmlLang += "-" + country;
+        }
+        return xmlLang;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/HeaderElementImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,135 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap.impl;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.*;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+
+public abstract class HeaderElementImpl
+    extends ElementImpl
+    implements SOAPHeaderElement {
+
+    protected static Name RELAY_ATTRIBUTE_LOCAL_NAME =
+        NameImpl.createFromTagName("relay");
+    protected static Name MUST_UNDERSTAND_ATTRIBUTE_LOCAL_NAME =
+        NameImpl.createFromTagName("mustUnderstand");
+
+    public HeaderElementImpl(SOAPDocumentImpl ownerDoc, Name qname) {
+        super(ownerDoc, qname);
+    }
+    public HeaderElementImpl(SOAPDocumentImpl ownerDoc, QName qname) {
+        super(ownerDoc, qname);
+    }
+
+    protected abstract NameImpl getActorAttributeName();
+    protected abstract NameImpl getRoleAttributeName();
+    protected abstract NameImpl getMustunderstandAttributeName();
+    protected abstract boolean getMustunderstandAttributeValue(String str);
+    protected abstract String getMustunderstandLiteralValue(boolean mu);
+    protected abstract NameImpl getRelayAttributeName();
+    protected abstract boolean getRelayAttributeValue(String str);
+    protected abstract String getRelayLiteralValue(boolean mu);
+    protected abstract String getActorOrRole();
+
+
+    public void setParentElement(SOAPElement element) throws SOAPException {
+        if (!(element instanceof SOAPHeader)) {
+            log.severe("SAAJ0130.impl.header.elem.parent.mustbe.header");
+            throw new SOAPException("Parent of a SOAPHeaderElement has to be a SOAPHeader");
+        }
+
+        super.setParentElement(element);
+    }
+
+    public void setActor(String actorUri) {
+        try {
+            removeAttribute(getActorAttributeName());
+            addAttribute((Name) getActorAttributeName(), actorUri);
+        } catch (SOAPException ex) {
+        }
+    }
+
+    //SOAP 1.2 supports Role
+    public void setRole(String roleUri) throws SOAPException {
+        // runtime exception thrown if called for SOAP 1.1
+        removeAttribute(getRoleAttributeName());
+        addAttribute((Name) getRoleAttributeName(), roleUri);
+    }
+
+
+    Name actorAttNameWithoutNS = NameImpl.createFromTagName("actor");
+
+    public String getActor() {
+        String actor = getAttributeValue(getActorAttributeName());
+        return actor;
+    }
+
+    Name roleAttNameWithoutNS = NameImpl.createFromTagName("role");
+
+    public String getRole() {
+        // runtime exception thrown for 1.1
+        String role = getAttributeValue(getRoleAttributeName());
+        return role;
+    }
+
+    public void setMustUnderstand(boolean mustUnderstand) {
+        try {
+            removeAttribute(getMustunderstandAttributeName());
+            addAttribute(
+                (Name) getMustunderstandAttributeName(),
+                getMustunderstandLiteralValue(mustUnderstand));
+        } catch (SOAPException ex) {
+        }
+    }
+
+    public boolean getMustUnderstand() {
+        String mu = getAttributeValue(getMustunderstandAttributeName());
+
+        if (mu != null)
+            return getMustunderstandAttributeValue(mu);
+
+        return false;
+    }
+
+    public void setRelay(boolean relay) throws SOAPException {
+        // runtime exception thrown for 1.1
+        removeAttribute(getRelayAttributeName());
+        addAttribute(
+            (Name) getRelayAttributeName(),
+            getRelayLiteralValue(relay));
+    }
+
+    public boolean getRelay() {
+        String mu = getAttributeValue(getRelayAttributeName());
+        if (mu != null)
+            return getRelayAttributeValue(mu);
+
+        return false;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/HeaderImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,306 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap.impl;
+
+import java.util.*;
+import java.util.logging.Level;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.*;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+
+public abstract class HeaderImpl extends ElementImpl implements SOAPHeader {
+    protected static final boolean MUST_UNDERSTAND_ONLY = false;
+
+    protected HeaderImpl(SOAPDocumentImpl ownerDoc, NameImpl name) {
+        super(ownerDoc, name);
+    }
+
+    protected abstract SOAPHeaderElement createHeaderElement(Name name)
+        throws SOAPException;
+    protected abstract SOAPHeaderElement createHeaderElement(QName name)
+        throws SOAPException;
+    protected abstract NameImpl getNotUnderstoodName();
+    protected abstract NameImpl getUpgradeName();
+    protected abstract NameImpl getSupportedEnvelopeName();
+
+    public SOAPHeaderElement addHeaderElement(Name name) throws SOAPException {
+        SOAPElement newHeaderElement =
+            ElementFactory.createNamedElement(
+                ((SOAPDocument) getOwnerDocument()).getDocument(),
+                name.getLocalName(),
+                name.getPrefix(),
+                name.getURI());
+        if (newHeaderElement == null
+            || !(newHeaderElement instanceof SOAPHeaderElement)) {
+            newHeaderElement = createHeaderElement(name);
+        }
+
+        // header elements must be namespace qualified
+        // check that URI is  not empty, ensuring that the element is NS qualified.
+        String uri = newHeaderElement.getElementQName().getNamespaceURI();
+        if ((uri == null) || ("").equals(uri)) {
+            log.severe("SAAJ0131.impl.header.elems.ns.qualified");
+            throw new SOAPExceptionImpl("HeaderElements must be namespace qualified");
+        }
+        addNode(newHeaderElement);
+        return (SOAPHeaderElement) newHeaderElement;
+    }
+
+    public SOAPHeaderElement addHeaderElement(QName name) throws SOAPException {
+        SOAPElement newHeaderElement =
+            ElementFactory.createNamedElement(
+                ((SOAPDocument) getOwnerDocument()).getDocument(),
+                name.getLocalPart(),
+                name.getPrefix(),
+                name.getNamespaceURI());
+        if (newHeaderElement == null
+            || !(newHeaderElement instanceof SOAPHeaderElement)) {
+            newHeaderElement = createHeaderElement(name);
+        }
+
+        // header elements must be namespace qualified
+        // check that URI is  not empty, ensuring that the element is NS qualified.
+        String uri = newHeaderElement.getElementQName().getNamespaceURI();
+        if ((uri == null) || ("").equals(uri)) {
+            log.severe("SAAJ0131.impl.header.elems.ns.qualified");
+            throw new SOAPExceptionImpl("HeaderElements must be namespace qualified");
+        }
+        addNode(newHeaderElement);
+        return (SOAPHeaderElement) newHeaderElement;
+    }
+
+    protected SOAPElement addElement(Name name) throws SOAPException {
+        return addHeaderElement(name);
+    }
+
+    protected SOAPElement addElement(QName name) throws SOAPException {
+        return addHeaderElement(name);
+    }
+
+    public Iterator examineHeaderElements(String actor) {
+        return getHeaderElementsForActor(actor, false, false);
+    }
+
+    public Iterator extractHeaderElements(String actor) {
+        return getHeaderElementsForActor(actor, true, false);
+    }
+
+    protected Iterator getHeaderElementsForActor(
+        String actor,
+        boolean detach,
+        boolean mustUnderstand) {
+        if (actor == null || actor.equals("")) {
+            log.severe("SAAJ0132.impl.invalid.value.for.actor.or.role");
+            throw new IllegalArgumentException("Invalid value for actor or role");
+        }
+        return getHeaderElements(actor, detach, mustUnderstand);
+    }
+
+    protected Iterator getHeaderElements(
+        String actor,
+        boolean detach,
+        boolean mustUnderstand) {
+        List elementList = new ArrayList();
+
+        Iterator eachChild = getChildElements();
+
+        Object currentChild = iterate(eachChild);
+        while (currentChild != null) {
+            if (!(currentChild instanceof SOAPHeaderElement)) {
+                currentChild = iterate(eachChild);
+            } else {
+                HeaderElementImpl currentElement =
+                    (HeaderElementImpl) currentChild;
+                currentChild = iterate(eachChild);
+
+                boolean isMustUnderstandMatching =
+                    (!mustUnderstand || currentElement.getMustUnderstand());
+                boolean doAdd = false;
+                if (actor == null && isMustUnderstandMatching) {
+                    doAdd = true;
+                } else {
+                    String currentActor = currentElement.getActorOrRole();
+                    if (currentActor == null) {
+                        currentActor = "";
+                    }
+
+                    if (currentActor.equalsIgnoreCase(actor)
+                        && isMustUnderstandMatching) {
+                        doAdd = true;
+                    }
+                }
+
+                if (doAdd) {
+                    elementList.add(currentElement);
+                    if (detach) {
+                        currentElement.detachNode();
+                    }
+                }
+            }
+        }
+
+        return elementList.listIterator();
+    }
+
+    private Object iterate(Iterator each) {
+        return each.hasNext() ? each.next() : null;
+    }
+
+    public void setParentElement(SOAPElement element) throws SOAPException {
+        if (!(element instanceof SOAPEnvelope)) {
+            log.severe("SAAJ0133.impl.header.parent.mustbe.envelope");
+            throw new SOAPException("Parent of SOAPHeader has to be a SOAPEnvelope");
+        }
+        super.setParentElement(element);
+    }
+
+    // overriding ElementImpl's method to ensure that HeaderElements are
+    // namespace qualified. Holds for both SOAP versions.
+    // TODO - This check needs to be made for other addChildElement() methods
+    // as well.
+    public SOAPElement addChildElement(String localName) throws SOAPException {
+
+        SOAPElement element = super.addChildElement(localName);
+        // check that URI is  not empty, ensuring that the element is NS qualified.
+        String uri = element.getElementName().getURI();
+        if ((uri == null) || ("").equals(uri)) {
+            log.severe("SAAJ0134.impl.header.elems.ns.qualified");
+            throw new SOAPExceptionImpl("HeaderElements must be namespace qualified");
+        }
+        return element;
+    }
+
+    public Iterator examineAllHeaderElements() {
+        return getHeaderElements(null, false, MUST_UNDERSTAND_ONLY);
+    }
+
+    public Iterator examineMustUnderstandHeaderElements(String actor) {
+        return getHeaderElements(actor, false, true);
+
+    }
+
+    public Iterator extractAllHeaderElements() {
+        return getHeaderElements(null, true, false);
+    }
+
+    public SOAPHeaderElement addUpgradeHeaderElement(Iterator supportedSoapUris)
+        throws SOAPException {
+        if (supportedSoapUris == null) {
+            log.severe("SAAJ0411.ver1_2.no.null.supportedURIs");
+            throw new SOAPException("Argument cannot be null; iterator of supportedURIs cannot be null");
+        }
+        if (!supportedSoapUris.hasNext()) {
+            log.severe("SAAJ0412.ver1_2.no.empty.list.of.supportedURIs");
+            throw new SOAPException("List of supported URIs cannot be empty");
+        }
+        Name upgradeName = getUpgradeName();
+        SOAPHeaderElement upgradeHeaderElement =
+            (SOAPHeaderElement) addChildElement(upgradeName);
+        Name supportedEnvelopeName = getSupportedEnvelopeName();
+        int i = 0;
+        while (supportedSoapUris.hasNext()) {
+            SOAPElement subElement =
+                upgradeHeaderElement.addChildElement(supportedEnvelopeName);
+            String ns = "ns" + Integer.toString(i);
+            subElement.addAttribute(
+                NameImpl.createFromUnqualifiedName("qname"),
+                ns + ":Envelope");
+            subElement.addNamespaceDeclaration(
+                ns,
+                (String) supportedSoapUris.next());
+            i ++;
+        }
+        return upgradeHeaderElement;
+    }
+
+    public SOAPHeaderElement addUpgradeHeaderElement(String supportedSoapUri)
+        throws SOAPException {
+        return addUpgradeHeaderElement(new String[] {supportedSoapUri});
+    }
+
+    public SOAPHeaderElement addUpgradeHeaderElement(String[] supportedSoapUris)
+        throws SOAPException {
+
+        if (supportedSoapUris == null) {
+            log.severe("SAAJ0411.ver1_2.no.null.supportedURIs");
+            throw new SOAPException("Argument cannot be null; array of supportedURIs cannot be null");
+        }
+        if (supportedSoapUris.length == 0) {
+            log.severe("SAAJ0412.ver1_2.no.empty.list.of.supportedURIs");
+            throw new SOAPException("List of supported URIs cannot be empty");
+        }
+        Name upgradeName = getUpgradeName();
+        SOAPHeaderElement upgradeHeaderElement =
+            (SOAPHeaderElement) addChildElement(upgradeName);
+        Name supportedEnvelopeName = getSupportedEnvelopeName();
+        for (int i = 0; i < supportedSoapUris.length; i ++) {
+            SOAPElement subElement =
+                upgradeHeaderElement.addChildElement(supportedEnvelopeName);
+            String ns = "ns" + Integer.toString(i);
+            subElement.addAttribute(
+                NameImpl.createFromUnqualifiedName("qname"),
+                ns + ":Envelope");
+            subElement.addNamespaceDeclaration(ns, supportedSoapUris[i]);
+        }
+        return upgradeHeaderElement;
+    }
+
+    protected SOAPElement convertToSoapElement(Element element) {
+        if (element instanceof SOAPHeaderElement) {
+            return (SOAPElement) element;
+        } else {
+            SOAPHeaderElement headerElement;
+            try {
+                headerElement =
+                    createHeaderElement(NameImpl.copyElementName(element));
+            } catch (SOAPException e) {
+                throw new ClassCastException("Could not convert Element to SOAPHeaderElement: " + e.getMessage());
+            }
+            return replaceElementWithSOAPElement(
+                element,
+                (ElementImpl) headerElement);
+        }
+    }
+
+    public SOAPElement setElementQName(QName newName) throws SOAPException {
+       log.log(Level.SEVERE,
+                "SAAJ0146.impl.invalid.name.change.requested",
+                new Object[] {elementQName.getLocalPart(),
+                              newName.getLocalPart()});
+        throw new SOAPException("Cannot change name for "
+                                + elementQName.getLocalPart() + " to "
+                                + newName.getLocalPart());
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,86 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for impl
+# Error messages
+SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: Parent of a SOAPBodyElement has to be a SOAPBody
+SAAJ0102.impl.cannot.locate.ns=SAAJ0102: Unable to locate namespace for prefix {0}
+SAAJ0103.impl.cannot.add.fragements=SAAJ0103: Cannot add fragments which contain elements which are in the SOAP namespace
+SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: Encoding style {0} should be a valid URI
+SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: Cannot pass NULL to setParentElement
+SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: Cannot setValue on an Element that does not have an only child of type Text
+
+SAAJ0110.impl.fault.already.exists=SAAJ0110: Error: Fault already exists
+SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: Parent of SOAPBody has to be a SOAPEnvelope
+
+SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: Cannot pass NULL to setParentElement
+SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: Cannot split text from a Comment Node
+SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: Cannot replace whole text from a Comment Node
+
+SAAJ0120.impl.header.already.exists=SAAJ0120: Can't add a header when one is already present
+SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: First child of Envelope must be either a Header or Body
+SAAJ0122.impl.body.already.exists=SAAJ0122: Can't add a body when one is already present
+SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: Cannot declare reserved xmlns prefix
+SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: Qualified name cannot be xmlns
+#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null
+SAAJ0126.impl.cannot.locate.ns=SAAJ0126: Unable to locate namespace for prefix {0}
+SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: Cannot pass NULL to setParentElement
+
+SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: Parent of a SOAPHeaderElement has to be a SOAPHeader
+SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements must be namespace qualified
+SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: Invalid value for actor or role
+SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: Parent of SOAPHeader has to be a SOAPEnvelope
+SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements must be namespace qualified
+
+SAAJ0140.impl.no.ns.URI=SAAJ0140: Empty/Null NamespaceURI specified for faultCode {0}
+SAAJ0141.impl.detail.exists=SAAJ0141: Detail already exists
+SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: Fault/Reason/Text not supported by this SOAP version, try SOAP 1.2 or later
+SAAJ0143.impl.node.not.supported=SAAJ0143: Fault/Node not supported by this SOAP version, try SOAP 1.2 or later
+SAAJ0144.impl.role.not.supported=SAAJ0144: Fault/Role not supported by this SOAP version, try SOAP 1.2 or later
+SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: Cannot pass NULL to setParentElement
+SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: Cannot change name of element {0} to {1}
+SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: Cannot change the URI for prefix {0} from {1} to {2} in setElementQName
+SAAJ0148.impl.invalid.prefix.for.uri=Non-empty namespace URI: {0} for an empty prefix in SetElementQName
+SAAJ0149.impl.null.prefix=SAAJ0149: prefix cannot be "null" when creating a QName
+
+SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: Cannot extract Document from body
+SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: Unable to extract Document from body
+
+# Debug messages
+SAAJ0150.impl.added.attr=SAAJ0150: Added attribute {0}
+SAAJ0151.impl.no.children=SAAJ0151: Cannot find node containing value: there are no children
+SAAJ0152.impl.first.child.not.text.node=SAAJ0152: Cannot find node containing value: first child is not a Text node
+SAAJ0153.impl.multiple.children.same.value=SAAJ0153: Cannot find node containing value: There is more than one child node
+SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: A SOAPFault element can only be added as a child of SOAPBody
+SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: A Detail element can only be added as a child of a SOAPFault
+SAAJ0156.impl.adding.fault.error=SAAJ0156: Cannot add SOAPFault, a SOAPFault should be the only child of a SOAPBody
+SAAJ0157.impl.detail.exists.error=SAAJ0157: Cannot add Detail, Detail already exists
+SAAJ0158.impl.version.mismatch.fault=SAAJ0158: SOAP Version mismatch encountered when trying to add SOAPFault to SOAPBody
+SAAJ0159.impl.version.mismatch.detail=SAAJ0159: SOAP Version mismatch encountered when trying to add Detail to SOAPFault
+
+# Info messages
+SAAJ0190.impl.set.xml.declaration=SAAJ0190: Omit XML declaration set to {0}
+SAAJ0191.impl.set.encoding=SAAJ0191: Encoding is set to {0}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_de.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,86 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for impl
+# Error messages
+SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: \u00DCbergeordnetes Element von SOAPBodyElement muss ein SOAPBody sein
+SAAJ0102.impl.cannot.locate.ns=SAAJ0102: Namespace f\u00FCr Pr\u00E4fix {0} kann nicht gefunden werden
+SAAJ0103.impl.cannot.add.fragements=SAAJ0103: Es k\u00F6nnen keine Fragmente hinzugef\u00FCgt werden, die Elemente enthalten, die im SOAP-Namespace enthalten sind
+SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: Codierungsstil {0} muss ein g\u00FCltiger URI sein
+SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: NULL kann nicht an setParentElement \u00FCbergeben werden
+SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: setValue ist bei einem Element nicht m\u00F6glich, das nicht ein einziges untergeordnetes Element vom Typ Text hat
+
+SAAJ0110.impl.fault.already.exists=SAAJ0110: Fehler: Fault ist bereits vorhanden
+SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: \u00DCbergeordnetes Element von SOAPBody muss SOAPEnvelope sein
+
+SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: NULL kann nicht an setParentElement \u00FCbergeben werden
+SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: Text aus einem Kommentarknoten kann nicht geteilt werden
+SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: Gesamter Text aus einem Kommentarknoten kann nicht ersetzt werden
+
+SAAJ0120.impl.header.already.exists=SAAJ0120: Es kann kein Header hinzugef\u00FCgt werden, wenn bereits ein Header vorhanden ist
+SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: Erstes untergeordnetes Element von Envelope muss "Header" oder "Body" sein
+SAAJ0122.impl.body.already.exists=SAAJ0122: Es kann kein Nachrichtentext hinzugef\u00FCgt werden, wenn bereits ein Nachrichtentext vorhanden ist
+SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: Reserviertes xmlns-Pr\u00E4fix kann nicht deklariert werden
+SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: Vollst\u00E4ndiger Name darf nicht xmlns sein
+#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null
+SAAJ0126.impl.cannot.locate.ns=SAAJ0126: Namespace f\u00FCr Pr\u00E4fix {0} kann nicht gefunden werden
+SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: NULL kann nicht an setParentElement \u00FCbergeben werden
+
+SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: \u00DCbergeordnetes Element von SOAPHeaderElement muss ein SOAPHeader sein
+SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements muss mit Namespace angegeben werden
+SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: Ung\u00FCltiger Wert f\u00FCr Actor oder Rolle
+SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: \u00DCbergeordnetes Element von SOAPHeader muss SOAPEnvelope sein
+SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements muss mit Namespace angegeben werden
+
+SAAJ0140.impl.no.ns.URI=SAAJ0140: Leerer/Null-NamespaceURI f\u00FCr faultCode {0} angegeben
+SAAJ0141.impl.detail.exists=SAAJ0141: Detail ist bereits vorhanden
+SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: Fault/Ursache/Text wird von dieser SOAP-Version nicht unterst\u00FCtzt, versuchen Sie SOAP 1.2 oder h\u00F6her
+SAAJ0143.impl.node.not.supported=SAAJ0143: Fault/Knoten wird von dieser SOAP-Version nicht unterst\u00FCtzt, versuchen Sie SOAP 1.2 oder h\u00F6her
+SAAJ0144.impl.role.not.supported=SAAJ0144: Fault/Rolle wird von dieser SOAP-Version nicht unterst\u00FCtzt, versuchen Sie SOAP 1.2 oder h\u00F6her
+SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: NULL kann nicht an setParentElement \u00FCbergeben werden
+SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: Name des Elements {0} kann nicht in {1} ge\u00E4ndert werden
+SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: Der URI f\u00FCr Pr\u00E4fix {0} kann nicht von {1} in {2} in setElementQName ge\u00E4ndert werden
+SAAJ0148.impl.invalid.prefix.for.uri=Nicht-leerer Namespace-URI: {0} f\u00FCr ein leeres Pr\u00E4fix in SetElementQName
+SAAJ0149.impl.null.prefix=SAAJ0149: Pr\u00E4fix darf bei der Erstellung eines QName nicht "null" sein
+
+SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: Dokument kann nicht aus Nachrichtentext extrahiert werden
+SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: Dokument kann nicht aus Nachrichtentext extrahiert werden
+
+# Debug messages
+SAAJ0150.impl.added.attr=SAAJ0150: Attribut {0} hinzugef\u00FCgt
+SAAJ0151.impl.no.children=SAAJ0151: Knoten, der Wert enth\u00E4lt, kann nicht gefunden werden: es sind keine untergeordneten Elemente vorhanden
+SAAJ0152.impl.first.child.not.text.node=SAAJ0152: Knoten, der Wert enth\u00E4lt, kann nicht gefunden werden: erstes untergeordnetes Element ist kein Textknoten
+SAAJ0153.impl.multiple.children.same.value=SAAJ0153: Knoten, der Wert enth\u00E4lt, kann nicht gefunden werden: Es ist mehr als ein untergeordneter Knoten vorhanden
+SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: Ein SOAPFault-Element kann nur als untergeordnetes Element von SOAPBody hinzugef\u00FCgt werden
+SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: Ein "Detail"-Element kann nur als untergeordnetes Element von SOAPFault hinzugef\u00FCgt werden
+SAAJ0156.impl.adding.fault.error=SAAJ0156: SOAPFault kann nicht hinzugef\u00FCgt werden, SOAPFault muss das einzige untergeordnete Element von SOAPBody sein
+SAAJ0157.impl.detail.exists.error=SAAJ0157: Detail kann nicht hinzugef\u00FCgt werden, Detail ist bereits vorhanden
+SAAJ0158.impl.version.mismatch.fault=SAAJ0158: Nicht \u00FCbereinstimmende SOAP-Version beim Versuch aufgetreten, SOAPFault zu SOAPBody hinzuzuf\u00FCgen
+SAAJ0159.impl.version.mismatch.detail=SAAJ0159: Nicht \u00FCbereinstimmende SOAP-Version beim Versuch aufgetreten, Detail zu SOAPBody hinzuzuf\u00FCgen
+
+# Info messages
+SAAJ0190.impl.set.xml.declaration=SAAJ0190: Deklaration "Omit XML" auf {0} gesetzt
+SAAJ0191.impl.set.encoding=SAAJ0191: Codierung ist auf {0} gesetzt
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_es.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,86 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for impl
+# Error messages
+SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: el principal de un SOAPBodyElement tiene que ser un SOAPBody
+SAAJ0102.impl.cannot.locate.ns=SAAJ0102: no se ha encontrado el espacio de nombres para el prefijo {0}
+SAAJ0103.impl.cannot.add.fragements=SAAJ0103: no se pueden agregar fragmentos que contengan elementos que se encuentren en el espacio de nombres de SOAP
+SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: el estilo de codificaci\u00F3n {0} debe ser un URI v\u00E1lido
+SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: no se puede transferir NULL a setParentElement
+SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: no se puede definir un valor en un elemento que no tenga un \u00FAnico secundario de tipo Text
+
+SAAJ0110.impl.fault.already.exists=SAAJ0110: Error: ya existe el fallo
+SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: el principal de SOAPBody tiene que ser SOAPEnvelope
+
+SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: no se puede transferir NULL a setParentElement
+SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: no se puede dividir el texto de un nodo de comentarios
+SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: no se puede sustituir el texto completo de un nodo de comentarios
+
+SAAJ0120.impl.header.already.exists=SAAJ0120: no se puede agregar una cabecera si ya hay una
+SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: el primer secundario de Envelope debe ser Header o Body
+SAAJ0122.impl.body.already.exists=SAAJ0120: no se puede agregar un cuerpo si ya hay uno
+SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: no se puede declarar el prefijo xmlns reservado
+SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: el nombre cualificado no puede ser xmlns
+#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null
+SAAJ0126.impl.cannot.locate.ns=SAAJ0126: no se ha encontrado el espacio de nombres para el prefijo {0}
+SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: no se puede transferir NULL a setParentElement
+
+SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: el principal de SOAPHeaderElement tiene que ser SOAPHeader
+SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements debe estar cualificado por espacio de nombres
+SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: valor no v\u00E1lido para actor o rol
+SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: el principal de SOAPHeader tiene que ser SOAPEnvelope
+SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements debe estar cualificado por espacio de nombres
+
+SAAJ0140.impl.no.ns.URI=SAAJ0140: se ha especificado un URI de espacio de nombres vac\u00EDo o nulo para el c\u00F3digo de fallo {0}
+SAAJ0141.impl.detail.exists=SAAJ0141: ya existe el detalle
+SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: el fallo/motivo/texto no est\u00E1 soportado en esta versi\u00F3n de SOAP. Pruebe SOAP 1.2 o posterior
+SAAJ0143.impl.node.not.supported=SAAJ0143: El fallo/nodo no est\u00E1 soportado en esta versi\u00F3n de SOAP. Pruebe SOAP 1.2 o posterior
+SAAJ0144.impl.role.not.supported=SAAJ0143: el fallo/rol no est\u00E1 soportado en esta versi\u00F3n de SOAP. Pruebe SOAP 1.2 o posterior
+SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: no se puede transferir NULL a setParentElement
+SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: no se puede cambiar el nombre del elemento {0} por {1}
+SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: no se puede cambiar el URI del prefijo {0} de {1} a {2} en setElementQName
+SAAJ0148.impl.invalid.prefix.for.uri=URI de espacio de nombres no vac\u00EDo: {0} para un prefijo vac\u00EDo en SetElementQName
+SAAJ0149.impl.null.prefix=SAAJ0149: el prefijo no puede ser "null" al crear un QName
+
+SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: no se puede extraer el documento del cuerpo
+SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: no se ha podido extraer el documento del cuerpo
+
+# Debug messages
+SAAJ0150.impl.added.attr=SAAJ0150: se ha agregado el atributo {0}
+SAAJ0151.impl.no.children=SAAJ0151: no se ha encontrado el nodo que contiene el valor: no hay secundarios
+SAAJ0152.impl.first.child.not.text.node=SAAJ0152: no se ha encontrado el nodo que contiene el valor: el primer secundario no es un nodo de texto
+SAAJ0153.impl.multiple.children.same.value=SAAJ0153: no se ha encontrado el nodo que contiene el valor: hay m\u00E1s de un nodo secundario
+SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: un elemento SOAPFault s\u00F3lo se puede agregar como secundario de SOAPBody
+SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: un elemento Detail s\u00F3lo se puede agregar como secundario de SOAPFault
+SAAJ0156.impl.adding.fault.error=SAAJ0156: no se puede agregar SOAPFault; SOAPFault debe ser el \u00FAnico secundario de SOAPBody
+SAAJ0157.impl.detail.exists.error=SAAJ0157: no se puede agregar el detalle. El detalle ya existe
+SAAJ0158.impl.version.mismatch.fault=SAAJ0158: se ha encontrado un error de coincidencia de la versi\u00F3n de SOAP al intentar agregar SOAPFault a SOAPBody
+SAAJ0159.impl.version.mismatch.detail=SAAJ0159: se ha encontrado un error de coincidencia de la versi\u00F3n de SOAP al intentar agregar Detail a SOAPFault
+
+# Info messages
+SAAJ0190.impl.set.xml.declaration=SAAJ0190: omita la declaraci\u00F3n XML definida en {0}
+SAAJ0191.impl.set.encoding=SAAJ0191: la codificaci\u00F3n se ha definido en {0}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_fr.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,86 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for impl
+# Error messages
+SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101 : le parent d'un \u00E9l\u00E9ment SOAPBodyElement doit \u00EAtre un \u00E9l\u00E9ment SOAPBody
+SAAJ0102.impl.cannot.locate.ns=SAAJ0102 : impossible de localiser l''espace de noms pour le pr\u00E9fixe {0}
+SAAJ0103.impl.cannot.add.fragements=SAAJ0103 : impossible d'ajouter les fragments qui contiennent les \u00E9l\u00E9ments figurant dans l'espace de noms SOAP
+SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105 : le style d''encodage {0} doit \u00EAtre un URI valide
+SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106 : impossible de transmettre la valeur NULL \u00E0 setParentElement
+SAAJ0107.impl.elem.child.not.single.text=SAAJ0107 : impossible de d\u00E9finir la valeur sur un \u00E9l\u00E9ment qui ne comporte aucun enfant unique de type Text
+
+SAAJ0110.impl.fault.already.exists=SAAJ0110 : erreur : l'erreur existe d\u00E9j\u00E0
+SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111 : le parent de SOAPBody doit \u00EAtre un \u00E9l\u00E9ment SOAPEnvelope
+
+SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112 : impossible de transmettre la valeur NULL \u00E0 setParentElement
+SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113 : impossible de s\u00E9parer le texte d'un noeud de commentaire
+SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114 : impossible de remplacer l'ensemble du texte \u00E0 partir d'un noeud de commentaire
+
+SAAJ0120.impl.header.already.exists=SAAJ0120 : impossible d'ajouter un en-t\u00EAte lorsqu'il en existe d\u00E9j\u00E0 un
+SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121 : le premier enfant de Envelope doit \u00EAtre un \u00E9l\u00E9ment Header ou Body
+SAAJ0122.impl.body.already.exists=SAAJ0122 : impossible d'ajouter un corps lorsqu'il en existe d\u00E9j\u00E0 un
+SAAJ0123.impl.no.reserved.xmlns=SAAJ0123 : impossible de d\u00E9clarer le pr\u00E9fixe xmlns r\u00E9serv\u00E9
+SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124 : le nom qualifi\u00E9 ne peut pas \u00EAtre xmlns
+#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null
+SAAJ0126.impl.cannot.locate.ns=SAAJ0126 : impossible de localiser l''espace de noms pour le pr\u00E9fixe {0}
+SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127 : impossible de transmettre la valeur NULL \u00E0 setParentElement
+
+SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130 : le parent d'un \u00E9l\u00E9ment SOAPHeaderElement doit \u00EAtre un \u00E9l\u00E9ment SOAPHeader
+SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131 : les \u00E9l\u00E9ments Header doivent \u00EAtre des espaces de noms qualifi\u00E9s
+SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132 : valeur non valide pour l'acteur ou le r\u00F4le
+SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133 : le parent de SOAPHeader doit \u00EAtre un \u00E9l\u00E9ment SOAPEnvelope
+SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134 : les \u00E9l\u00E9ments Header doivent \u00EAtre des espaces de noms qualifi\u00E9s
+
+SAAJ0140.impl.no.ns.URI=SAAJ0140 : NamespaceURI vide/NULL indiqu\u00E9 pour faultCode {0}
+SAAJ0141.impl.detail.exists=SAAJ0141 : l'\u00E9l\u00E9ment Detail existe d\u00E9j\u00E0
+SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142 : \u00E9l\u00E9ments Fault/Reason/Text non pris en charge par cette version SOAP, essayez SOAP 1.2 ou sup\u00E9rieur
+SAAJ0143.impl.node.not.supported=SAAJ0142 : \u00E9l\u00E9ments Fault/Node non pris en charge par cette version SOAP, essayez SOAP 1.2 ou sup\u00E9rieur
+SAAJ0144.impl.role.not.supported=SAAJ0142 : \u00E9l\u00E9ments Fault/Role non pris en charge par cette version SOAP, essayez SOAP 1.2 ou sup\u00E9rieur
+SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145 : impossible de transmettre la valeur NULL \u00E0 setParentElement
+SAAJ0146.impl.invalid.name.change.requested=SAAJ0146 : impossible de modifier le nom de l''\u00E9l\u00E9ment {0} en {1}
+SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147 : impossible de modifier l''URI pour le pr\u00E9fixe {0} de {1} en {2} dans setElementQName
+SAAJ0148.impl.invalid.prefix.for.uri=URI d''espace de noms non vide : {0} pour un pr\u00E9fixe vide dans SetElementQName
+SAAJ0149.impl.null.prefix=SAAJ0149 : le pr\u00E9fixe ne peut pas \u00EAtre "NULL" lors de la cr\u00E9ation d'un QName
+
+SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250 : impossible d'extraire le document du corps
+SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251 : impossible d'extraire le document du corps
+
+# Debug messages
+SAAJ0150.impl.added.attr=SAAJ0150 : attribut {0} ajout\u00E9
+SAAJ0151.impl.no.children=SAAJ0151 : noeud contenant la valeur introuvable : il n'existe aucun enfant
+SAAJ0152.impl.first.child.not.text.node=SAAJ0151 : noeud contenant la valeur introuvable : le premier enfant n'est pas un noeud Text
+SAAJ0153.impl.multiple.children.same.value=SAAJ0151 : noeud contenant la valeur introuvable : il existe plusieurs noeuds enfant
+SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154 : un \u00E9l\u00E9ment SOAPFault peut \u00EAtre ajout\u00E9 uniquement en tant qu'enfant de SOAPBody
+SAAJ0155.impl.adding.detail.nonfault=SAAJ0155 : un \u00E9l\u00E9ment Detail peut \u00EAtre ajout\u00E9 uniquement en tant qu'enfant d'un \u00E9l\u00E9ment SOAPFault
+SAAJ0156.impl.adding.fault.error=SAAJ0156 : impossible d'ajouter SOAPFault ; un \u00E9l\u00E9ment SOAPFault doit \u00EAtre le seul enfant d'un \u00E9l\u00E9ment SOAPBody
+SAAJ0157.impl.detail.exists.error=SAAJ0157 : impossible d'ajouter l'\u00E9l\u00E9ment Detail, il existe d\u00E9j\u00E0
+SAAJ0158.impl.version.mismatch.fault=SAAJ0158 : non-concordance de versions SOAP d\u00E9tect\u00E9e lors de la tentative d'ajout de SOAPFault \u00E0 SOAPBody
+SAAJ0159.impl.version.mismatch.detail=SAAJ0158 : non-concordance de versions SOAP d\u00E9tect\u00E9e lors de la tentative d'ajout de Detail \u00E0 SOAPFault
+
+# Info messages
+SAAJ0190.impl.set.xml.declaration=SAAJ0190 : omettre la d\u00E9claration XML d\u00E9finie sur {0}
+SAAJ0191.impl.set.encoding=SAAJ0191 : l''encodage est d\u00E9fini sur {0}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_it.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,86 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for impl
+# Error messages
+SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: L'elemento padre di un SOAPBodyElement deve essere un SOAPBody
+SAAJ0102.impl.cannot.locate.ns=SAAJ0102: Impossibile trovare lo spazio di nomi per il prefisso {0}
+SAAJ0103.impl.cannot.add.fragements=SAAJ0103: Impossibile aggiungere frammenti che contengono elementi presenti nello spazio di nomi SOAP
+SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: Lo stile di codifica {0} deve essere un URI valido
+SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: Impossibile passare NULL a setParentElement
+SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: Impossibile usare setValue su un elemento che non ha solo un elemento figlio di tipo Text
+
+SAAJ0110.impl.fault.already.exists=SAAJ0110: Errore: Fault esiste gi\u00E0
+SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: L'elemento padre di SOAPBody deve essere un SOAPEnvelope
+
+SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: Impossibile passare NULL a setParentElement
+SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: Impossibile dividere il testo di un Comment Node
+SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: Impossibile sostituire tutto il testo di un Comment Node
+
+SAAJ0120.impl.header.already.exists=SAAJ0120: Impossibile aggiungere un'intestazione quando ne \u00E8 gi\u00E0 presente una
+SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: Il primo elemento figlio di Envelope deve essere Header o Body
+SAAJ0122.impl.body.already.exists=SAAJ0122: Impossibile aggiungere un corpo quando ne \u00E8 gi\u00E0 presente uno
+SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: Impossibile dichiarare riservato il prefisso xmlns
+SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: Il nome qualificato non pu\u00F2 essere xmlns
+#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null
+SAAJ0126.impl.cannot.locate.ns=SAAJ0126: Impossibile trovare lo spazio di nomi per il prefisso {0}
+SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: Impossibile passare NULL a setParentElement
+
+SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: L'elemento padre di un SOAPHeaderElement deve essere un SSOAPHeader
+SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements deve essere qualificato per lo spazio di nomi
+SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: Valore non valido per l'attore o il ruolo
+SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: L'elemento padre di SOAPHeader deve essere un SOAPEnvelope
+SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements deve essere qualificato per lo spazio di nomi
+
+SAAJ0140.impl.no.ns.URI=SAAJ0140: URI dello spazio di nomi vuoto/nullo specificato per faultCode {0}
+SAAJ0141.impl.detail.exists=SAAJ0141: Detail esiste gi\u00E0
+SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: Fault/Reason/Text non supportato da questa versione SOAP. Tentare la versione SOAP 1.2 o successiva
+SAAJ0143.impl.node.not.supported=SAAJ0143: Fault/Node non supportato da questa versione SOAP. Tentare la versione SOAP 1.2 o successiva
+SAAJ0144.impl.role.not.supported=SAAJ0144: Fault/Role non supportato da questa versione SOAP. Tentare la versione SOAP 1.2 o successiva
+SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: Impossibile passare NULL a setParentElement
+SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: Impossibile modificare il nome dell''elemento {0} in {1}
+SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: Impossibile modificare l''URI per il prefisso {0} da {1} a {2} in setElementQName
+SAAJ0148.impl.invalid.prefix.for.uri=URI dello spazio di nomi non vuoto: {0} per un prefisso vuoto in SetElementQName
+SAAJ0149.impl.null.prefix=SAAJ0149: Il prefisso non pu\u00F2 essere "null" durante la creazione di un QName
+
+SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: Impossibile estrarre Document dal corpo
+SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: Impossibile estrarre Document dal corpo
+
+# Debug messages
+SAAJ0150.impl.added.attr=SAAJ0150: Attributo {0} aggiunto
+SAAJ0151.impl.no.children=SAAJ0151: Impossibile trovare il nodo contenente il valore: non sono presenti elementi figlio
+SAAJ0152.impl.first.child.not.text.node=SAAJ0152: Impossibile trovare il nodo contenente il valore: il primo elemento figlio non \u00E8 un nodo testo
+SAAJ0153.impl.multiple.children.same.value=SAAJ0153: Impossibile trovare il nodo contenente il valore: sono presenti pi\u00F9 nodi figlio
+SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: Un elemento SOAPFault pu\u00F2 essere aggiunto solo come elemento figlio di SOAPBody
+SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: Un elemento Detail pu\u00F2 essere aggiunto solo come elemento figlio di un SOAPFault
+SAAJ0156.impl.adding.fault.error=SAAJ0156: Impossibile aggiungere SOAPFault. SOAPFault deve essere l'unico elemento figlio di SOAPBody
+SAAJ0157.impl.detail.exists.error=SAAJ0157: Impossibile aggiungere Detail. Detail esiste gi\u00E0.
+SAAJ0158.impl.version.mismatch.fault=SAAJ0158: Mancata corrispondenza della versione SOAP rilevata durante il tentativo di aggiungere SOAPFault a SOAPBody
+SAAJ0159.impl.version.mismatch.detail=SAAJ0159: Mancata corrispondenza della versione SOAP rilevata durante il tentativo di aggiungere il dettaglio a SOAPFault
+
+# Info messages
+SAAJ0190.impl.set.xml.declaration=SAAJ0190: Omettere la dichiarazione XML impostata su {0}
+SAAJ0191.impl.set.encoding=SAAJ0191: La codifica \u00E8 impostata su {0}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_ja.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,86 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for impl
+# Error messages
+SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: SOAPBodyElement\u306E\u89AA\u306FSOAPBody\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+SAAJ0102.impl.cannot.locate.ns=SAAJ0102: \u63A5\u982D\u8F9E{0}\u306E\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
+SAAJ0103.impl.cannot.add.fragements=SAAJ0103: SOAP\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u306B\u5B58\u5728\u3059\u308B\u8981\u7D20\u3092\u542B\u3080\u30D5\u30E9\u30B0\u30E1\u30F3\u30C8\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093
+SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: \u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u30FB\u30B9\u30BF\u30A4\u30EB{0}\u306F\u6709\u52B9\u306AURI\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: NULL\u3092setParentElement\u306B\u6E21\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: \u30BF\u30A4\u30D7\u304C\u30C6\u30AD\u30B9\u30C8\u306E\u552F\u4E00\u306E\u5B50\u304C\u306A\u3044\u8981\u7D20\u306B\u5024\u3092\u8A2D\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+
+SAAJ0110.impl.fault.already.exists=SAAJ0110: \u30A8\u30E9\u30FC: \u30D5\u30A9\u30EB\u30C8\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059
+SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: SOAPBody\u306E\u89AA\u306FSOAPEnvelope\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+
+SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: NULL\u3092setParentElement\u306B\u6E21\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: \u30B3\u30E1\u30F3\u30C8\u30FB\u30CE\u30FC\u30C9\u304B\u3089\u30C6\u30AD\u30B9\u30C8\u3092\u5206\u5272\u3067\u304D\u307E\u305B\u3093
+SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: \u30B3\u30E1\u30F3\u30C8\u30FB\u30CE\u30FC\u30C9\u304B\u3089\u30C6\u30AD\u30B9\u30C8\u5168\u4F53\u3092\u7F6E\u63DB\u3067\u304D\u307E\u305B\u3093
+
+SAAJ0120.impl.header.already.exists=SAAJ0120: \u30D8\u30C3\u30C0\u30FC\u304C\u3059\u3067\u306B\u5B58\u5728\u3059\u308B\u5834\u5408\u306F\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093
+SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: Envelope\u306E\u6700\u521D\u306E\u5B50\u306FHeader\u307E\u305F\u306FBody\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+SAAJ0122.impl.body.already.exists=SAAJ0122: \u672C\u6587\u304C\u3059\u3067\u306B\u5B58\u5728\u3059\u308B\u5834\u5408\u306F\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093
+SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: \u4E88\u7D04\u6E08\u306Exmlns\u63A5\u982D\u8F9E\u3092\u5BA3\u8A00\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: \u4FEE\u98FE\u540D\u3092xmlns\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null
+SAAJ0126.impl.cannot.locate.ns=SAAJ0126: \u63A5\u982D\u8F9E{0}\u306E\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
+SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: NULL\u3092setParentElement\u306B\u6E21\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+
+SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: SOAPHeaderElement\u306E\u89AA\u306FSOAPHeader\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements\u306F\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u3067\u4FEE\u98FE\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: \u30A2\u30AF\u30BF\u30FC\u307E\u305F\u306F\u30ED\u30FC\u30EB\u306E\u5024\u304C\u7121\u52B9\u3067\u3059
+SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: SOAPHeader\u306E\u89AA\u306FSOAPEnvelope\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements\u306F\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u3067\u4FEE\u98FE\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+
+SAAJ0140.impl.no.ns.URI=SAAJ0140: faultCode {0}\u306B\u6307\u5B9A\u3055\u308C\u305FNamespaceURI\u304C\u7A7A/Null\u3067\u3059
+SAAJ0141.impl.detail.exists=SAAJ0141: Detail\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059
+SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: \u3053\u306ESOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u306F\u30D5\u30A9\u30EB\u30C8/\u7406\u7531/\u30C6\u30AD\u30B9\u30C8\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002SOAP 1.2\u4EE5\u4E0A\u3092\u8A66\u3057\u3066\u304F\u3060\u3055\u3044
+SAAJ0143.impl.node.not.supported=SAAJ0143: \u3053\u306ESOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u306F\u30D5\u30A9\u30EB\u30C8/\u30CE\u30FC\u30C9\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002SOAP 1.2\u4EE5\u4E0A\u3092\u8A66\u3057\u3066\u304F\u3060\u3055\u3044
+SAAJ0144.impl.role.not.supported=SAAJ0144: \u3053\u306ESOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u306F\u30D5\u30A9\u30EB\u30C8/\u30ED\u30FC\u30EB\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002SOAP 1.2\u4EE5\u4E0A\u3092\u8A66\u3057\u3066\u304F\u3060\u3055\u3044
+SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: NULL\u3092setParentElement\u306B\u6E21\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: \u8981\u7D20{0}\u306E\u540D\u524D\u3092{1}\u306B\u5909\u66F4\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: setElementQName\u306E\u63A5\u982D\u8F9E{0}\u306EURI\u3092{1}\u304B\u3089{2}\u306B\u5909\u66F4\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+SAAJ0148.impl.invalid.prefix.for.uri=SetElementQName\u306E\u7A7A\u306E\u63A5\u982D\u8F9E\u306B\u7A7A\u767D\u4EE5\u5916\u306E\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9URI: {0}\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
+SAAJ0149.impl.null.prefix=SAAJ0149: QName\u3092\u4F5C\u6210\u3059\u308B\u5834\u5408\u3001\u63A5\u982D\u8F9E\u3092\u300Cnull\u300D\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+
+SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: \u672C\u6587\u304B\u3089\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u62BD\u51FA\u3067\u304D\u307E\u305B\u3093
+SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: \u672C\u6587\u304B\u3089\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u62BD\u51FA\u3067\u304D\u307E\u305B\u3093
+
+# Debug messages
+SAAJ0150.impl.added.attr=SAAJ0150: \u5C5E\u6027{0}\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3057\u305F
+SAAJ0151.impl.no.children=SAAJ0151: \u5024\u3092\u542B\u3080\u30CE\u30FC\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: \u5B50\u304C\u3042\u308A\u307E\u305B\u3093
+SAAJ0152.impl.first.child.not.text.node=SAAJ0152: \u5024\u3092\u542B\u3080\u30CE\u30FC\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: \u6700\u521D\u306E\u5B50\u304C\u30C6\u30AD\u30B9\u30C8\u30FB\u30CE\u30FC\u30C9\u3067\u306F\u3042\u308A\u307E\u305B\u3093
+SAAJ0153.impl.multiple.children.same.value=SAAJ0153: \u5024\u3092\u542B\u3080\u30CE\u30FC\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: \u8907\u6570\u306E\u5B50\u30CE\u30FC\u30C9\u304C\u3042\u308A\u307E\u3059
+SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: SOAPFault\u8981\u7D20\u306FSOAPBody\u306E\u5B50\u3068\u3057\u3066\u306E\u307F\u8FFD\u52A0\u3067\u304D\u307E\u3059
+SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: Detail\u8981\u7D20\u306FSOAPFault\u306E\u5B50\u3068\u3057\u3066\u306E\u307F\u8FFD\u52A0\u3067\u304D\u307E\u3059
+SAAJ0156.impl.adding.fault.error=SAAJ0156: SOAPFault\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002SOAPFault\u306FSOAPBody\u306E\u552F\u4E00\u306E\u5B50\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+SAAJ0157.impl.detail.exists.error=SAAJ0157: Detail\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002Detail\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059
+SAAJ0158.impl.version.mismatch.fault=SAAJ0158: SOAPFault\u3092SOAPBody\u306B\u8FFD\u52A0\u3057\u3088\u3046\u3068\u3057\u305F\u3068\u304D\u306BSOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u4E0D\u4E00\u81F4\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F
+SAAJ0159.impl.version.mismatch.detail=SAAJ0159: Detail\u3092SOAPFault\u306B\u8FFD\u52A0\u3057\u3088\u3046\u3068\u3057\u305F\u3068\u304D\u306BSOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u4E0D\u4E00\u81F4\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F
+
+# Info messages
+SAAJ0190.impl.set.xml.declaration=SAAJ0190: Omit XML\u5BA3\u8A00\u304C{0}\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
+SAAJ0191.impl.set.encoding=SAAJ0191: \u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u304C{0}\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_ko.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,86 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for impl
+# Error messages
+SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: SOAPBodyElement\uC758 \uC0C1\uC704\uB294 SOAPBody\uC5EC\uC57C \uD569\uB2C8\uB2E4.
+SAAJ0102.impl.cannot.locate.ns=SAAJ0102: {0} \uC811\uB450\uC5B4\uC5D0 \uB300\uD55C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0103.impl.cannot.add.fragements=SAAJ0103: SOAP \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5D0 \uC788\uB294 \uC694\uC18C\uAC00 \uD3EC\uD568\uB41C \uB2E8\uD3B8\uC744 \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: \uC778\uCF54\uB529 \uC2A4\uD0C0\uC77C {0}\uC740(\uB294) \uC801\uD569\uD55C URI\uC5EC\uC57C \uD569\uB2C8\uB2E4.
+SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: setParentElement\uC5D0 NULL\uC744 \uC804\uB2EC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: Text \uC720\uD615\uC758 \uC720\uC77C\uD55C \uD558\uC704\uAC00 \uD3EC\uD568\uB418\uC9C0 \uC54A\uC740 \uC694\uC18C\uC5D0 \uB300\uD574 \uAC12\uC744 \uC124\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+
+SAAJ0110.impl.fault.already.exists=SAAJ0110: \uC624\uB958: Fault\uAC00 \uC874\uC7AC\uD569\uB2C8\uB2E4.
+SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: SOAPBody\uC758 \uC0C1\uC704\uB294 SOAPEnvelope\uC5EC\uC57C \uD569\uB2C8\uB2E4.
+
+SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: setParentElement\uC5D0 NULL\uC744 \uC804\uB2EC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: \uC8FC\uC11D \uB178\uB4DC\uC5D0\uC11C \uD14D\uC2A4\uD2B8\uB97C \uBD84\uD560\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: \uC8FC\uC11D \uB178\uB4DC\uC758 \uC804\uCCB4 \uD14D\uC2A4\uD2B8\uB97C \uBC14\uAFC0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+
+SAAJ0120.impl.header.already.exists=SAAJ0120: Header\uAC00 \uC874\uC7AC\uD558\uB294 \uACBD\uC6B0 Header\uB97C \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: Envelope\uC758 \uCCAB\uBC88\uC9F8 \uD558\uC704\uB294 Header \uB610\uB294 Body\uC5EC\uC57C \uD569\uB2C8\uB2E4.
+SAAJ0122.impl.body.already.exists=SAAJ0122: Body\uAC00 \uC874\uC7AC\uD558\uB294 \uACBD\uC6B0 Body\uB97C \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: \uC608\uC57D\uB41C xmlns \uC811\uB450\uC5B4\uB97C \uC120\uC5B8\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: \uC815\uADDC\uD654\uB41C \uC774\uB984\uC740 xmlns\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null
+SAAJ0126.impl.cannot.locate.ns=SAAJ0126: {0} \uC811\uB450\uC5B4\uC5D0 \uB300\uD55C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: setParentElement\uC5D0 NULL\uC744 \uC804\uB2EC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+
+SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: SOAPHeaderElement\uC758 \uC0C1\uC704\uB294 SOAPHeader\uC5EC\uC57C \uD569\uB2C8\uB2E4.
+SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements\uB294 \uC815\uADDC\uD654\uB41C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5EC\uC57C \uD569\uB2C8\uB2E4.
+SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: \uC791\uC5C5\uC790 \uB610\uB294 \uB864\uC5D0 \uB300\uD55C \uAC12\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
+SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: SOAPHeader\uC758 \uC0C1\uC704\uB294 SOAPEnvelope\uC5EC\uC57C \uD569\uB2C8\uB2E4.
+SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements\uB294 \uC815\uADDC\uD654\uB41C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5EC\uC57C \uD569\uB2C8\uB2E4.
+
+SAAJ0140.impl.no.ns.URI=SAAJ0140: faultCode {0}\uC5D0 \uB300\uD574 \uBE48/\uB110 NamespaceURI\uAC00 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+SAAJ0141.impl.detail.exists=SAAJ0141: Detail\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4.
+SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: \uC774 SOAP \uBC84\uC804\uC5D0\uC11C\uB294 Fault/Reason/Text\uAC00 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. SOAP 1.2 \uB610\uB294 \uC774\uD6C4 \uBC84\uC804\uC744 \uC0AC\uC6A9\uD574 \uBCF4\uC2ED\uC2DC\uC624.
+SAAJ0143.impl.node.not.supported=SAAJ0143: \uC774 SOAP \uBC84\uC804\uC5D0\uC11C\uB294 Fault/Node\uAC00 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. SOAP 1.2 \uB610\uB294 \uC774\uD6C4 \uBC84\uC804\uC744 \uC0AC\uC6A9\uD574 \uBCF4\uC2ED\uC2DC\uC624.
+SAAJ0144.impl.role.not.supported=SAAJ0144: \uC774 SOAP \uBC84\uC804\uC5D0\uC11C\uB294 Fault/Role\uC774 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. SOAP 1.2 \uB610\uB294 \uC774\uD6C4 \uBC84\uC804\uC744 \uC0AC\uC6A9\uD574 \uBCF4\uC2ED\uC2DC\uC624.
+SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: setParentElement\uC5D0 NULL\uC744 \uC804\uB2EC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: {0} \uC694\uC18C\uC758 \uC774\uB984\uC744 {1}(\uC73C)\uB85C \uBCC0\uACBD\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: setElementQName\uC5D0\uC11C {0} \uC811\uB450\uC5B4\uC5D0 \uB300\uD55C URI\uB97C {1}\uC5D0\uC11C {2}(\uC73C)\uB85C \uBCC0\uACBD\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0148.impl.invalid.prefix.for.uri=SetElementQName\uC5D0 \uBE48 \uC811\uB450\uC5B4\uC5D0 \uB300\uD574 \uBE44\uC5B4 \uC788\uC9C0 \uC54A\uC740 \uB124\uC784\uC2A4\uD398\uC774\uC2A4 URI {0}\uC774(\uAC00) \uC788\uC2B5\uB2C8\uB2E4.
+SAAJ0149.impl.null.prefix=SAAJ0149: QName\uC744 \uC0DD\uC131\uD558\uB294 \uACBD\uC6B0 \uC811\uB450\uC5B4\uB294 "null"\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+
+SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: \uBCF8\uBB38\uC5D0\uC11C \uBB38\uC11C\uB97C \uCD94\uCD9C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: \uBCF8\uBB38\uC5D0\uC11C \uBB38\uC11C\uB97C \uCD94\uCD9C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+
+# Debug messages
+SAAJ0150.impl.added.attr=SAAJ0150: {0} \uC18D\uC131\uC744 \uCD94\uAC00\uD588\uC2B5\uB2C8\uB2E4.
+SAAJ0151.impl.no.children=SAAJ0151: \uAC12\uC774 \uD3EC\uD568\uB41C \uB178\uB4DC\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C: \uD558\uC704 \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0152.impl.first.child.not.text.node=SAAJ0152: \uAC12\uC774 \uD3EC\uD568\uB41C \uB178\uB4DC\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C: \uCCAB\uBC88\uC9F8 \uD558\uC704\uAC00 \uD14D\uC2A4\uD2B8 \uB178\uB4DC\uAC00 \uC544\uB2D9\uB2C8\uB2E4.
+SAAJ0153.impl.multiple.children.same.value=SAAJ0153: \uAC12\uC774 \uD3EC\uD568\uB41C \uB178\uB4DC\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C: \uD558\uC704 \uB178\uB4DC\uAC00 \uB450 \uAC1C \uC774\uC0C1 \uC788\uC2B5\uB2C8\uB2E4.
+SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: SOAPFault \uC694\uC18C\uB294 SOAPBody\uC758 \uD558\uC704\uB85C\uB9CC \uCD94\uAC00\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
+SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: Detail \uC694\uC18C\uB294 SOAPFault\uC758 \uD558\uC704\uB85C\uB9CC \uCD94\uAC00\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
+SAAJ0156.impl.adding.fault.error=SAAJ0156: SOAPFault\uB97C \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. SOAPFault\uB294 SOAPBody\uC758 \uC720\uC77C\uD55C \uD558\uC704\uC5EC\uC57C \uD569\uB2C8\uB2E4.
+SAAJ0157.impl.detail.exists.error=SAAJ0157: Detail\uC744 \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. Detail\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4.
+SAAJ0158.impl.version.mismatch.fault=SAAJ0158: SOAPBody\uC5D0 SOAPFault\uB97C \uCD94\uAC00\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 SOAP \uBC84\uC804 \uBD88\uC77C\uCE58\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
+SAAJ0159.impl.version.mismatch.detail=SAAJ0159: SOAPFault\uC5D0 Detail\uC744 \uCD94\uAC00\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 SOAP \uBC84\uC804 \uBD88\uC77C\uCE58\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
+
+# Info messages
+SAAJ0190.impl.set.xml.declaration=SAAJ0190: XML \uC120\uC5B8 \uC0DD\uB7B5\uC774 {0}(\uC73C)\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+SAAJ0191.impl.set.encoding=SAAJ0191: \uC778\uCF54\uB529\uC774 {0}(\uC73C)\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_pt_BR.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,86 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for impl
+# Error messages
+SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: o pai de um SOAPBodyElement deve ser um SOAPBody
+SAAJ0102.impl.cannot.locate.ns=SAAJ0102: n\u00E3o \u00E9 poss\u00EDvel localizar o namespace do prefixo {0}
+SAAJ0103.impl.cannot.add.fragements=SAAJ0103: n\u00E3o \u00E9 poss\u00EDvel adicionar fragmentos que cont\u00EAm elementos que est\u00E3o no namespace de SOAP
+SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: estilo {0} de codifica\u00E7\u00E3o deve ser um URI v\u00E1lido
+SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: n\u00E3o \u00E9 poss\u00EDvel informar NULL como setParentElement
+SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: n\u00E3o \u00E9 poss\u00EDvel setValue em um Elemento que n\u00E3o tem um s\u00F3 filho do tipo Texto
+
+SAAJ0110.impl.fault.already.exists=SAAJ0110: erro: j\u00E1 existe falha
+SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: o pai de SOAPBody deve ser um SOAPEnvelope
+
+SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: n\u00E3o \u00E9 poss\u00EDvel informar NULL como setParentElement
+SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: n\u00E3o \u00E9 poss\u00EDvel dividir o texto de um N\u00F3 do Coment\u00E1rio
+SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: n\u00E3o \u00E9 poss\u00EDvel substituir todo o texto de um N\u00F3 de Coment\u00E1rio
+
+SAAJ0120.impl.header.already.exists=SAAJ0120: n\u00E3o \u00E9 poss\u00EDvel adicionar um cabe\u00E7alho quando h\u00E1 houver um
+SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: o primeiro filho do Envelope deve ser um Cabe\u00E7alho ou um Corpo
+SAAJ0122.impl.body.already.exists=SAAJ0122: n\u00E3o \u00E9 poss\u00EDvel adicionar um corpo quando j\u00E1 houver um
+SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: n\u00E3o \u00E9 poss\u00EDvel declarar o prefixo xmlns reservado
+SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: o nome qualificado n\u00E3o pode ser xmlns
+#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null
+SAAJ0126.impl.cannot.locate.ns=SAAJ0126: n\u00E3o \u00E9 poss\u00EDvel localizar namespace para o prefixo {0}
+SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: n\u00E3o \u00E9 poss\u00EDvel informar NULL como setParentElement
+
+SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: o pai de um SOAPHeaderElement deve ser um SOAPHeader
+SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements deve ser um namespace qualificado
+SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: valor inv\u00E1lido para ator ou atribui\u00E7\u00E3o
+SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: o pai de um SOAPHeader deve ser um SOAPEnvelope
+SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements deve ser um namespace qualificado
+
+SAAJ0140.impl.no.ns.URI=SAAJ0140: NamespaceURI Vazio/Nulo especificado para faultCode {0}
+SAAJ0141.impl.detail.exists=SAAJ0141: o detalhe j\u00E1 existe
+SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: falha/motivo/texto n\u00E3o suportado por esta vers\u00E3o de SOAP, tente SOAP 1.2 ou posterior
+SAAJ0143.impl.node.not.supported=SAAJ0143: falha/n\u00F3 n\u00E3o suportados por esta vers\u00E3o de SOAP, tente SOAP 1.2 ou posterior
+SAAJ0144.impl.role.not.supported=SAAJ0144: falha/atribui\u00E7\u00E3o n\u00E3o suportada por esta vers\u00E3o de SOAP, tente SOAP 1.2 ou posterior
+SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: n\u00E3o \u00E9 poss\u00EDvel informar NULL como setParentElement
+SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: n\u00E3o \u00E9 poss\u00EDvel alterar o nome do elemento {0} para {1}
+SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: n\u00E3o \u00E9 poss\u00EDvel alterar o URI do prefixo {0} de {1} para {2} no setElementQName
+SAAJ0148.impl.invalid.prefix.for.uri=URI de namespace n\u00E3o vazio: {0} para um prefixo vazio no SetElementQName
+SAAJ0149.impl.null.prefix=SAAJ0149: o prefixo n\u00E3o pode ser "nulo" ao criar um QName
+
+SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: n\u00E3o \u00E9 poss\u00EDvel extrair o Documento do corpo
+SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: n\u00E3o \u00E9 poss\u00EDvel extrair o documento do corpo
+
+# Debug messages
+SAAJ0150.impl.added.attr=SAAJ0150: atributo {0} adicionado
+SAAJ0151.impl.no.children=SAAJ0151: n\u00E3o \u00E9 poss\u00EDvel localizar o n\u00F3 que cont\u00E9m o valor: n\u00E3o h\u00E1 filhos
+SAAJ0152.impl.first.child.not.text.node=SAAJ0152: n\u00E3o \u00E9 poss\u00EDvel localizar o n\u00F3 que cont\u00E9m o valor: o primeiro filho n\u00E3o \u00E9 um n\u00F3 de Texto
+SAAJ0153.impl.multiple.children.same.value=SAAJ0153: n\u00E3o \u00E9 poss\u00EDvel localizar o n\u00F3 que cont\u00E9m o valor: h\u00E1 mais de um n\u00F3 filho
+SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: um elemento de SOAPFault s\u00F3 pode ser adicionado como filho de SOAPBody
+SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: um elemento de Detalhe s\u00F3 pode ser adicionado como um filho de um SOAPFault
+SAAJ0156.impl.adding.fault.error=SAAJ0156: n\u00E3o \u00E9 poss\u00EDvel adicionar SOAPFault, um SOAPFault deve ser filho s\u00F3 de um SOAPBody
+SAAJ0157.impl.detail.exists.error=SAAJ0157: n\u00E3o \u00E9 poss\u00EDvel adicionar Detalhe, o Detalhe j\u00E1 existe
+SAAJ0158.impl.version.mismatch.fault=SAAJ0158: incompatibilidade da vers\u00E3o SOAP encontrada ao tentar adicionar SOAPFault ao SOAPBody
+SAAJ0159.impl.version.mismatch.detail=SAAJ0159: incompatibilidade da vers\u00E3o SOAP encontrada ao tentar adicionar Detalhes \u00E0 SOAPFault
+
+# Info messages
+SAAJ0190.impl.set.xml.declaration=SAAJ0190: omitir conjunto de declara\u00E7\u00F5es de XML para {0}
+SAAJ0191.impl.set.encoding=SAAJ0191: codifica\u00E7\u00E3o definida como {0}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_zh_CN.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,86 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for impl
+# Error messages
+SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: SOAPBodyElement \u7684\u7236\u7EA7\u5FC5\u987B\u662F SOAPBody
+SAAJ0102.impl.cannot.locate.ns=SAAJ0102: \u627E\u4E0D\u5230\u524D\u7F00{0}\u7684\u540D\u79F0\u7A7A\u95F4
+SAAJ0103.impl.cannot.add.fragements=SAAJ0103: \u65E0\u6CD5\u6DFB\u52A0\u5305\u542B\u4F4D\u4E8E SOAP \u540D\u79F0\u7A7A\u95F4\u4E2D\u7684\u5143\u7D20\u7684\u7247\u6BB5
+SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: \u7F16\u7801\u6837\u5F0F{0}\u5E94\u8BE5\u662F\u6709\u6548\u7684 URI
+SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: \u4E0D\u80FD\u5C06\u7A7A\u503C\u4F20\u9012\u7ED9 setParentElement
+SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: \u5BF9\u4E8E\u5E76\u975E\u53EA\u5177\u6709\u6587\u672C\u7C7B\u578B\u5B50\u7EA7\u7684\u5143\u7D20, \u4E0D\u80FD\u6267\u884C setValue
+
+SAAJ0110.impl.fault.already.exists=SAAJ0110: \u9519\u8BEF: \u6545\u969C\u5DF2\u5B58\u5728
+SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: SOAPBody \u7684\u7236\u7EA7\u5FC5\u987B\u662F SOAPEnvelope
+
+SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: \u4E0D\u80FD\u5C06\u7A7A\u503C\u4F20\u9012\u7ED9 setParentElement
+SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: \u65E0\u6CD5\u62C6\u5206\u6765\u81EA\u6CE8\u91CA\u8282\u70B9\u7684\u6587\u672C
+SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: \u65E0\u6CD5\u66FF\u6362\u6765\u81EA\u6CE8\u91CA\u8282\u70B9\u7684\u5168\u90E8\u6587\u672C
+
+SAAJ0120.impl.header.already.exists=SAAJ0120: \u5F53\u6807\u5934\u5DF2\u5B58\u5728\u65F6, \u65E0\u6CD5\u6DFB\u52A0\u6807\u5934
+SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: \u4FE1\u5C01\u7684\u7B2C\u4E00\u4E2A\u5B50\u7EA7\u5FC5\u987B\u662F\u6807\u5934\u6216\u6B63\u6587
+SAAJ0122.impl.body.already.exists=SAAJ0122: \u5F53\u6B63\u6587\u5DF2\u5B58\u5728\u65F6, \u65E0\u6CD5\u6DFB\u52A0\u6B63\u6587
+SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: \u65E0\u6CD5\u58F0\u660E\u4FDD\u7559\u7684 xmlns \u524D\u7F00
+SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: \u9650\u5B9A\u540D\u4E0D\u80FD\u662F xmlns
+#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null
+SAAJ0126.impl.cannot.locate.ns=SAAJ0126: \u627E\u4E0D\u5230\u524D\u7F00{0}\u7684\u540D\u79F0\u7A7A\u95F4
+SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: \u4E0D\u80FD\u5C06\u7A7A\u503C\u4F20\u9012\u7ED9 setParentElement
+
+SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: SOAPHeaderElement \u7684\u7236\u7EA7\u5FC5\u987B\u662F SOAPHeader
+SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements \u5FC5\u987B\u9650\u5B9A\u540D\u79F0\u7A7A\u95F4
+SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: \u64CD\u4F5C\u8005\u6216\u89D2\u8272\u7684\u503C\u65E0\u6548
+SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: SOAPHeader \u7684\u7236\u7EA7\u5FC5\u987B\u662F SOAPEnvelope
+SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements \u5FC5\u987B\u9650\u5B9A\u540D\u79F0\u7A7A\u95F4
+
+SAAJ0140.impl.no.ns.URI=SAAJ0140: \u4E3A faultCode {0} \u6307\u5B9A\u7684 NamespaceURI \u5FC5\u987B\u4E3A\u7A7A/\u7A7A\u503C
+SAAJ0141.impl.detail.exists=SAAJ0141: \u8BE6\u7EC6\u4FE1\u606F\u5DF2\u5B58\u5728
+SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u6301\u6545\u969C/\u539F\u56E0/\u6587\u672C, \u8BF7\u5C1D\u8BD5 SOAP 1.2 \u6216\u66F4\u9AD8\u7248\u672C
+SAAJ0143.impl.node.not.supported=SAAJ0143: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u6301\u6545\u969C/\u8282\u70B9, \u8BF7\u5C1D\u8BD5 SOAP 1.2 \u6216\u66F4\u9AD8\u7248\u672C
+SAAJ0144.impl.role.not.supported=SAAJ0144: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u6301\u6545\u969C/\u89D2\u8272, \u8BF7\u5C1D\u8BD5 SOAP 1.2 \u6216\u66F4\u9AD8\u7248\u672C
+SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: \u4E0D\u80FD\u5C06\u7A7A\u503C\u4F20\u9012\u7ED9 setParentElement
+SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: \u65E0\u6CD5\u5C06\u5143\u7D20{0}\u7684\u540D\u79F0\u66F4\u6539\u4E3A{1}
+SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: \u65E0\u6CD5\u5C06 setElementQName \u4E2D\u524D\u7F00{0}\u7684 URI \u4ECE {1} \u66F4\u6539\u4E3A {2}
+SAAJ0148.impl.invalid.prefix.for.uri=\u975E\u7A7A\u540D\u79F0\u7A7A\u95F4 URI: {0} \u7528\u4E8E SetElementQName \u4E2D\u7684\u7A7A\u524D\u7F00
+SAAJ0149.impl.null.prefix=SAAJ0149: \u521B\u5EFA QName \u65F6, \u524D\u7F00\u4E0D\u80FD\u4E3A "\u7A7A\u503C"
+
+SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: \u65E0\u6CD5\u4ECE\u6B63\u6587\u4E2D\u63D0\u53D6\u6587\u6863
+SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: \u65E0\u6CD5\u4ECE\u6B63\u6587\u4E2D\u63D0\u53D6\u6587\u6863
+
+# Debug messages
+SAAJ0150.impl.added.attr=SAAJ0150: \u5DF2\u6DFB\u52A0\u5C5E\u6027{0}
+SAAJ0151.impl.no.children=SAAJ0151: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u8282\u70B9: \u6CA1\u6709\u4EFB\u4F55\u5B50\u7EA7
+SAAJ0152.impl.first.child.not.text.node=SAAJ0152: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u8282\u70B9: \u7B2C\u4E00\u4E2A\u5B50\u7EA7\u4E0D\u662F\u6587\u672C\u8282\u70B9
+SAAJ0153.impl.multiple.children.same.value=SAAJ0153: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u8282\u70B9: \u5B58\u5728\u591A\u4E2A\u5B50\u8282\u70B9
+SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: SOAPFault \u5143\u7D20\u53EA\u80FD\u4F5C\u4E3A SOAPBody \u7684\u5B50\u7EA7\u6DFB\u52A0
+SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: \u8BE6\u7EC6\u4FE1\u606F\u5143\u7D20\u53EA\u80FD\u4F5C\u4E3A SOAPFault \u7684\u5B50\u7EA7\u6DFB\u52A0
+SAAJ0156.impl.adding.fault.error=SAAJ0156: \u65E0\u6CD5\u6DFB\u52A0 SOAPFault, SOAPFault \u53EA\u5E94\u8BE5\u662F SOAPBody \u7684\u5B50\u7EA7
+SAAJ0157.impl.detail.exists.error=SAAJ0157: \u65E0\u6CD5\u6DFB\u52A0\u8BE6\u7EC6\u4FE1\u606F, \u8BE6\u7EC6\u4FE1\u606F\u5DF2\u5B58\u5728
+SAAJ0158.impl.version.mismatch.fault=SAAJ0158: \u5C1D\u8BD5\u5C06 SOAPFault \u6DFB\u52A0\u5230 SOAPBody \u65F6\u9047\u5230 SOAP \u7248\u672C\u4E0D\u5339\u914D\u60C5\u51B5
+SAAJ0159.impl.version.mismatch.detail=SAAJ0159: \u5C1D\u8BD5\u5C06\u8BE6\u7EC6\u4FE1\u606F\u6DFB\u52A0\u5230 SOAPFault \u65F6\u9047\u5230 SOAP \u7248\u672C\u4E0D\u5339\u914D\u60C5\u51B5
+
+# Info messages
+SAAJ0190.impl.set.xml.declaration=SAAJ0190: \u9057\u6F0F XML \u58F0\u660E\u8BBE\u7F6E\u4E3A{0}
+SAAJ0191.impl.set.encoding=SAAJ0191: \u7F16\u7801\u8BBE\u7F6E\u4E3A{0}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_zh_TW.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,86 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for impl
+# Error messages
+SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: SOAPBodyElement \u7684\u7236\u9805\u5FC5\u9808\u662F SOAPBody
+SAAJ0102.impl.cannot.locate.ns=SAAJ0102: \u627E\u4E0D\u5230\u524D\u7F6E\u78BC {0} \u7684\u547D\u540D\u7A7A\u9593
+SAAJ0103.impl.cannot.add.fragements=SAAJ0103: \u7121\u6CD5\u65B0\u589E\u5305\u542B SOAP \u547D\u540D\u7A7A\u9593\u4E2D\u4E4B\u5143\u7D20\u7684\u7247\u6BB5
+SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: \u7DE8\u78BC\u6A23\u5F0F {0} \u61C9\u662F\u6709\u6548\u7684 URI
+SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: \u4E0D\u80FD\u50B3\u9001 NULL \u81F3 setParentElement
+SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: \u7121\u6CD5\u5728\u4E0D\u542B\u552F\u4E00 Text \u985E\u578B\u5B50\u9805\u7684\u300C\u5143\u7D20\u300D\u4E0A\u4F7F\u7528 setValue
+
+SAAJ0110.impl.fault.already.exists=SAAJ0110: \u932F\u8AA4: Fault \u5DF2\u7D93\u5B58\u5728
+SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: SOAPBody \u7684\u7236\u9805\u5FC5\u9808\u662F SOAPEnvelope
+
+SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: \u4E0D\u80FD\u50B3\u9001 NULL \u81F3 setParentElement
+SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: \u4E0D\u80FD\u5F9E\u300CComment \u7BC0\u9EDE\u300D\u5206\u5272\u6587\u5B57
+SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: \u4E0D\u80FD\u5F9E\u300CComment \u7BC0\u9EDE\u300D\u53D6\u4EE3\u6574\u500B\u6587\u5B57
+
+SAAJ0120.impl.header.already.exists=SAAJ0120: \u6A19\u982D\u5DF2\u7D93\u5B58\u5728\u6642\u4E0D\u80FD\u65B0\u589E\u6A19\u982D
+SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: Envelope\u7684\u7B2C\u4E00\u500B\u5B50\u9805\u5FC5\u9808\u662F Header \u6216 Body
+SAAJ0122.impl.body.already.exists=SAAJ0122: \u4E3B\u9AD4\u5DF2\u7D93\u5B58\u5728\u6642\u4E0D\u80FD\u65B0\u589E\u4E3B\u9AD4
+SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: \u4E0D\u80FD\u5BA3\u544A\u4FDD\u7559\u7684 xmlns \u524D\u7F6E\u78BC
+SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: \u5B8C\u6574\u540D\u7A31\u4E0D\u80FD\u662F xmlns
+#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null
+SAAJ0126.impl.cannot.locate.ns=SAAJ0126: \u627E\u4E0D\u5230\u524D\u7F6E\u78BC {0} \u7684\u547D\u540D\u7A7A\u9593
+SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: \u4E0D\u80FD\u50B3\u9001 NULL \u81F3 setParentElement
+
+SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: SOAPHeaderElement \u7684\u7236\u9805\u5FC5\u9808\u662F SOAPHeader
+SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements \u5FC5\u9808\u662F\u9650\u5B9A\u7684\u547D\u540D\u7A7A\u9593
+SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: actor \u6216 role \u7684\u503C\u7121\u6548
+SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: SOAPHeader \u7684\u7236\u9805\u5FC5\u9808\u662F SOAPEnvelope
+SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements \u5FC5\u9808\u662F\u9650\u5B9A\u7684\u547D\u540D\u7A7A\u9593
+
+SAAJ0140.impl.no.ns.URI=SAAJ0140: \u70BA faultCode {0} \u6307\u5B9A\u7684\u662F\u7A7A\u7684/\u7A7A\u503C NamespaceURI
+SAAJ0141.impl.detail.exists=SAAJ0141: Detail \u5DF2\u7D93\u5B58\u5728
+SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u63F4 Fault/Reason/Text, \u8ACB\u5617\u8A66 SOAP 1.2 \u6216\u66F4\u65B0\u7248\u672C
+SAAJ0143.impl.node.not.supported=SAAJ0143: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u63F4 Fault/Node, \u8ACB\u5617\u8A66 SOAP 1.2 \u6216\u66F4\u65B0\u7248\u672C
+SAAJ0144.impl.role.not.supported=SAAJ0144: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u63F4 Fault/Role, \u8ACB\u5617\u8A66 SOAP 1.2 \u6216\u66F4\u65B0\u7248\u672C
+SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: \u4E0D\u80FD\u50B3\u9001 NULL \u81F3 setParentElement
+SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: \u4E0D\u80FD\u5C07\u5143\u7D20 {0} \u7684\u540D\u7A31\u8B8A\u66F4\u70BA {1}
+SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: \u4E0D\u80FD\u5C07 setElementQName \u4E2D\u524D\u7F6E\u78BC {0} \u7684 URI \u5F9E {1} \u8B8A\u66F4\u70BA {2}
+SAAJ0148.impl.invalid.prefix.for.uri=SetElementQName \u4E2D\u7684\u7A7A\u524D\u7F6E\u78BC\u6709\u975E\u7A7A\u767D\u7684\u547D\u540D\u7A7A\u9593 URI: {0}
+SAAJ0149.impl.null.prefix=SAAJ0149: \u5EFA\u7ACB QName \u6642, \u524D\u7F6E\u78BC\u4E0D\u80FD\u662F "null"
+
+SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: \u4E0D\u80FD\u5F9E\u4E3B\u9AD4\u64F7\u53D6 Document
+SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: \u7121\u6CD5\u5F9E\u4E3B\u9AD4\u64F7\u53D6 Document
+
+# Debug messages
+SAAJ0150.impl.added.attr=SAAJ0150: \u5DF2\u65B0\u589E\u5C6C\u6027 {0}
+SAAJ0151.impl.no.children=SAAJ0151: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u7BC0\u9EDE: \u6C92\u6709\u5B50\u9805
+SAAJ0152.impl.first.child.not.text.node=SAAJ0152: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u7BC0\u9EDE: \u7B2C\u4E00\u500B\u5B50\u9805\u4E0D\u662F Text \u7BC0\u9EDE
+SAAJ0153.impl.multiple.children.same.value=SAAJ0153: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u7BC0\u9EDE: \u6709\u4E00\u500B\u4EE5\u4E0A\u7684\u5B50\u7BC0\u9EDE
+SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: SOAPFault \u5143\u7D20\u53EA\u80FD\u65B0\u589E\u6210\u70BA SOAPBody \u7684\u5B50\u9805
+SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: Detail \u5143\u7D20\u53EA\u80FD\u65B0\u589E\u6210\u70BA SOAPFault \u7684\u5B50\u9805
+SAAJ0156.impl.adding.fault.error=SAAJ0156: \u7121\u6CD5\u65B0\u589E SOAPFault, SOAPFault \u61C9\u70BA SOAPBody \u7684\u552F\u4E00\u5B50\u9805
+SAAJ0157.impl.detail.exists.error=SAAJ0157: \u7121\u6CD5\u65B0\u589E Detail, Detail \u5DF2\u7D93\u5B58\u5728
+SAAJ0158.impl.version.mismatch.fault=SAAJ0158: \u5617\u8A66\u65B0\u589E SOAPFault \u81F3 SOAPBody \u6642, \u767C\u751F SOAP \u7248\u672C\u4E0D\u7B26
+SAAJ0159.impl.version.mismatch.detail=SAAJ0159: \u5617\u8A66\u65B0\u589E Detail \u81F3 SOAPFault \u6642, \u767C\u751F SOAP \u7248\u672C\u4E0D\u7B26
+
+# Info messages
+SAAJ0190.impl.set.xml.declaration=SAAJ0190: \u7701\u7565\u8A2D\u70BA {0} \u7684 XML \u5BA3\u544A
+SAAJ0191.impl.set.encoding=SAAJ0191: \u7DE8\u78BC\u5DF2\u8A2D\u70BA {0}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/SOAPCommentImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,114 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap.impl;
+
+import java.util.ResourceBundle;
+import java.util.logging.Logger;
+
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPException;
+
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Text;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
+
+public class SOAPCommentImpl
+    extends com.sun.org.apache.xerces.internal.dom.CommentImpl
+    implements javax.xml.soap.Text, org.w3c.dom.Comment {
+
+    protected static final Logger log =
+        Logger.getLogger(LogDomainConstants.SOAP_IMPL_DOMAIN,
+                         "com.sun.xml.internal.messaging.saaj.soap.impl.LocalStrings");
+    protected static ResourceBundle rb =
+        log.getResourceBundle();
+
+    public SOAPCommentImpl(SOAPDocumentImpl ownerDoc, String text) {
+        super(ownerDoc, text);
+    }
+
+    public String getValue() {
+        String nodeValue = getNodeValue();
+        return (nodeValue.equals("") ? null : nodeValue);
+    }
+
+    public void setValue(String text) {
+        setNodeValue(text);
+    }
+
+
+    public void setParentElement(SOAPElement element) throws SOAPException {
+        if (element == null) {
+            log.severe("SAAJ0112.impl.no.null.to.parent.elem");
+            throw new SOAPException("Cannot pass NULL to setParentElement");
+        }
+        ((ElementImpl) element).addNode(this);
+    }
+
+    public SOAPElement getParentElement() {
+        return (SOAPElement) getParentNode();
+    }
+
+    public void detachNode() {
+        org.w3c.dom.Node parent = getParentNode();
+        if (parent != null) {
+            parent.removeChild(this);
+        }
+    }
+
+    public void recycleNode() {
+        detachNode();
+        // TBD
+        //  - add this to the factory so subsequent
+        //    creations can reuse this object.
+    }
+
+    public boolean isComment() {
+        return true;
+    }
+
+    public Text splitText(int offset) throws DOMException {
+        log.severe("SAAJ0113.impl.cannot.split.text.from.comment");
+        throw new UnsupportedOperationException("Cannot split text from a Comment Node.");
+    }
+
+    public Text replaceWholeText(String content) throws DOMException {
+        log.severe("SAAJ0114.impl.cannot.replace.wholetext.from.comment");
+        throw new UnsupportedOperationException("Cannot replace Whole Text from a Comment Node.");
+    }
+
+    public String getWholeText() {
+        //TODO: maybe we have to implement this in future.
+        throw new UnsupportedOperationException("Not Supported");
+    }
+
+    public boolean isElementContentWhitespace() {
+        //TODO: maybe we have to implement this in future.
+        throw new UnsupportedOperationException("Not Supported");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/SOAPTextImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap.impl;
+
+import java.util.logging.Logger;
+
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPException;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
+
+public class SOAPTextImpl
+    extends com.sun.org.apache.xerces.internal.dom.TextImpl
+    implements javax.xml.soap.Text, org.w3c.dom.Text {
+
+    protected static final Logger log =
+        Logger.getLogger(LogDomainConstants.SOAP_IMPL_DOMAIN,
+                         "com.sun.xml.internal.messaging.saaj.soap.impl.LocalStrings");
+
+    public SOAPTextImpl(SOAPDocumentImpl ownerDoc, String text) {
+        super(ownerDoc, text);
+    }
+
+    public String getValue() {
+        String nodeValue = getNodeValue();
+        return (nodeValue.equals("") ? null : nodeValue);
+    }
+
+    public void setValue(String text) {
+        setNodeValue(text);
+    }
+
+    public void setParentElement(SOAPElement parent) throws SOAPException {
+        if (parent == null) {
+            log.severe("SAAJ0126.impl.cannot.locate.ns");
+            throw new SOAPException("Cannot pass NULL to setParentElement");
+        }
+        ((ElementImpl) parent).addNode(this);
+    }
+
+    public SOAPElement getParentElement() {
+        return (SOAPElement) getParentNode();
+    }
+
+
+    public void detachNode() {
+        org.w3c.dom.Node parent = getParentNode();
+        if (parent != null) {
+            parent.removeChild(this);
+        }
+    }
+
+    public void recycleNode() {
+        detachNode();
+        // TBD
+        //  - add this to the factory so subsequent
+        //    creations can reuse this object.
+    }
+
+    public boolean isComment() {
+        String txt = getNodeValue();
+        if (txt == null) {
+            return false;
+        }
+        return txt.startsWith("<!--") && txt.endsWith("-->");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/TreeException.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap.impl;
+
+public class TreeException extends RuntimeException {
+    public TreeException(String reason) {
+        super(reason);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,30 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for name pkg
+# Error messages
+SAAJ0201.name.not.created.from.null.tag=SAAJ0201: Cannot create a name from a null tag
+SAAJ0202.name.invalid.arg.format=SAAJ0202: Argument "{0}" must be of the form: prefix:localName
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_de.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,30 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for name pkg
+# Error messages
+SAAJ0201.name.not.created.from.null.tag=SAAJ0201: Name kann nicht aus einem Null-Tag erstellt werden
+SAAJ0202.name.invalid.arg.format=SAAJ0202: Argument "{0}" muss folgende Form aufweisen: prefix:localName
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_es.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,30 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for name pkg
+# Error messages
+SAAJ0201.name.not.created.from.null.tag=SAAJ0201: no se puede crear un nombre desde una etiqueta nula
+SAAJ0202.name.invalid.arg.format=SAAJ0202: El argumento "{0}" debe tener el formato: prefix:localName
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_fr.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,30 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for name pkg
+# Error messages
+SAAJ0201.name.not.created.from.null.tag=SAAJ0201 : impossible de cr\u00E9er un nom \u00E0 partir d'une balise NULL
+SAAJ0202.name.invalid.arg.format=SAAJ0202 : l''argument "{0}" doit avoir le format suivant : prefix:localName
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_it.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,30 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for name pkg
+# Error messages
+SAAJ0201.name.not.created.from.null.tag=SAAJ0201: Impossibile creare un nome da una tag nulla
+SAAJ0202.name.invalid.arg.format=SAAJ0202: L''argomento "{0}" deve avere il formato: prefix:localName
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_ja.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,30 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for name pkg
+# Error messages
+SAAJ0201.name.not.created.from.null.tag=SAAJ0201: null\u306E\u30BF\u30B0\u304B\u3089\u540D\u524D\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093
+SAAJ0202.name.invalid.arg.format=SAAJ0202: \u5F15\u6570"{0}"\u306Fprefix:localName\u306E\u5F62\u5F0F\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_ko.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,30 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for name pkg
+# Error messages
+SAAJ0201.name.not.created.from.null.tag=SAAJ0201: \uB110 \uD0DC\uADF8\uC5D0\uC11C \uC774\uB984\uC744 \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0202.name.invalid.arg.format=SAAJ0202: "{0}" \uC778\uC218\uB294 prefix:localName \uD615\uC2DD\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_pt_BR.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,30 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for name pkg
+# Error messages
+SAAJ0201.name.not.created.from.null.tag=SAAJ0201: n\u00E3o \u00E9 poss\u00EDvel criar um nome a partir de uma tag nula
+SAAJ0202.name.invalid.arg.format=SAAJ0202: o argumento "{0}" deve estar no formato: prefix.localName
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_zh_CN.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,30 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for name pkg
+# Error messages
+SAAJ0201.name.not.created.from.null.tag=SAAJ0201: \u65E0\u6CD5\u4ECE\u7A7A\u503C\u6807\u8BB0\u521B\u5EFA\u540D\u79F0
+SAAJ0202.name.invalid.arg.format=SAAJ0202: \u53C2\u6570 "{0}" \u5FC5\u987B\u91C7\u7528\u4EE5\u4E0B\u5F62\u5F0F: prefix:localName
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_zh_TW.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,30 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for name pkg
+# Error messages
+SAAJ0201.name.not.created.from.null.tag=SAAJ0201: \u7121\u6CD5\u5F9E\u7A7A\u503C\u6A19\u8A18\u5EFA\u7ACB\u540D\u7A31
+SAAJ0202.name.invalid.arg.format=SAAJ0202: \u5F15\u6578 "{0}" \u7684\u683C\u5F0F\u5FC5\u9808\u662F: prefix:localName
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/NameImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,561 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.soap.name;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.Name;
+import javax.xml.soap.SOAPConstants;
+
+//import com.sun.org.apache.xerces.internal.xni.NamespaceContext;
+import org.w3c.dom.Element;
+import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
+
+public class NameImpl implements Name {
+    public static final String XML_NAMESPACE_PREFIX = "xml";
+    public static final String XML_SCHEMA_NAMESPACE_PREFIX = "xs";
+    public static final String SOAP_ENVELOPE_PREFIX = "SOAP-ENV";
+
+    public static final String XML_NAMESPACE =
+        "http://www.w3.org/XML/1998/namespace";
+    public static final String SOAP11_NAMESPACE =
+        SOAPConstants.URI_NS_SOAP_ENVELOPE;
+    public static final String SOAP12_NAMESPACE =
+        SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE;
+    public static final String XML_SCHEMA_NAMESPACE =
+        "http://www.w3.org/2001/XMLSchema";
+
+    protected String uri = "";
+    protected String localName = "";
+    protected String prefix = "";
+    private String qualifiedName = null;
+
+    protected static final Logger log =
+        Logger.getLogger(LogDomainConstants.NAMING_DOMAIN,
+                         "com.sun.xml.internal.messaging.saaj.soap.name.LocalStrings");
+
+    /**
+     * XML Information Set REC
+     * all namespace attributes (including those named xmlns,
+     * whose [prefix] property has no value) have a namespace URI of http://www.w3.org/2000/xmlns/
+     */
+    public final static String XMLNS_URI = "http://www.w3.org/2000/xmlns/".intern();
+
+    protected NameImpl(String name) {
+        this.localName = name == null ? "" : name;
+    }
+
+    protected NameImpl(String name, String prefix, String uri) {
+        this.uri = uri == null ? "" : uri;
+        this.localName = name == null ? "" : name;
+        this.prefix = prefix == null ? "" : prefix;
+
+        if (this.prefix.equals("xmlns") && this.uri.equals("")) {
+            this.uri = XMLNS_URI;
+        }
+        if (this.uri.equals(XMLNS_URI) && this.prefix.equals("")) {
+            this.prefix = "xmlns";
+        }
+    }
+
+    public static Name convertToName(QName qname) {
+        return new NameImpl(qname.getLocalPart(),
+                            qname.getPrefix(),
+                            qname.getNamespaceURI());
+    }
+
+    public static QName convertToQName(Name name) {
+        return new QName(name.getURI(),
+                         name.getLocalName(),
+                         name.getPrefix());
+    }
+
+    public static NameImpl createFromUnqualifiedName(String name) {
+        return new NameImpl(name);
+    }
+
+    public static Name createFromTagName(String tagName) {
+        return createFromTagAndUri(tagName, "");
+    }
+
+    public static Name createFromQualifiedName(
+        String qualifiedName,
+        String uri) {
+        return createFromTagAndUri(qualifiedName, uri);
+    }
+
+    protected static Name createFromTagAndUri(String tagName, String uri) {
+        if (tagName == null) {
+            log.severe("SAAJ0201.name.not.created.from.null.tag");
+            throw new IllegalArgumentException("Cannot create a name from a null tag.");
+        }
+        int index = tagName.indexOf(':');
+        if (index < 0) {
+            return new NameImpl(tagName, "", uri);
+        } else {
+            return new NameImpl(
+                tagName.substring(index + 1),
+                tagName.substring(0, index),
+                uri);
+        }
+    }
+
+    protected static int getPrefixSeparatorIndex(String qualifiedName) {
+        int index = qualifiedName.indexOf(':');
+        if (index < 0) {
+            log.log(
+                Level.SEVERE,
+                "SAAJ0202.name.invalid.arg.format",
+                new String[] { qualifiedName });
+            throw new IllegalArgumentException(
+                "Argument \""
+                    + qualifiedName
+                    + "\" must be of the form: \"prefix:localName\"");
+        }
+        return index;
+    }
+
+    public static String getPrefixFromQualifiedName(String qualifiedName) {
+        return qualifiedName.substring(
+            0,
+            getPrefixSeparatorIndex(qualifiedName));
+    }
+
+    public static String getLocalNameFromQualifiedName(String qualifiedName) {
+        return qualifiedName.substring(
+            getPrefixSeparatorIndex(qualifiedName) + 1);
+    }
+
+    public static String getPrefixFromTagName(String tagName) {
+        if (isQualified(tagName)) {
+            return getPrefixFromQualifiedName(tagName);
+        }
+        return "";
+    }
+
+    public static String getLocalNameFromTagName(String tagName) {
+        if (isQualified(tagName)) {
+            return getLocalNameFromQualifiedName(tagName);
+        }
+        return tagName;
+    }
+
+    public static boolean isQualified(String tagName) {
+        return tagName.indexOf(':') >= 0;
+    }
+
+    public static NameImpl create(String name, String prefix, String uri) {
+        if (prefix == null)
+            prefix = "";
+        if (uri == null)
+            uri = "";
+        if (name == null)
+            name = "";
+
+        if (!uri.equals("") && !name.equals("")) {
+            if (uri.equals(NameImpl.SOAP11_NAMESPACE)) {
+                if (name.equalsIgnoreCase("Envelope"))
+                    return createEnvelope1_1Name(prefix);
+                else if (name.equalsIgnoreCase("Header"))
+                    return createHeader1_1Name(prefix);
+                else if (name.equalsIgnoreCase("Body"))
+                    return createBody1_1Name(prefix);
+                else if (name.equalsIgnoreCase("Fault"))
+                    return createFault1_1Name(prefix);
+                else
+                    return new SOAP1_1Name(name, prefix);
+            } else if (uri.equals(SOAP12_NAMESPACE)) {
+                if (name.equalsIgnoreCase("Envelope"))
+                    return createEnvelope1_2Name(prefix);
+                else if (name.equalsIgnoreCase("Header"))
+                    return createHeader1_2Name(prefix);
+                else if (name.equalsIgnoreCase("Body"))
+                    return createBody1_2Name(prefix);
+                else if (
+                    name.equals("Fault")
+                        || name.equals("Reason")
+                        || name.equals("Detail"))
+                    return createFault1_2Name(name, prefix);
+                else if (name.equals("Code") || name.equals("Subcode"))
+                    return createCodeSubcode1_2Name(prefix, name);
+                else
+                    return new SOAP1_2Name(name, prefix);
+            }
+
+        }
+        return new NameImpl(name, prefix, uri);
+    }
+
+    public static String createQName(String prefix, String localName) {
+        if (prefix == null || prefix.equals("")) {
+            return localName;
+        }
+        return prefix + ":" + localName;
+    }
+
+    public boolean equals(Object obj) {
+        if (!(obj instanceof Name)) {
+            return false;
+        }
+
+        Name otherName = (Name) obj;
+
+        if (!uri.equals(otherName.getURI())) {
+            return false;
+        }
+
+        if (!localName.equals(otherName.getLocalName())) {
+            return false;
+        }
+
+        return true;
+    }
+
+    public int hashCode() {
+        return localName.hashCode();
+    }
+
+    /**
+     * Get the local name part of this XML Name.
+     *
+     * @return a string for the local name.
+     */
+    public String getLocalName() {
+        return localName;
+    }
+
+    /* getQualifiedName is inherited from QName */
+
+    /**
+     * Returns the prefix associated with the namespace of the name.
+     *
+     * @return the prefix as a string.
+     */
+    public String getPrefix() {
+        return prefix;
+    }
+
+    /**
+     * Returns the URI associated of the namespace.
+     *
+     * @return the uri as a string.
+     */
+    public String getURI() {
+        return uri;
+    }
+
+    /**
+     * Returns a String version of the name suitable for use in an XML document.
+     */
+    public String getQualifiedName() {
+        if (qualifiedName == null) {
+            if (prefix != null && prefix.length() > 0) {
+                qualifiedName = prefix + ":" + localName;
+            } else {
+                qualifiedName = localName;
+            }
+        }
+        return qualifiedName;
+    }
+
+    /**
+     * Create a name object for a SOAP1.1 Envelope.
+     */
+    public static NameImpl createEnvelope1_1Name(String prefix) {
+        return new Envelope1_1Name(prefix);
+    }
+
+    /**
+     * Create a name object for a SOAP1.2 Envelope.
+     */
+    public static NameImpl createEnvelope1_2Name(String prefix) {
+        return new Envelope1_2Name(prefix);
+    }
+
+    /**
+     * Create a name object for a SOAP1.1 Header.
+     */
+    public static NameImpl createHeader1_1Name(String prefix) {
+        return new Header1_1Name(prefix);
+    }
+
+    /**
+     * Create a name object for a SOAP1.2 Header.
+     */
+    public static NameImpl createHeader1_2Name(String prefix) {
+        return new Header1_2Name(prefix);
+    }
+
+    /**
+     * Create a name object for a SOAP1.1 Body.
+     */
+    public static NameImpl createBody1_1Name(String prefix) {
+        return new Body1_1Name(prefix);
+    }
+
+    /**
+     * Create a name object for a SOAP1.2 Body.
+     */
+    public static NameImpl createBody1_2Name(String prefix) {
+        return new Body1_2Name(prefix);
+    }
+
+    /**
+     * Create a name object for a SOAP1.1 Fault.
+     */
+    public static NameImpl createFault1_1Name(String prefix) {
+        return new Fault1_1Name(prefix);
+    }
+
+    /**
+      * Create a name object for a SOAP1.2 NotUnderstood element.
+      */
+    public static NameImpl createNotUnderstood1_2Name(String prefix) {
+        return new NotUnderstood1_2Name(prefix);
+    }
+
+    /**
+     * Create a name object for a SOAP1.2 Upgrade element.
+     */
+    public static NameImpl createUpgrade1_2Name(String prefix) {
+        return new Upgrade1_2Name(prefix);
+    }
+
+    /**
+     * Create a name object for a SOAP1.2 SupportedEnvelope Upgrade element.
+     */
+    public static NameImpl createSupportedEnvelope1_2Name(String prefix) {
+        return new SupportedEnvelope1_2Name(prefix);
+    }
+
+    /**
+     * Create a name object for a SOAP1.2
+     * Fault, Reason or Detail.
+     *
+     * @param localName Local Name of element
+     */
+    public static NameImpl createFault1_2Name(
+        String localName,
+        String prefix) {
+        return new Fault1_2Name(localName, prefix);
+    }
+
+    /**
+     * Create a name object for a SOAP1.2 Fault/Code or Subcode.
+     *
+     * @param localName Either "Code" or "Subcode"
+     */
+    public static NameImpl createCodeSubcode1_2Name(
+        String prefix,
+        String localName) {
+        return new CodeSubcode1_2Name(localName, prefix);
+    }
+
+    /**
+     * Create a name object for a SOAP1.1 Fault Detail.
+     */
+    public static NameImpl createDetail1_1Name() {
+        return new Detail1_1Name();
+    }
+
+    public static NameImpl createDetail1_1Name(String prefix) {
+        return new Detail1_1Name(prefix);
+    }
+
+    public static NameImpl createFaultElement1_1Name(String localName) {
+        return new FaultElement1_1Name(localName);
+    }
+
+    public static NameImpl createFaultElement1_1Name(String localName,
+                                                     String prefix) {
+        return new FaultElement1_1Name(localName, prefix);
+    }
+
+    public static NameImpl createSOAP11Name(String string) {
+        return new SOAP1_1Name(string, null);
+    }
+    public static NameImpl createSOAP12Name(String string) {
+        return new SOAP1_2Name(string, null);
+    }
+
+    public static NameImpl createSOAP12Name(String localName, String prefix) {
+        return new SOAP1_2Name(localName, prefix);
+    }
+
+    public static NameImpl createXmlName(String localName) {
+        return new NameImpl(localName, XML_NAMESPACE_PREFIX, XML_NAMESPACE);
+    }
+
+    public static Name copyElementName(Element element) {
+        String localName = element.getLocalName();
+        String prefix = element.getPrefix();
+        String uri = element.getNamespaceURI();
+        return create(localName, prefix, uri);
+    }
+
+
+static class SOAP1_1Name extends NameImpl {
+    SOAP1_1Name(String name, String prefix) {
+        super(
+            name,
+            (prefix == null || prefix.equals(""))
+                ? NameImpl.SOAP_ENVELOPE_PREFIX
+                : prefix,
+            NameImpl.SOAP11_NAMESPACE);
+    }
+}
+
+static class Envelope1_1Name extends SOAP1_1Name {
+    Envelope1_1Name(String prefix) {
+        super("Envelope", prefix);
+    }
+}
+
+static class Header1_1Name extends SOAP1_1Name {
+    Header1_1Name(String prefix) {
+        super("Header", prefix);
+    }
+}
+
+static class Body1_1Name extends SOAP1_1Name {
+    Body1_1Name(String prefix) {
+        super("Body", prefix);
+    }
+}
+
+static class Fault1_1Name extends NameImpl {
+    Fault1_1Name(String prefix) {
+        super(
+            "Fault",
+            (prefix == null || prefix.equals(""))
+                ? SOAP_ENVELOPE_PREFIX
+                : prefix,
+            SOAP11_NAMESPACE);
+    }
+}
+
+static class Detail1_1Name extends NameImpl {
+    Detail1_1Name() {
+        super("detail");
+    }
+
+    Detail1_1Name(String prefix) {
+        super("detail", prefix, "");
+    }
+}
+
+static class FaultElement1_1Name extends NameImpl {
+    FaultElement1_1Name(String localName) {
+        super(localName);
+    }
+
+    FaultElement1_1Name(String localName, String prefix) {
+        super(localName, prefix, "");
+    }
+}
+
+static class SOAP1_2Name extends NameImpl {
+    SOAP1_2Name(String name, String prefix) {
+        super(
+            name,
+            (prefix == null || prefix.equals(""))
+                ? SOAPConstants.SOAP_ENV_PREFIX
+                : prefix,
+            SOAP12_NAMESPACE);
+    }
+}
+
+static class Envelope1_2Name extends SOAP1_2Name {
+    Envelope1_2Name(String prefix) {
+        super("Envelope", prefix);
+    }
+}
+
+static class Header1_2Name extends SOAP1_2Name {
+    Header1_2Name(String prefix) {
+        super("Header", prefix);
+    }
+}
+
+static class Body1_2Name extends SOAP1_2Name {
+    Body1_2Name(String prefix) {
+        super("Body", prefix);
+    }
+}
+
+static class Fault1_2Name extends NameImpl {
+    Fault1_2Name(String name, String prefix) {
+        super(
+            (name == null || name.equals("")) ? "Fault" : name,
+            (prefix == null || prefix.equals(""))
+                ? SOAPConstants.SOAP_ENV_PREFIX
+                : prefix,
+            SOAP12_NAMESPACE);
+    }
+}
+
+static class NotUnderstood1_2Name extends NameImpl {
+    NotUnderstood1_2Name(String prefix) {
+        super(
+            "NotUnderstood",
+            (prefix == null || prefix.equals(""))
+                ? SOAPConstants.SOAP_ENV_PREFIX
+                : prefix,
+            SOAP12_NAMESPACE);
+    }
+}
+
+static class Upgrade1_2Name extends NameImpl {
+    Upgrade1_2Name(String prefix) {
+        super(
+            "Upgrade",
+            (prefix == null || prefix.equals(""))
+                ? SOAPConstants.SOAP_ENV_PREFIX
+                : prefix,
+            SOAP12_NAMESPACE);
+    }
+}
+
+static class SupportedEnvelope1_2Name extends NameImpl {
+    SupportedEnvelope1_2Name(String prefix) {
+        super(
+            "SupportedEnvelope",
+            (prefix == null || prefix.equals(""))
+                ? SOAPConstants.SOAP_ENV_PREFIX
+                : prefix,
+            SOAP12_NAMESPACE);
+    }
+}
+
+static class CodeSubcode1_2Name extends SOAP1_2Name {
+    CodeSubcode1_2Name(String prefix, String localName) {
+        super(prefix, localName);
+    }
+}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Body1_1Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
+
+import java.util.Locale;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.*;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.BodyImpl;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+
+public class Body1_1Impl extends BodyImpl {
+    public Body1_1Impl(SOAPDocumentImpl ownerDocument, String prefix) {
+            super(ownerDocument, NameImpl.createBody1_1Name(prefix));
+    }
+
+    public SOAPFault addSOAP12Fault(QName faultCode, String faultReason, Locale locale) {
+        // log message here
+        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
+    }
+
+    protected NameImpl getFaultName(String name) {
+        // Ignore name
+        return NameImpl.createFault1_1Name(null);
+    }
+
+    protected SOAPBodyElement createBodyElement(Name name) {
+        return new BodyElement1_1Impl(
+            ((SOAPDocument) getOwnerDocument()).getDocument(),
+            name);
+    }
+
+    protected SOAPBodyElement createBodyElement(QName name) {
+        return new BodyElement1_1Impl(
+            ((SOAPDocument) getOwnerDocument()).getDocument(),
+            name);
+    }
+
+    protected QName getDefaultFaultCode() {
+        return new QName(SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE, "Server");
+    }
+
+    protected boolean isFault(SOAPElement child) {
+        // SOAP 1.1 faults always use the default name
+        return child.getElementName().equals(getFaultName(null));
+    }
+
+    protected SOAPFault createFaultElement() {
+        return new Fault1_1Impl(
+            ((SOAPDocument) getOwnerDocument()).getDocument(), getPrefix());
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/BodyElement1_1Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.Name;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPException;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.BodyElementImpl;
+
+public class BodyElement1_1Impl extends BodyElementImpl {
+
+    public BodyElement1_1Impl(SOAPDocumentImpl ownerDoc, Name qname) {
+        super(ownerDoc, qname);
+    }
+    public BodyElement1_1Impl(SOAPDocumentImpl ownerDoc, QName qname) {
+        super(ownerDoc, qname);
+    }
+    public SOAPElement setElementQName(QName newName) throws SOAPException {
+        BodyElementImpl copy =
+            new BodyElement1_1Impl((SOAPDocumentImpl) getOwnerDocument(), newName);
+        return replaceElementWithSOAPElement(this,copy);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Detail1_1Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.DetailEntry;
+import javax.xml.soap.Name;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.DetailImpl;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+
+public class Detail1_1Impl extends DetailImpl {
+
+    public Detail1_1Impl(SOAPDocumentImpl ownerDoc, String prefix) {
+        super(ownerDoc, NameImpl.createDetail1_1Name(prefix));
+    }
+    public Detail1_1Impl(SOAPDocumentImpl ownerDoc) {
+        super(ownerDoc, NameImpl.createDetail1_1Name());
+    }
+    protected DetailEntry createDetailEntry(Name name) {
+        return new DetailEntry1_1Impl(
+            (SOAPDocumentImpl) getOwnerDocument(),
+            name);
+    }
+    protected DetailEntry createDetailEntry(QName name) {
+        return new DetailEntry1_1Impl(
+            (SOAPDocumentImpl) getOwnerDocument(),
+            name);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/DetailEntry1_1Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.Name;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPException;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.DetailEntryImpl;
+
+public class DetailEntry1_1Impl extends DetailEntryImpl {
+
+    public DetailEntry1_1Impl(SOAPDocumentImpl ownerDoc, Name qname) {
+        super(ownerDoc, qname);
+    }
+    public DetailEntry1_1Impl(SOAPDocumentImpl ownerDoc, QName qname) {
+        super(ownerDoc, qname);
+    }
+    public SOAPElement setElementQName(QName newName) throws SOAPException {
+        DetailEntryImpl copy =
+            new DetailEntry1_1Impl((SOAPDocumentImpl) getOwnerDocument(), newName);
+        return replaceElementWithSOAPElement(this,copy);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Envelope1_1Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
+
+import javax.xml.soap.SOAPException;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+
+public class Envelope1_1Impl extends EnvelopeImpl {
+
+    public Envelope1_1Impl(SOAPDocumentImpl ownerDoc, String prefix){
+        super(ownerDoc, NameImpl.createEnvelope1_1Name(prefix));
+    }
+    Envelope1_1Impl(
+        SOAPDocumentImpl ownerDoc,
+        String prefix,
+        boolean createHeader,
+        boolean createBody)
+        throws SOAPException {
+        super(
+            ownerDoc,
+            NameImpl.createEnvelope1_1Name(prefix),
+            createHeader,
+            createBody);
+    }
+    protected NameImpl getBodyName(String prefix) {
+        return NameImpl.createBody1_1Name(prefix);
+    }
+
+    protected NameImpl getHeaderName(String prefix) {
+        return NameImpl.createHeader1_1Name(prefix);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Fault1_1Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,387 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
+
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.logging.Logger;
+import java.util.logging.Level;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPFaultElement;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPConstants;
+import javax.xml.soap.Name;
+import javax.xml.soap.Name;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.*;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+
+
+public class Fault1_1Impl extends FaultImpl {
+
+    protected static final Logger log =
+        Logger.getLogger(
+            LogDomainConstants.SOAP_VER1_1_DOMAIN,
+            "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings");
+
+    public Fault1_1Impl(SOAPDocumentImpl ownerDocument, String prefix) {
+       super(ownerDocument, NameImpl.createFault1_1Name(prefix));
+    }
+
+    protected NameImpl getDetailName() {
+        return NameImpl.createDetail1_1Name();
+    }
+
+    protected NameImpl getFaultCodeName() {
+        return NameImpl.createFromUnqualifiedName("faultcode");
+    }
+
+    protected NameImpl getFaultStringName() {
+        return NameImpl.createFromUnqualifiedName("faultstring");
+    }
+
+    protected NameImpl getFaultActorName() {
+        return NameImpl.createFromUnqualifiedName("faultactor");
+    }
+
+    protected DetailImpl createDetail() {
+        return new Detail1_1Impl(
+                       ((SOAPDocument) getOwnerDocument()).getDocument());
+    }
+
+    protected FaultElementImpl createSOAPFaultElement(String localName) {
+        return new FaultElement1_1Impl(
+                       ((SOAPDocument) getOwnerDocument()).getDocument(),
+                       localName);
+    }
+
+    protected void checkIfStandardFaultCode(String faultCode, String uri)
+        throws SOAPException {
+        // SOAP 1.1 doesn't seem to mandate using faultcode from a particular
+        // set of values.
+        // Also need to be backward compatible.
+    }
+
+    protected void finallySetFaultCode(String faultcode) throws SOAPException {
+        this.faultCodeElement.addTextNode(faultcode);
+    }
+
+    public String getFaultCode() {
+        if (this.faultCodeElement == null)
+            findFaultCodeElement();
+        return this.faultCodeElement.getValue();
+    }
+
+    public Name getFaultCodeAsName() {
+
+        String faultcodeString = getFaultCode();
+        if (faultcodeString == null) {
+            return null;
+        }
+        int prefixIndex = faultcodeString.indexOf(':');
+        if (prefixIndex == -1) {
+            // Not a valid SOAP message, but we return the unqualified name
+            // anyway since some apps do not strictly conform to SOAP
+            // specs.  A message that does not contain a <faultcode>
+            // element itself is also not valid in which case we return
+            // null instead of throwing an exception so this is consistent.
+            return NameImpl.createFromUnqualifiedName(faultcodeString);
+        }
+
+        // Get the prefix and map it to a namespace name (AKA namespace URI)
+        String prefix = faultcodeString.substring(0, prefixIndex);
+        if (this.faultCodeElement == null)
+            findFaultCodeElement();
+        String nsName = this.faultCodeElement.getNamespaceURI(prefix);
+        return NameImpl.createFromQualifiedName(faultcodeString, nsName);
+    }
+
+    public QName getFaultCodeAsQName() {
+        String faultcodeString = getFaultCode();
+        if (faultcodeString == null) {
+            return null;
+        }
+        if (this.faultCodeElement == null)
+            findFaultCodeElement();
+        return convertCodeToQName(faultcodeString, this.faultCodeElement);
+    }
+
+    public void setFaultString(String faultString) throws SOAPException {
+
+        if (this.faultStringElement == null)
+            findFaultStringElement();
+
+        if (this.faultStringElement == null)
+            this.faultStringElement = addSOAPFaultElement("faultstring");
+        else {
+            this.faultStringElement.removeContents();
+            //this.faultStringElement.removeAttributeNS("http://www.w3.org/XML/1998/namespace", "lang");
+            this.faultStringElement.removeAttribute("xml:lang");
+        }
+
+        this.faultStringElement.addTextNode(faultString);
+    }
+
+    public String getFaultString() {
+        if (this.faultStringElement == null)
+            findFaultStringElement();
+        return this.faultStringElement.getValue();
+
+    }
+
+    public Locale getFaultStringLocale() {
+        if (this.faultStringElement == null)
+            findFaultStringElement();
+        if (this.faultStringElement != null) {
+            String xmlLangAttr =
+                this.faultStringElement.getAttributeValue(
+                    NameImpl.createFromUnqualifiedName("xml:lang"));
+            if (xmlLangAttr != null)
+                return xmlLangToLocale(xmlLangAttr);
+        }
+        return null;
+    }
+
+    public void setFaultString(String faultString, Locale locale)
+        throws SOAPException {
+        setFaultString(faultString);
+        this.faultStringElement.addAttribute(
+            NameImpl.createFromTagName("xml:lang"),
+            localeToXmlLang(locale));
+    }
+
+    protected boolean isStandardFaultElement(String localName) {
+        if (localName.equalsIgnoreCase("detail") ||
+            localName.equalsIgnoreCase("faultcode") ||
+            localName.equalsIgnoreCase("faultstring") ||
+            localName.equalsIgnoreCase("faultactor")) {
+            return true;
+        }
+        return false;
+    }
+
+    public void appendFaultSubcode(QName subcode) {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
+            "appendFaultSubcode");
+        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
+    }
+
+    public void removeAllFaultSubcodes() {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
+            "removeAllFaultSubcodes");
+        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
+    }
+
+    public Iterator getFaultSubcodes() {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
+            "getFaultSubcodes");
+        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
+    }
+
+    public String getFaultReasonText(Locale locale) {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
+            "getFaultReasonText");
+        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
+    }
+
+    public Iterator getFaultReasonTexts() {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
+            "getFaultReasonTexts");
+        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
+    }
+
+    public Iterator getFaultReasonLocales() {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
+            "getFaultReasonLocales");
+        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
+    }
+
+    public void addFaultReasonText(String text, java.util.Locale locale)
+        throws SOAPException {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
+            "addFaultReasonText");
+        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
+    }
+
+    public String getFaultRole() {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
+            "getFaultRole");
+        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
+    }
+
+    public void setFaultRole(String uri) {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
+            "setFaultRole");
+        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
+    }
+
+    public String getFaultNode() {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
+            "getFaultNode");
+        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
+    }
+
+    public void setFaultNode(String uri) {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
+            "setFaultNode");
+        throw new UnsupportedOperationException("Not supported in SOAP 1.1");
+    }
+
+    protected QName getDefaultFaultCode() {
+        return new QName(SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE, "Server");
+    }
+
+    public SOAPElement addChildElement(SOAPElement element)
+        throws SOAPException {
+        String localName = element.getLocalName();
+        if ("Detail".equalsIgnoreCase(localName)) {
+            if (hasDetail()) {
+                log.severe("SAAJ0305.ver1_2.detail.exists.error");
+                throw new SOAPExceptionImpl("Cannot add Detail, Detail already exists");
+            }
+        }
+        return super.addChildElement(element);
+    }
+
+    protected FaultElementImpl createSOAPFaultElement(QName qname) {
+         return new FaultElement1_1Impl(
+                       ((SOAPDocument) getOwnerDocument()).getDocument(),
+                       qname);
+    }
+
+    protected FaultElementImpl createSOAPFaultElement(Name qname) {
+         return new FaultElement1_1Impl(
+                       ((SOAPDocument) getOwnerDocument()).getDocument(),
+                       (NameImpl)qname);
+    }
+
+    public void setFaultCode(String faultCode, String prefix, String uri)
+        throws SOAPException {
+        if (prefix == null || "".equals(prefix)) {
+            if (uri != null && !"".equals(uri)) {
+                prefix = getNamespacePrefix(uri);
+                if (prefix == null || "".equals(prefix)) {
+                    prefix = "ns0";
+                }
+            }
+        }
+
+        if (this.faultCodeElement == null)
+            findFaultCodeElement();
+
+        if (this.faultCodeElement == null)
+            this.faultCodeElement = addFaultCodeElement();
+        else
+            this.faultCodeElement.removeContents();
+
+        if (uri == null || "".equals(uri)) {
+            if (prefix != null && !"".equals("prefix")) {
+                uri = this.faultCodeElement.getNamespaceURI(prefix);
+            }
+        }
+
+        if (uri == null || "".equals(uri)) {
+            if (prefix != null && !"".equals(prefix)) {
+                //cannot allow an empty URI for a non-Empty prefix
+                log.log(Level.SEVERE, "SAAJ0307.impl.no.ns.URI", new Object[]{prefix + ":" + faultCode});
+                throw new SOAPExceptionImpl("Empty/Null NamespaceURI specified for faultCode \"" + prefix + ":" + faultCode + "\"");
+            } else {
+                uri = "";
+            }
+        }
+
+        checkIfStandardFaultCode(faultCode, uri);
+        ((FaultElementImpl) this.faultCodeElement).ensureNamespaceIsDeclared(prefix, uri);
+
+        if (prefix == null || "".equals(prefix)) {
+            finallySetFaultCode(faultCode);
+        } else {
+            finallySetFaultCode(prefix + ":" + faultCode);
+        }
+    }
+
+    private boolean standardFaultCode(String faultCode) {
+        if (faultCode.equals("VersionMismatch") || faultCode.equals("MustUnderstand")
+            || faultCode.equals("Client") || faultCode.equals("Server")) {
+            return true;
+        }
+        if (faultCode.startsWith("VersionMismatch.") || faultCode.startsWith("MustUnderstand.")
+            || faultCode.startsWith("Client.") || faultCode.startsWith("Server.")) {
+            return true;
+        }
+        return false;
+    }
+
+     public void setFaultActor(String faultActor) throws SOAPException {
+        if (this.faultActorElement == null)
+            findFaultActorElement();
+        if (this.faultActorElement != null)
+            this.faultActorElement.detachNode();
+        if (faultActor == null)
+            return;
+        this.faultActorElement =
+            createSOAPFaultElement(getFaultActorName());
+        this.faultActorElement.addTextNode(faultActor);
+        if (hasDetail()) {
+            insertBefore(this.faultActorElement, this.detail);
+            return;
+        }
+        addNode(this.faultActorElement);
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/FaultElement1_1Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPException;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.FaultElementImpl;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+
+public class FaultElement1_1Impl extends FaultElementImpl {
+
+    public FaultElement1_1Impl(SOAPDocumentImpl ownerDoc, NameImpl qname) {
+        super(ownerDoc, qname);
+    }
+
+    public FaultElement1_1Impl(SOAPDocumentImpl ownerDoc, QName qname) {
+        super(ownerDoc, qname);
+    }
+
+    public FaultElement1_1Impl(SOAPDocumentImpl ownerDoc,
+                               String localName) {
+        super(ownerDoc, NameImpl.createFaultElement1_1Name(localName));
+    }
+
+    public FaultElement1_1Impl(SOAPDocumentImpl ownerDoc,
+                               String localName,
+                               String prefix) {
+        super(ownerDoc,
+              NameImpl.createFaultElement1_1Name(localName, prefix));
+    }
+
+    protected boolean isStandardFaultElement() {
+        String localName = elementQName.getLocalPart();
+        if (localName.equalsIgnoreCase("faultcode") ||
+            localName.equalsIgnoreCase("faultstring") ||
+            localName.equalsIgnoreCase("faultactor")) {
+            return true;
+        }
+        return false;
+    }
+
+    public SOAPElement setElementQName(QName newName) throws SOAPException {
+        if (!isStandardFaultElement()) {
+            FaultElement1_1Impl copy =
+                new FaultElement1_1Impl((SOAPDocumentImpl) getOwnerDocument(), newName);
+            return replaceElementWithSOAPElement(this,copy);
+        } else {
+            return super.setElementQName(newName);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Header1_1Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
+
+import java.util.List;
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.*;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.HeaderImpl;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
+
+public class Header1_1Impl extends HeaderImpl {
+
+    protected static final Logger log =
+        Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN,
+                         "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings");
+
+    public Header1_1Impl(SOAPDocumentImpl ownerDocument, String prefix) {
+            super(ownerDocument, NameImpl.createHeader1_1Name(prefix));
+    }
+
+    protected NameImpl getNotUnderstoodName() {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1",
+            new String[] { "getNotUnderstoodName" });
+        throw new UnsupportedOperationException("Not supported by SOAP 1.1");
+    }
+
+    protected NameImpl getUpgradeName() {
+        return NameImpl.create(
+            "Upgrade",
+            getPrefix(),
+            SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE);
+    }
+
+    protected NameImpl getSupportedEnvelopeName() {
+        return NameImpl.create(
+            "SupportedEnvelope",
+            getPrefix(),
+            SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE);
+    }
+
+    public SOAPHeaderElement addNotUnderstoodHeaderElement(QName name)
+        throws SOAPException {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1",
+            new String[] { "addNotUnderstoodHeaderElement" });
+        throw new UnsupportedOperationException("Not supported by SOAP 1.1");
+    }
+
+    protected SOAPHeaderElement createHeaderElement(Name name) {
+        return new HeaderElement1_1Impl(
+            ((SOAPDocument) getOwnerDocument()).getDocument(),
+            name);
+    }
+    protected SOAPHeaderElement createHeaderElement(QName name) {
+        return new HeaderElement1_1Impl(
+            ((SOAPDocument) getOwnerDocument()).getDocument(),
+            name);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/HeaderElement1_1Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.Name;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPElement;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.HeaderElementImpl;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
+
+public class HeaderElement1_1Impl extends HeaderElementImpl {
+
+    protected static final Logger log =
+        Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN,
+                         "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings");
+
+    public HeaderElement1_1Impl(SOAPDocumentImpl ownerDoc, Name qname) {
+        super(ownerDoc, qname);
+    }
+    public HeaderElement1_1Impl(SOAPDocumentImpl ownerDoc, QName qname) {
+        super(ownerDoc, qname);
+    }
+
+    public SOAPElement setElementQName(QName newName) throws SOAPException {
+        HeaderElementImpl copy =
+            new HeaderElement1_1Impl((SOAPDocumentImpl) getOwnerDocument(), newName);
+        return replaceElementWithSOAPElement(this,copy);
+    }
+
+    protected NameImpl getActorAttributeName() {
+        return NameImpl.create("actor", null, NameImpl.SOAP11_NAMESPACE);
+    }
+
+    // role not supported by SOAP 1.1
+    protected NameImpl getRoleAttributeName() {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1",
+            new String[] { "Role" });
+        throw new UnsupportedOperationException("Role not supported by SOAP 1.1");
+    }
+
+    protected NameImpl getMustunderstandAttributeName() {
+        return NameImpl.create("mustUnderstand", null, NameImpl.SOAP11_NAMESPACE);
+    }
+
+    // mustUnderstand attribute has literal value "1" or "0"
+    protected String getMustunderstandLiteralValue(boolean mustUnderstand) {
+        return (mustUnderstand == true ? "1" : "0");
+    }
+
+    protected boolean getMustunderstandAttributeValue(String mu) {
+        if ("1".equals(mu) || "true".equalsIgnoreCase(mu))
+            return true;
+        return false;
+    }
+
+    // relay not supported by SOAP 1.1
+    protected NameImpl getRelayAttributeName() {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1",
+            new String[] { "Relay" });
+        throw new UnsupportedOperationException("Relay not supported by SOAP 1.1");
+    }
+
+    protected String getRelayLiteralValue(boolean relayAttr) {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1",
+            new String[] { "Relay" });
+        throw new UnsupportedOperationException("Relay not supported by SOAP 1.1");
+    }
+
+    protected boolean getRelayAttributeValue(String mu) {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1",
+            new String[] { "Relay" });
+        throw new UnsupportedOperationException("Relay not supported by SOAP 1.1");
+    }
+
+    protected String getActorOrRole() {
+        return getActor();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,36 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for ver1_1 pkg
+
+# Error messages
+SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: Operation {0} not supported by SOAP 1.1
+SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: Attribute {0} not supported by SOAP 1.1
+SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: Operation {0} not supported by SOAP 1.1
+SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream does not represent a valid SOAP 1.1 Message
+SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: Cannot add Detail, Detail already exists
+SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: Namespace Warning, Standard Faultcode {0}, should ideally be in SOAP 1.1 Namespace
+SAAJ0307.impl.no.ns.URI=SAAJ0307: Empty/Null NamespaceURI specified for faultCode {0}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_de.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,36 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for ver1_1 pkg
+
+# Error messages
+SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: Vorgang {0} von SOAP 1.1 nicht unterst\u00FCtzt
+SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: Attribut {0} von SOAP 1.1 nicht unterst\u00FCtzt
+SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: Vorgang {0} von SOAP 1.1 nicht unterst\u00FCtzt
+SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream stellt keine g\u00FCltige SOAP 1.1-Nachricht dar
+SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: Detail kann nicht hinzugef\u00FCgt werden, Detail ist bereits vorhanden
+SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: Namespace-Warnung, Standard-Faultcode {0}, sollte im Idealfall in SOAP 1.1 Namespace enthalten sein
+SAAJ0307.impl.no.ns.URI=SAAJ0307: Leerer/Null-NamespaceURI f\u00FCr faultCode {0} angegeben
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_es.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,36 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for ver1_1 pkg
+
+# Error messages
+SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: la operaci\u00F3n {0} no est\u00E1 soportada en SOAP 1.1
+SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: el atributo {0} no est\u00E1 soportado en SOAP 1.1
+SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: la operaci\u00F3n {0} no est\u00E1 soportada en SOAP 1.1
+SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream no representa un mensaje de SOAP 1.1 v\u00E1lido
+SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: no se puede agregar el detalle. El detalle ya existe
+SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: advertencia de espacio de nombres; lo recomendable es que el c\u00F3digo de fallo est\u00E1ndar {0} est\u00E9 en un espacio de nombres de SOAP 1.1
+SAAJ0307.impl.no.ns.URI=SAAJ0307: se ha especificado un URI de espacio de nombres vac\u00EDo o nulo para el c\u00F3digo de fallo {0}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_fr.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,36 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for ver1_1 pkg
+
+# Error messages
+SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301 : op\u00E9ration {0} non prise en charge par SOAP 1.1
+SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302 : attribut {0} non pris en charge par SOAP 1.1
+SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303 : op\u00E9ration {0} non prise en charge par SOAP 1.1
+SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304 : InputStream ne repr\u00E9sente pas un message SOAP 1.1 valide
+SAAJ0305.ver1_2.detail.exists.error=SAAJ0157 : impossible d'ajouter l'\u00E9l\u00E9ment Detail, il existe d\u00E9j\u00E0
+SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306 : avertissement d''espace de noms, Faultcode standard {0}, doit id\u00E9alement \u00EAtre dans l''espace de noms SOAP 1.1
+SAAJ0307.impl.no.ns.URI=SAAJ0307 : NamespaceURI vide/NULL indiqu\u00E9 pour faultCode {0}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_it.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,36 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for ver1_1 pkg
+
+# Error messages
+SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: Operazione {0} non supportata da SOAP 1.1
+SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: Attributo {0} non supportato da SOAP 1.1
+SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: Operazione {0} non supportata da SOAP 1.1
+SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream non rappresenta un messaggio SOAP 1.1 valido
+SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: Impossibile aggiungere Detail. Detail esiste gi\u00E0.
+SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: L''avvertenza dello spazio di nomi, codice di errore standard {0}, dovrebbe trovarsi nello spazio di nomi SOAP 1.1
+SAAJ0307.impl.no.ns.URI=SAAJ0307: NamespaceURI nomi vuoto/nullo specificato per faultCode {0}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_ja.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,36 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for ver1_1 pkg
+
+# Error messages
+SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: \u64CD\u4F5C{0}\u306FSOAP 1.1\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: \u5C5E\u6027{0}\u306FSOAP 1.1\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: \u64CD\u4F5C{0}\u306FSOAP 1.1\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream\u306F\u6709\u52B9\u306ASOAP 1.1\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u3057\u3066\u3044\u307E\u305B\u3093
+SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: Detail\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002Detail\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059
+SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: \u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u8B66\u544A\u3001\u6A19\u6E96\u306EFaultcode {0}\u3001SOAP 1.1\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u306B\u5B58\u5728\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+SAAJ0307.impl.no.ns.URI=SAAJ0307: faultCode {0}\u306B\u6307\u5B9A\u3055\u308C\u305FNamespaceURI\u304C\u7A7A/Null\u3067\u3059
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_ko.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,36 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for ver1_1 pkg
+
+# Error messages
+SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: SOAP 1.1\uC5D0\uC11C\uB294 {0} \uC791\uC5C5\uC744 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: SOAP 1.1\uC5D0\uC11C\uB294 {0} \uC18D\uC131\uC744 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: SOAP 1.1\uC5D0\uC11C\uB294 {0} \uC791\uC5C5\uC744 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream\uC774 \uC801\uD569\uD55C SOAP 1.1 \uBA54\uC2DC\uC9C0\uB97C \uB098\uD0C0\uB0B4\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: Detail\uC744 \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. Detail\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4.
+SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: \uB124\uC784\uC2A4\uD398\uC774\uC2A4 \uACBD\uACE0\uC785\uB2C8\uB2E4. \uD45C\uC900 Faultcode {0}\uC740(\uB294) SOAP 1.1 \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5D0 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+SAAJ0307.impl.no.ns.URI=SAAJ0307: faultCode {0}\uC5D0 \uB300\uD574 \uBE48/\uB110 NamespaceURI\uAC00 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_pt_BR.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,36 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for ver1_1 pkg
+
+# Error messages
+SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: opera\u00E7\u00E3o {0} n\u00E3o suportada por SOAP 1.1
+SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: o atributo {0} n\u00E3o \u00E9 suportado por SOAP 1.1
+SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: opera\u00E7\u00E3o {0} n\u00E3o suportada por SOAP 1.1
+SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: o InputStream n\u00E3o representa uma Mensagem SOAP 1.2 v\u00E1lida
+SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: n\u00E3o \u00E9 poss\u00EDvel adicionar Detalhe, o Detalhe j\u00E1 existe
+SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: Advert\u00EAncia de Namespace, C\u00F3digo de falha Padr\u00E3o {0}, devem estar no Namespace SOAP 1.1
+SAAJ0307.impl.no.ns.URI=SAAJ0307: NamespaceURI Vazio/Nulo especificado para faultCode {0}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_zh_CN.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,36 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for ver1_1 pkg
+
+# Error messages
+SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: SOAP 1.1 \u4E0D\u652F\u6301\u64CD\u4F5C{0}
+SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: SOAP 1.1 \u4E0D\u652F\u6301\u5C5E\u6027{0}
+SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: SOAP 1.1 \u4E0D\u652F\u6301\u64CD\u4F5C{0}
+SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream \u4E0D\u8868\u793A\u6709\u6548\u7684 SOAP 1.1 \u6D88\u606F
+SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: \u65E0\u6CD5\u6DFB\u52A0\u8BE6\u7EC6\u4FE1\u606F, \u8BE6\u7EC6\u4FE1\u606F\u5DF2\u5B58\u5728
+SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: \u540D\u79F0\u7A7A\u95F4\u8B66\u544A, \u6807\u51C6\u6545\u969C\u4EE3\u7801 {0} \u6700\u9002\u5408\u5728 SOAP 1.1 \u540D\u79F0\u7A7A\u95F4\u4E2D\u4F7F\u7528
+SAAJ0307.impl.no.ns.URI=SAAJ0307: \u4E3A faultCode {0} \u6307\u5B9A\u7684 NamespaceURI \u5FC5\u987B\u4E3A\u7A7A/\u7A7A\u503C
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_zh_TW.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,36 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for ver1_1 pkg
+
+# Error messages
+SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: SOAP 1.1 \u4E0D\u652F\u63F4\u4F5C\u696D {0}
+SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: SOAP 1.1 \u4E0D\u652F\u63F4\u5C6C\u6027 {0}
+SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: SOAP 1.1 \u4E0D\u652F\u63F4\u4F5C\u696D {0}
+SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream \u4E0D\u4EE3\u8868\u6709\u6548\u7684 SOAP 1.1 \u8A0A\u606F
+SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: \u7121\u6CD5\u65B0\u589E Detail, Detail \u5DF2\u7D93\u5B58\u5728
+SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: \u547D\u540D\u7A7A\u9593\u8B66\u544A, \u6A19\u6E96 Faultcode {0}, \u61C9\u8A72\u4F4D\u65BC SOAP 1.1 \u547D\u540D\u7A7A\u9593\u4E2D
+SAAJ0307.impl.no.ns.URI=SAAJ0307: \u70BA faultCode {0} \u6307\u5B9A\u7684\u662F\u7A7A\u7684/\u7A7A\u503C NamespaceURI
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Message1_1Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,131 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.soap.*;
+import javax.xml.stream.XMLStreamReader;
+
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.ContentType;
+import com.sun.xml.internal.messaging.saaj.soap.MessageImpl;
+import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
+
+public class Message1_1Impl extends MessageImpl implements SOAPConstants {
+
+    protected static final Logger log =
+        Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN,
+                         "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings");
+
+    public Message1_1Impl() {
+        super();
+    }
+
+    public Message1_1Impl(boolean isFastInfoset, boolean acceptFastInfoset) {
+        super(isFastInfoset, acceptFastInfoset);
+    }
+
+    public Message1_1Impl(SOAPMessage msg) {
+        super(msg);
+    }
+
+    // unused. can we delete this? - Kohsuke
+    public Message1_1Impl(MimeHeaders headers, InputStream in)
+        throws IOException, SOAPExceptionImpl {
+        super(headers, in);
+    }
+
+    public Message1_1Impl(MimeHeaders headers, ContentType ct, int stat, InputStream in)
+        throws SOAPExceptionImpl {
+        super(headers,ct,stat,in);
+    }
+
+    public Message1_1Impl(MimeHeaders headers, ContentType ct, int stat, XMLStreamReader reader)
+            throws SOAPExceptionImpl {
+            super(headers,ct,stat,reader);
+    }
+
+    public SOAPPart getSOAPPart() {
+        if (soapPartImpl == null) {
+            soapPartImpl = new SOAPPart1_1Impl(this);
+        }
+        return soapPartImpl;
+    }
+
+    protected boolean isCorrectSoapVersion(int contentTypeId) {
+        return (contentTypeId & SOAP1_1_FLAG) != 0;
+    }
+
+    public String getAction() {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
+            new String[] { "Action" });
+        throw new UnsupportedOperationException("Operation not supported by SOAP 1.1");
+    }
+
+    public void setAction(String type) {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
+            new String[] { "Action" });
+        throw new UnsupportedOperationException("Operation not supported by SOAP 1.1");
+    }
+
+    public String getCharset() {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
+            new String[] { "Charset" });
+        throw new UnsupportedOperationException("Operation not supported by SOAP 1.1");
+    }
+
+    public void setCharset(String charset) {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1",
+            new String[] { "Charset" });
+        throw new UnsupportedOperationException("Operation not supported by SOAP 1.1");
+    }
+
+    protected String getExpectedContentType() {
+        return isFastInfoset ? "application/fastinfoset" : "text/xml";
+    }
+
+   protected String getExpectedAcceptHeader() {
+       String accept = "text/xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2";
+       return acceptFastInfoset ? ("application/fastinfoset, " + accept) : accept;
+   }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPFactory1_1Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
+
+import javax.xml.soap.Detail;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPFault;
+
+import javax.xml.namespace.QName;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPFactoryImpl;
+
+public class SOAPFactory1_1Impl extends SOAPFactoryImpl {
+    protected SOAPDocumentImpl createDocument() {
+        return (new SOAPPart1_1Impl()).getDocument();
+    }
+
+    public Detail createDetail() throws SOAPException {
+        return new Detail1_1Impl(createDocument());
+    }
+
+    public SOAPFault createFault(String reasonText, QName faultCode)
+        throws SOAPException {
+        if (faultCode == null) {
+            throw new IllegalArgumentException("faultCode argument for createFault was passed NULL");
+        }
+        if (reasonText == null) {
+            throw new IllegalArgumentException("reasonText argument for createFault was passed NULL");
+        }
+        Fault1_1Impl fault = new Fault1_1Impl(createDocument(), null);
+        fault.setFaultCode(faultCode);
+        fault.setFaultString(reasonText);
+        return fault;
+    }
+
+    public SOAPFault createFault() throws SOAPException {
+        Fault1_1Impl fault = new Fault1_1Impl(createDocument(), null);
+        fault.setFaultCode(fault.getDefaultFaultCode());
+        fault.setFaultString("Fault string, and possibly fault code, not set");
+        return fault;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPMessageFactory1_1Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.xml.soap.*;
+
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+import com.sun.xml.internal.messaging.saaj.soap.MessageFactoryImpl;
+import com.sun.xml.internal.messaging.saaj.soap.MessageImpl;
+
+public class SOAPMessageFactory1_1Impl extends MessageFactoryImpl {
+
+    public SOAPMessage createMessage() throws SOAPException {
+        return new Message1_1Impl();
+    }
+
+    public SOAPMessage createMessage(boolean isFastInfoset,
+        boolean acceptFastInfoset) throws SOAPException
+    {
+        return new Message1_1Impl(isFastInfoset, acceptFastInfoset);
+    }
+
+    public SOAPMessage createMessage(MimeHeaders headers, InputStream in) throws IOException, SOAPExceptionImpl {
+
+        if (headers == null) {
+            headers = new MimeHeaders();
+        }
+
+        if (getContentType(headers) == null) {
+            headers.setHeader("Content-Type", SOAPConstants.SOAP_1_1_CONTENT_TYPE);
+        }
+
+        MessageImpl msg = new Message1_1Impl(headers, in);
+        msg.setLazyAttachments(lazyAttachments);
+        return msg;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPPart1_1Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_1;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.soap.SOAPConstants;
+import javax.xml.soap.SOAPException;
+import javax.xml.transform.Source;
+
+import com.sun.xml.internal.messaging.saaj.soap.*;
+import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl;
+import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
+import com.sun.xml.internal.messaging.saaj.util.XMLDeclarationParser;
+
+public class SOAPPart1_1Impl extends SOAPPartImpl implements SOAPConstants {
+
+    protected static final Logger log =
+        Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN,
+                         "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings");
+
+    public SOAPPart1_1Impl() {
+        super();
+     }
+
+    public SOAPPart1_1Impl(MessageImpl message) {
+        super(message);
+    }
+
+    protected String getContentType() {
+        return isFastInfoset() ? "application/fastinfoset" : "text/xml";
+    }
+
+    protected Envelope createEnvelopeFromSource() throws SOAPException {
+        // Record the presence of xml declaration before the envelope gets
+        // created.
+        XMLDeclarationParser parser = lookForXmlDecl();
+        Source tmp = source;
+        source = null;
+        EnvelopeImpl envelope =
+            (EnvelopeImpl) EnvelopeFactory.createEnvelope(tmp, this);
+
+        if (!envelope.getNamespaceURI().equals(SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE)) {
+            log.severe("SAAJ0304.ver1_1.msg.invalid.SOAP1.1");
+            throw new SOAPException("InputStream does not represent a valid SOAP 1.1 Message");
+        }
+
+        if (parser != null && !omitXmlDecl) {
+            envelope.setOmitXmlDecl("no");
+            envelope.setXmlDecl(parser.getXmlDeclaration());
+            envelope.setCharsetEncoding(parser.getEncoding());
+        }
+        return envelope;
+    }
+
+    protected Envelope createEmptyEnvelope(String prefix)
+        throws SOAPException {
+        return new Envelope1_1Impl(getDocument(), prefix, true, true);
+    }
+
+    protected SOAPPartImpl duplicateType() {
+        return new SOAPPart1_1Impl();
+    }
+
+    @Override
+    public String getSOAPNamespace() {
+        return SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Body1_2Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,197 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
+
+import java.util.logging.Logger;
+import java.util.Locale;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.*;
+
+import org.w3c.dom.Node;
+
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.BodyImpl;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+
+public class Body1_2Impl extends BodyImpl {
+
+    protected static final Logger log =
+        Logger.getLogger(Body1_2Impl.class.getName(),
+                         "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
+
+    public Body1_2Impl(SOAPDocumentImpl ownerDocument, String prefix) {
+            super(ownerDocument, NameImpl.createBody1_2Name(prefix));
+    }
+
+    protected NameImpl getFaultName(String name) {
+        return NameImpl.createFault1_2Name(name, null);
+    }
+
+    protected SOAPBodyElement createBodyElement(Name name) {
+        return new BodyElement1_2Impl(
+            ((SOAPDocument) getOwnerDocument()).getDocument(),
+            name);
+    }
+    protected SOAPBodyElement createBodyElement(QName name) {
+        return new BodyElement1_2Impl(
+            ((SOAPDocument) getOwnerDocument()).getDocument(),
+            name);
+    }
+
+    protected QName getDefaultFaultCode() {
+        return SOAPConstants.SOAP_RECEIVER_FAULT;
+    }
+
+    public SOAPFault addFault() throws SOAPException {
+        if (hasAnyChildElement()) {
+            log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body");
+            throw new SOAPExceptionImpl(
+                "No other element except Fault allowed in SOAPBody");
+        }
+        return super.addFault();
+    }
+
+    /*
+     * Override setEncodingStyle of ElementImpl to restrict adding encodingStyle
+     * attribute to SOAP Body (SOAP 1.2 spec, part 1, section 5.1.1)
+     */
+    public void setEncodingStyle(String encodingStyle) throws SOAPException {
+        log.severe("SAAJ0401.ver1_2.no.encodingstyle.in.body");
+        throw new SOAPExceptionImpl("encodingStyle attribute cannot appear on Body");
+    }
+
+    /*
+     * Override addAttribute of ElementImpl to restrict adding encodingStyle
+     * attribute to SOAP Body (SOAP 1.2 spec, part 1, section 5.1.1)
+     */
+    public SOAPElement addAttribute(Name name, String value)
+        throws SOAPException {
+        if (name.getLocalName().equals("encodingStyle")
+            && name.getURI().equals(NameImpl.SOAP12_NAMESPACE)) {
+
+            setEncodingStyle(value);
+        }
+        return super.addAttribute(name, value);
+    }
+
+    public SOAPElement addAttribute(QName name, String value)
+        throws SOAPException {
+        if (name.getLocalPart().equals("encodingStyle")
+            && name.getNamespaceURI().equals(NameImpl.SOAP12_NAMESPACE)) {
+
+            setEncodingStyle(value);
+        }
+        return super.addAttribute(name, value);
+    }
+
+    protected boolean isFault(SOAPElement child) {
+        return (child.getElementName().getURI().equals(
+                    SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE) &&
+                child.getElementName().getLocalName().equals(
+                    "Fault"));
+    }
+
+    protected SOAPFault createFaultElement() {
+        return new Fault1_2Impl(
+            ((SOAPDocument) getOwnerDocument()).getDocument(), getPrefix());
+    }
+
+    /*
+     * section 5.4 of SOAP1.2 candidate recommendation says that a
+     * SOAP message MUST contain a single Fault element as the only
+     * child element of the SOAP Body.
+     */
+    public SOAPBodyElement addBodyElement(Name name) throws SOAPException {
+        if (hasFault()) {
+            log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body");
+            throw new SOAPExceptionImpl(
+                "No other element except Fault allowed in SOAPBody");
+        }
+        return super.addBodyElement(name);
+    }
+
+    public SOAPBodyElement addBodyElement(QName name) throws SOAPException {
+        if (hasFault()) {
+            log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body");
+            throw new SOAPExceptionImpl(
+                "No other element except Fault allowed in SOAPBody");
+        }
+        return super.addBodyElement(name);
+    }
+
+    protected SOAPElement addElement(Name name) throws SOAPException {
+        if (hasFault()) {
+            log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body");
+            throw new SOAPExceptionImpl(
+                "No other element except Fault allowed in SOAPBody");
+        }
+        return super.addElement(name);
+    }
+
+    protected SOAPElement addElement(QName name) throws SOAPException {
+        if (hasFault()) {
+            log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body");
+            throw new SOAPExceptionImpl(
+                "No other element except Fault allowed in SOAPBody");
+        }
+        return super.addElement(name);
+    }
+
+    public SOAPElement addChildElement(Name name) throws SOAPException {
+        if (hasFault()) {
+            log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body");
+            throw new SOAPExceptionImpl(
+                "No other element except Fault allowed in SOAPBody");
+        }
+        return super.addChildElement(name);
+    }
+
+    public SOAPElement addChildElement(QName name) throws SOAPException {
+        if (hasFault()) {
+            log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body");
+            throw new SOAPExceptionImpl(
+                "No other element except Fault allowed in SOAPBody");
+        }
+        return super.addChildElement(name);
+    }
+
+    private boolean hasAnyChildElement() {
+        Node currentNode = getFirstChild();
+        while (currentNode != null) {
+            if (currentNode.getNodeType() == Node.ELEMENT_NODE)
+                return true;
+            currentNode = currentNode.getNextSibling();
+        }
+        return false;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/BodyElement1_2Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.Name;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPElement;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.BodyElementImpl;
+
+public class BodyElement1_2Impl extends BodyElementImpl {
+
+    public BodyElement1_2Impl(SOAPDocumentImpl ownerDoc, Name qname) {
+        super(ownerDoc, qname);
+    }
+
+    public BodyElement1_2Impl(SOAPDocumentImpl ownerDoc, QName qname) {
+        super(ownerDoc, qname);
+    }
+
+    public SOAPElement setElementQName(QName newName) throws SOAPException {
+        BodyElementImpl copy =
+            new BodyElement1_2Impl((SOAPDocumentImpl) getOwnerDocument(), newName);
+        return replaceElementWithSOAPElement(this,copy);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Detail1_2Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
+
+import java.util.logging.Logger;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.*;
+
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.DetailImpl;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+
+public class Detail1_2Impl extends DetailImpl {
+
+    protected static final Logger log =
+        Logger.getLogger(Detail1_2Impl.class.getName(),
+                         "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
+
+    public Detail1_2Impl(SOAPDocumentImpl ownerDocument, String prefix) {
+        super(ownerDocument, NameImpl.createSOAP12Name("Detail", prefix));
+    }
+
+    public Detail1_2Impl(SOAPDocumentImpl ownerDocument) {
+        super(ownerDocument, NameImpl.createSOAP12Name("Detail"));
+    }
+
+    protected DetailEntry createDetailEntry(Name name) {
+        return new DetailEntry1_2Impl(
+            ((SOAPDocument) getOwnerDocument()).getDocument(),
+            name);
+    }
+
+    protected DetailEntry createDetailEntry(QName name) {
+        return new DetailEntry1_2Impl(
+            ((SOAPDocument) getOwnerDocument()).getDocument(),
+            name);
+    }
+
+    /*
+     * Override setEncodingStyle of ElementImpl to restrict adding encodingStyle
+     * attribute to SOAP Detail (SOAP 1.2 spec, part 1, section 5.1.1)
+     */
+    public void setEncodingStyle(String encodingStyle) throws SOAPException {
+        log.severe("SAAJ0403.ver1_2.no.encodingStyle.in.detail");
+        throw new SOAPExceptionImpl("EncodingStyle attribute cannot appear in Detail");
+    }
+
+    public SOAPElement addAttribute(Name name, String value)
+        throws SOAPException {
+        if (name.getLocalName().equals("encodingStyle")
+            && name.getURI().equals(NameImpl.SOAP12_NAMESPACE)) {
+            setEncodingStyle(value);
+        }
+        return super.addAttribute(name, value);
+    }
+
+    public SOAPElement addAttribute(QName name, String value)
+        throws SOAPException {
+        if (name.getLocalPart().equals("encodingStyle")
+            && name.getNamespaceURI().equals(NameImpl.SOAP12_NAMESPACE)) {
+            setEncodingStyle(value);
+        }
+        return super.addAttribute(name, value);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/DetailEntry1_2Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.Name;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPElement;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.DetailEntryImpl;
+
+public class DetailEntry1_2Impl extends DetailEntryImpl {
+
+    public DetailEntry1_2Impl(SOAPDocumentImpl ownerDoc, Name qname) {
+        super(ownerDoc, qname);
+    }
+
+    public DetailEntry1_2Impl(SOAPDocumentImpl ownerDoc, QName qname) {
+        super(ownerDoc, qname);
+    }
+
+    public SOAPElement setElementQName(QName newName) throws SOAPException {
+        DetailEntryImpl copy =
+            new DetailEntry1_2Impl((SOAPDocumentImpl) getOwnerDocument(), newName);
+        return replaceElementWithSOAPElement(this,copy);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Envelope1_2Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,147 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
+
+import java.util.logging.Logger;
+import java.util.logging.Level;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.*;
+
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+
+public class Envelope1_2Impl extends EnvelopeImpl {
+
+    protected static final Logger log =
+        Logger.getLogger(Envelope1_2Impl.class.getName(),
+                         "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
+
+    public Envelope1_2Impl(SOAPDocumentImpl ownerDoc, String prefix) {
+        super(ownerDoc, NameImpl.createEnvelope1_2Name(prefix));
+    }
+
+    public Envelope1_2Impl(
+        SOAPDocumentImpl ownerDoc,
+        String prefix,
+        boolean createHeader,
+        boolean createBody)
+        throws SOAPException {
+        super(
+            ownerDoc,
+            NameImpl.createEnvelope1_2Name(prefix),
+            createHeader,
+            createBody);
+    }
+
+    protected NameImpl getBodyName(String prefix) {
+        return NameImpl.createBody1_2Name(prefix);
+    }
+
+    protected NameImpl getHeaderName(String prefix) {
+        return NameImpl.createHeader1_2Name(prefix);
+    }
+
+    /*
+     * Override setEncodingStyle of ElementImpl to restrict adding encodingStyle
+     * attribute to SOAP Envelope (SOAP 1.2 spec, part 1, section 5.1.1)
+     */
+    public void setEncodingStyle(String encodingStyle) throws SOAPException {
+        log.severe("SAAJ0404.ver1_2.no.encodingStyle.in.envelope");
+        throw new SOAPExceptionImpl("encodingStyle attribute cannot appear on Envelope");
+    }
+
+    /*
+     * Override addAttribute of ElementImpl to restrict adding encodingStyle
+     * attribute to SOAP Envelope (SOAP 1.2 spec, part 1, section 5.1.1)
+     */
+    public SOAPElement addAttribute(Name name, String value)
+        throws SOAPException {
+        if (name.getLocalName().equals("encodingStyle")
+            && name.getURI().equals(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE)) {
+            setEncodingStyle(value);
+        }
+        return super.addAttribute(name, value);
+    }
+
+    public SOAPElement addAttribute(QName name, String value)
+        throws SOAPException {
+        if (name.getLocalPart().equals("encodingStyle")
+            && name.getNamespaceURI().equals(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE)) {
+            setEncodingStyle(value);
+        }
+        return super.addAttribute(name, value);
+    }
+
+
+    /*
+     * Override addChildElement method to ensure that no element
+     * is added after body in SOAP 1.2.
+     */
+    public SOAPElement addChildElement(Name name) throws SOAPException {
+        // check if body already exists
+        if (getBody() != null) {
+            log.severe("SAAJ0405.ver1_2.body.must.last.in.envelope");
+            throw new SOAPExceptionImpl(
+                "Body must be the last element in" + " SOAP Envelope");
+        }
+        return super.addChildElement(name);
+    }
+
+    public SOAPElement addChildElement(QName name) throws SOAPException {
+        // check if body already exists
+        if (getBody() != null) {
+            log.severe("SAAJ0405.ver1_2.body.must.last.in.envelope");
+            throw new SOAPExceptionImpl(
+                "Body must be the last element in" + " SOAP Envelope");
+        }
+        return super.addChildElement(name);
+    }
+
+
+    /*
+     * Ideally we should be overriding other addChildElement() methods as well
+     * but we are not adding them here since internally all those call the
+     * method addChildElement(Name name).
+     * In future, if this behaviour changes, then we would need to override
+     * all the rest of them as well.
+     *
+     */
+
+    public SOAPElement addTextNode(String text) throws SOAPException {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0416.ver1_2.adding.text.not.legal",
+            getElementQName());
+        throw new SOAPExceptionImpl("Adding text to SOAP 1.2 Envelope is not legal");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Fault1_2Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,562 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
+
+import java.util.*;
+import java.util.logging.Logger;
+import java.util.logging.Level;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.*;
+
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.*;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
+
+
+public class Fault1_2Impl extends FaultImpl {
+
+    protected static final Logger log =
+        Logger.getLogger(
+            LogDomainConstants.SOAP_VER1_2_DOMAIN,
+            "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
+
+    private static final QName textName =
+        new QName(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE, "Text");
+    private final QName valueName =
+        new QName(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE, "Value", getPrefix());
+    private final QName subcodeName =
+        new QName(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE, "Subcode", getPrefix());
+
+    private SOAPElement innermostSubCodeElement = null;
+
+    public Fault1_2Impl(SOAPDocumentImpl ownerDoc, String name, String prefix) {
+        super(ownerDoc, NameImpl.createFault1_2Name(name, prefix));
+    }
+
+    public Fault1_2Impl(SOAPDocumentImpl ownerDocument, String prefix) {
+        super(ownerDocument, NameImpl.createFault1_2Name(null, prefix));
+    }
+
+    protected NameImpl getDetailName() {
+        return NameImpl.createSOAP12Name("Detail", getPrefix());
+    }
+
+    protected NameImpl getFaultCodeName() {
+        return NameImpl.createSOAP12Name("Code", getPrefix());
+    }
+
+    protected NameImpl getFaultStringName() {
+        return getFaultReasonName();
+    }
+
+    protected NameImpl getFaultActorName() {
+        return getFaultRoleName();
+    }
+
+    private  NameImpl getFaultRoleName() {
+        return NameImpl.createSOAP12Name("Role", getPrefix());
+    }
+
+    private  NameImpl getFaultReasonName() {
+        return NameImpl.createSOAP12Name("Reason", getPrefix());
+    }
+
+    private  NameImpl getFaultReasonTextName() {
+        return NameImpl.createSOAP12Name("Text", getPrefix());
+    }
+
+    private  NameImpl getFaultNodeName() {
+        return NameImpl.createSOAP12Name("Node", getPrefix());
+    }
+
+    private static NameImpl getXmlLangName() {
+        return NameImpl.createXmlName("lang");
+    }
+
+    protected DetailImpl createDetail() {
+        return new Detail1_2Impl(
+                       ((SOAPDocument) getOwnerDocument()).getDocument());
+    }
+
+    protected FaultElementImpl createSOAPFaultElement(String localName) {
+        return new FaultElement1_2Impl(
+                       ((SOAPDocument) getOwnerDocument()).getDocument(),
+                       localName);
+    }
+
+    protected void checkIfStandardFaultCode(String faultCode, String uri)
+        throws SOAPException {
+        QName qname = new QName(uri, faultCode);
+        if (SOAPConstants.SOAP_DATAENCODINGUNKNOWN_FAULT.equals(qname) ||
+            SOAPConstants.SOAP_MUSTUNDERSTAND_FAULT.equals(qname) ||
+            SOAPConstants.SOAP_RECEIVER_FAULT.equals(qname) ||
+            SOAPConstants.SOAP_SENDER_FAULT.equals(qname) ||
+            SOAPConstants.SOAP_VERSIONMISMATCH_FAULT.equals(qname))
+            return;
+        log.log(
+            Level.SEVERE,
+            "SAAJ0435.ver1_2.code.not.standard",
+            qname);
+        throw new SOAPExceptionImpl(qname + " is not a standard Code value");
+    }
+
+    protected void finallySetFaultCode(String faultcode) throws SOAPException {
+        SOAPElement value = this.faultCodeElement.addChildElement(valueName);
+        value.addTextNode(faultcode);
+    }
+
+    private void findReasonElement() {
+        findFaultStringElement();
+    }
+
+    public Iterator getFaultReasonTexts() throws SOAPException {
+        // Fault Reason has similar semantics as faultstring
+        if (this.faultStringElement == null)
+            findReasonElement();
+        Iterator eachTextElement =
+            this.faultStringElement.getChildElements(textName);
+        List texts = new ArrayList();
+        while (eachTextElement.hasNext()) {
+            SOAPElement textElement = (SOAPElement) eachTextElement.next();
+            Locale thisLocale = getLocale(textElement);
+            if (thisLocale == null) {
+                log.severe("SAAJ0431.ver1_2.xml.lang.missing");
+                throw new SOAPExceptionImpl("\"xml:lang\" attribute is not present on the Text element");
+            }
+            texts.add(textElement.getValue());
+        }
+        if (texts.isEmpty()) {
+            log.severe("SAAJ0434.ver1_2.text.element.not.present");
+            throw new SOAPExceptionImpl("env:Text must be present inside env:Reason");
+        }
+        return texts.iterator();
+    }
+
+    public void addFaultReasonText(String text, java.util.Locale locale)
+        throws SOAPException {
+
+        if (locale == null) {
+            log.severe("SAAJ0430.ver1_2.locale.required");
+            throw new SOAPException("locale is required and must not be null");
+        }
+
+        // Fault Reason has similar semantics as faultstring
+        if (this.faultStringElement == null)
+            findReasonElement();
+        SOAPElement reasonText;
+
+        if (this.faultStringElement == null) {
+            this.faultStringElement = addSOAPFaultElement("Reason");
+            reasonText =
+                this.faultStringElement.addChildElement(
+                    getFaultReasonTextName());
+        } else {
+            removeDefaultFaultString();
+            reasonText = getFaultReasonTextElement(locale);
+            if (reasonText != null) {
+                reasonText.removeContents();
+            } else {
+                reasonText =
+                    this.faultStringElement.addChildElement(
+                        getFaultReasonTextName());
+            }
+        }
+
+        String xmlLang = localeToXmlLang(locale);
+        reasonText.addAttribute(getXmlLangName(), xmlLang);
+        reasonText.addTextNode(text);
+    }
+
+    private void removeDefaultFaultString() throws SOAPException {
+        SOAPElement reasonText = getFaultReasonTextElement(Locale.getDefault());
+        if (reasonText != null) {
+            String defaultFaultString =
+                "Fault string, and possibly fault code, not set";
+            if (defaultFaultString.equals(reasonText.getValue())) {
+                reasonText.detachNode();
+            }
+        }
+    }
+
+    public String getFaultReasonText(Locale locale) throws SOAPException {
+
+        if (locale == null)
+            return null;
+
+        // Fault Reason has similar semantics as faultstring
+        if (this.faultStringElement == null)
+            findReasonElement();
+
+        if (this.faultStringElement != null) {
+            SOAPElement textElement = getFaultReasonTextElement(locale);
+            if (textElement != null) {
+                textElement.normalize();
+                return textElement.getFirstChild().getNodeValue();
+            }
+        }
+
+        return null;
+    }
+
+    public Iterator getFaultReasonLocales() throws SOAPException {
+        // Fault Reason has similar semantics as faultstring
+        if (this.faultStringElement == null)
+            findReasonElement();
+        Iterator eachTextElement =
+            this.faultStringElement.getChildElements(textName);
+        List localeSet = new ArrayList();
+        while (eachTextElement.hasNext()) {
+            SOAPElement textElement = (SOAPElement) eachTextElement.next();
+            Locale thisLocale = getLocale(textElement);
+            if (thisLocale == null) {
+                log.severe("SAAJ0431.ver1_2.xml.lang.missing");
+                throw new SOAPExceptionImpl("\"xml:lang\" attribute is not present on the Text element");
+            }
+            localeSet.add(thisLocale);
+        }
+        if (localeSet.isEmpty()) {
+            log.severe("SAAJ0434.ver1_2.text.element.not.present");
+            throw new SOAPExceptionImpl("env:Text elements with mandatory xml:lang attributes must be present inside env:Reason");
+        }
+        return localeSet.iterator();
+    }
+
+    public Locale getFaultStringLocale() {
+        Locale locale = null;
+        try {
+            locale = (Locale) getFaultReasonLocales().next();
+        } catch (SOAPException e) {}
+        return locale;
+    }
+
+    /*
+     * This method assumes that locale and faultStringElement are non-null
+     */
+    private SOAPElement getFaultReasonTextElement(Locale locale)
+        throws SOAPException {
+
+        // Fault Reason has similar semantics as faultstring
+        Iterator eachTextElement =
+            this.faultStringElement.getChildElements(textName);
+        while (eachTextElement.hasNext()) {
+            SOAPElement textElement = (SOAPElement) eachTextElement.next();
+            Locale thisLocale = getLocale(textElement);
+            if (thisLocale == null) {
+                log.severe("SAAJ0431.ver1_2.xml.lang.missing");
+                throw new SOAPExceptionImpl("\"xml:lang\" attribute is not present on the Text element");
+            }
+            if (thisLocale.equals(locale)) {
+                return textElement;
+            }
+        }
+        return null;
+    }
+
+    public String getFaultNode() {
+        SOAPElement faultNode = findAndConvertChildElement(getFaultNodeName());
+        if (faultNode == null) {
+            return null;
+        }
+        return faultNode.getValue();
+    }
+
+    public void setFaultNode(String uri) throws SOAPException {
+        SOAPElement faultNode = findAndConvertChildElement(getFaultNodeName());
+        if (faultNode != null) {
+            faultNode.detachNode();
+        }
+        faultNode = createSOAPFaultElement(getFaultNodeName());
+        faultNode = faultNode.addTextNode(uri);
+        if (getFaultRole() != null) {
+            insertBefore(faultNode, this.faultActorElement);
+            return;
+        }
+        if (hasDetail()) {
+            insertBefore(faultNode, this.detail);
+            return;
+        }
+        addNode(faultNode);
+    }
+
+    public String getFaultRole() {
+        return getFaultActor();
+    }
+
+    public void setFaultRole(String uri) throws SOAPException {
+        if (this.faultActorElement == null)
+            findFaultActorElement();
+        if (this.faultActorElement != null)
+            this.faultActorElement.detachNode();
+        this.faultActorElement =
+            createSOAPFaultElement(getFaultActorName());
+        this.faultActorElement.addTextNode(uri);
+        if (hasDetail()) {
+            insertBefore(this.faultActorElement, this.detail);
+            return;
+        }
+        addNode(this.faultActorElement);
+    }
+
+    public String getFaultCode() {
+        if (this.faultCodeElement == null)
+            findFaultCodeElement();
+        Iterator codeValues =
+            this.faultCodeElement.getChildElements(valueName);
+        return ((SOAPElement) codeValues.next()).getValue();
+    }
+
+    public QName getFaultCodeAsQName() {
+        String faultcode = getFaultCode();
+        if (faultcode == null) {
+            return null;
+        }
+        if (this.faultCodeElement == null)
+            findFaultCodeElement();
+        Iterator valueElements =
+            this.faultCodeElement.getChildElements(valueName);
+        return convertCodeToQName(
+            faultcode,
+            (SOAPElement) valueElements.next());
+    }
+
+    public Name getFaultCodeAsName() {
+        String faultcode = getFaultCode();
+        if (faultcode == null) {
+            return null;
+        }
+        if (this.faultCodeElement == null)
+            findFaultCodeElement();
+        Iterator valueElements =
+            this.faultCodeElement.getChildElements(valueName);
+        return NameImpl.convertToName(
+            convertCodeToQName(
+                faultcode,
+                (SOAPElement) valueElements.next()));
+    }
+
+    public String getFaultString() {
+        String reason = null;
+        try {
+            //reason = getFaultReasonText(Locale.getDefault());
+            //if (reason == null)
+            reason = (String) getFaultReasonTexts().next();
+        } catch (SOAPException e) {}
+        return reason;
+    }
+
+    public void setFaultString(String faultString) throws SOAPException {
+        addFaultReasonText(faultString, Locale.getDefault());
+    }
+
+    public void setFaultString(
+        String faultString,
+        Locale locale)
+        throws SOAPException {
+        addFaultReasonText(faultString, locale);
+    }
+
+    public void appendFaultSubcode(QName subcode) throws SOAPException {
+        if (subcode == null) {
+            return;
+        }
+        if (subcode.getNamespaceURI() == null ||
+            "".equals(subcode.getNamespaceURI())) {
+
+            log.severe("SAAJ0432.ver1_2.subcode.not.ns.qualified");
+            throw new SOAPExceptionImpl("A Subcode must be namespace-qualified");
+        }
+        if (innermostSubCodeElement == null) {
+            if (faultCodeElement == null)
+                findFaultCodeElement();
+            innermostSubCodeElement = faultCodeElement;
+        }
+        String prefix = null;
+        if (subcode.getPrefix() == null || "".equals(subcode.getPrefix())) {
+            prefix =
+                ((ElementImpl) innermostSubCodeElement).getNamespacePrefix(
+                    subcode.getNamespaceURI());
+        } else
+            prefix = subcode.getPrefix();
+        if (prefix == null || "".equals(prefix)) {
+            prefix = "ns1";
+        }
+        innermostSubCodeElement =
+            innermostSubCodeElement.addChildElement(subcodeName);
+        SOAPElement subcodeValueElement =
+            innermostSubCodeElement.addChildElement(valueName);
+        ((ElementImpl) subcodeValueElement).ensureNamespaceIsDeclared(
+            prefix,
+            subcode.getNamespaceURI());
+        subcodeValueElement.addTextNode(prefix + ":" + subcode.getLocalPart());
+    }
+
+    public void removeAllFaultSubcodes() {
+        if (this.faultCodeElement == null)
+            findFaultCodeElement();
+        Iterator subcodeElements =
+            this.faultCodeElement.getChildElements(subcodeName);
+        if (subcodeElements.hasNext()) {
+            SOAPElement subcode = (SOAPElement) subcodeElements.next();
+            subcode.detachNode();
+        }
+    }
+
+    public Iterator getFaultSubcodes() {
+        if (this.faultCodeElement == null)
+            findFaultCodeElement();
+        final List subcodeList = new ArrayList();
+        SOAPElement currentCodeElement = this.faultCodeElement;
+        Iterator subcodeElements =
+            currentCodeElement.getChildElements(subcodeName);
+        while (subcodeElements.hasNext()) {
+            currentCodeElement = (ElementImpl) subcodeElements.next();
+            Iterator valueElements =
+                currentCodeElement.getChildElements(valueName);
+            SOAPElement valueElement = (SOAPElement) valueElements.next();
+            String code = valueElement.getValue();
+            subcodeList.add(convertCodeToQName(code, valueElement));
+            subcodeElements = currentCodeElement.getChildElements(subcodeName);
+        }
+        //return subcodeList.iterator();
+        return new Iterator() {
+            Iterator subCodeIter = subcodeList.iterator();
+
+            public boolean hasNext() {
+                return subCodeIter.hasNext();
+            }
+
+            public Object next() {
+                return subCodeIter.next();
+            }
+
+            public void remove() {
+                throw new UnsupportedOperationException(
+                    "Method remove() not supported on SubCodes Iterator");
+            }
+        };
+    }
+
+    private static Locale getLocale(SOAPElement reasonText) {
+        return xmlLangToLocale(reasonText.getAttributeValue(getXmlLangName()));
+    }
+
+    /*
+     * Override setEncodingStyle of ElementImpl to restrict adding encodingStyle
+     * attribute to SOAP Fault (SOAP 1.2 spec, part 1, section 5.1.1)
+     */
+    public void setEncodingStyle(String encodingStyle) throws SOAPException {
+        log.severe("SAAJ0407.ver1_2.no.encodingStyle.in.fault");
+        throw new SOAPExceptionImpl("encodingStyle attribute cannot appear on Fault");
+    }
+
+    public SOAPElement addAttribute(Name name, String value)
+        throws SOAPException {
+        if (name.getLocalName().equals("encodingStyle")
+            && name.getURI().equals(NameImpl.SOAP12_NAMESPACE)) {
+            setEncodingStyle(value);
+        }
+        return super.addAttribute(name, value);
+    }
+
+    public SOAPElement addAttribute(QName name, String value)
+        throws SOAPException {
+        if (name.getLocalPart().equals("encodingStyle")
+            && name.getNamespaceURI().equals(NameImpl.SOAP12_NAMESPACE)) {
+            setEncodingStyle(value);
+        }
+        return super.addAttribute(name, value);
+    }
+
+    public SOAPElement addTextNode(String text) throws SOAPException {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0416.ver1_2.adding.text.not.legal",
+            getElementQName());
+        throw new SOAPExceptionImpl("Adding text to SOAP 1.2 Fault is not legal");
+    }
+
+    public SOAPElement addChildElement(SOAPElement element)
+        throws SOAPException {
+        String localName = element.getLocalName();
+        if ("Detail".equalsIgnoreCase(localName)) {
+            if (hasDetail()) {
+                log.severe("SAAJ0436.ver1_2.detail.exists.error");
+                throw new SOAPExceptionImpl("Cannot add Detail, Detail already exists");
+            }
+            String uri = element.getElementQName().getNamespaceURI();
+            if (!uri.equals(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE)) {
+                log.severe("SAAJ0437.ver1_2.version.mismatch.error");
+                throw new SOAPExceptionImpl("Cannot add Detail, Incorrect SOAP version specified for Detail element");
+            }
+        }
+        if (element instanceof Detail1_2Impl) {
+            ElementImpl importedElement = (ElementImpl) importElement(element);
+            addNode(importedElement);
+            return convertToSoapElement(importedElement);
+        } else
+            return super.addChildElement(element);
+    }
+
+    protected boolean isStandardFaultElement(String localName) {
+        if (localName.equalsIgnoreCase("code") ||
+            localName.equalsIgnoreCase("reason") ||
+            localName.equalsIgnoreCase("node") ||
+            localName.equalsIgnoreCase("role") ||
+            localName.equalsIgnoreCase("detail")) {
+            return true;
+        }
+        return false;
+    }
+
+    protected QName getDefaultFaultCode() {
+        return SOAPConstants.SOAP_SENDER_FAULT;
+    }
+
+     protected FaultElementImpl createSOAPFaultElement(QName qname) {
+         return new FaultElement1_2Impl(
+                       ((SOAPDocument) getOwnerDocument()).getDocument(),
+                       qname);
+    }
+
+    protected FaultElementImpl createSOAPFaultElement(Name qname) {
+         return new FaultElement1_2Impl(
+                       ((SOAPDocument) getOwnerDocument()).getDocument(),
+                       (NameImpl)qname);
+    }
+
+     public void setFaultActor(String faultActor) throws SOAPException {
+        this.setFaultRole(faultActor);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/FaultElement1_2Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.Name;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.FaultElementImpl;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+
+public class FaultElement1_2Impl extends FaultElementImpl {
+
+    public FaultElement1_2Impl(SOAPDocumentImpl ownerDoc, NameImpl qname) {
+        super(ownerDoc, qname);
+    }
+
+    public FaultElement1_2Impl(SOAPDocumentImpl ownerDoc, QName qname) {
+        super(ownerDoc, qname);
+    }
+
+    public FaultElement1_2Impl(SOAPDocumentImpl ownerDoc, String localName) {
+        super(ownerDoc, NameImpl.createSOAP12Name(localName));
+    }
+
+    protected boolean isStandardFaultElement() {
+        String localName = elementQName.getLocalPart();
+        if (localName.equalsIgnoreCase("code") ||
+            localName.equalsIgnoreCase("reason") ||
+            localName.equalsIgnoreCase("node") ||
+            localName.equalsIgnoreCase("role")) {
+            return true;
+        }
+        return false;
+    }
+
+    public SOAPElement setElementQName(QName newName) throws SOAPException {
+        if (!isStandardFaultElement()) {
+            FaultElement1_2Impl copy =
+                new FaultElement1_2Impl((SOAPDocumentImpl) getOwnerDocument(), newName);
+            return replaceElementWithSOAPElement(this,copy);
+        } else {
+            return super.setElementQName(newName);
+        }
+    }
+
+    public void setEncodingStyle(String encodingStyle) throws SOAPException {
+        log.severe("SAAJ0408.ver1_2.no.encodingStyle.in.fault.child");
+        throw new SOAPExceptionImpl("encodingStyle attribute cannot appear on a Fault child element");
+    }
+
+    public SOAPElement addAttribute(Name name, String value)
+        throws SOAPException {
+        if (name.getLocalName().equals("encodingStyle")
+            && name.getURI().equals(NameImpl.SOAP12_NAMESPACE)) {
+            setEncodingStyle(value);
+        }
+        return super.addAttribute(name, value);
+    }
+
+    public SOAPElement addAttribute(QName name, String value)
+        throws SOAPException {
+        if (name.getLocalPart().equals("encodingStyle")
+            && name.getNamespaceURI().equals(NameImpl.SOAP12_NAMESPACE)) {
+            setEncodingStyle(value);
+        }
+        return super.addAttribute(name, value);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Header1_2Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,159 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
+
+import java.util.List;
+import java.util.Iterator;
+import java.util.logging.Logger;
+import java.util.logging.Level;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.*;
+
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.HeaderElementImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.HeaderImpl;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
+
+
+public class Header1_2Impl extends HeaderImpl {
+
+    protected static final Logger log =
+        Logger.getLogger(
+            LogDomainConstants.SOAP_VER1_2_DOMAIN,
+            "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
+
+    public Header1_2Impl(SOAPDocumentImpl ownerDocument, String prefix) {
+        super(ownerDocument, NameImpl.createHeader1_2Name(prefix));
+    }
+
+    protected NameImpl getNotUnderstoodName() {
+        return NameImpl.createNotUnderstood1_2Name(null);
+    }
+
+    protected NameImpl getUpgradeName() {
+        return NameImpl.createUpgrade1_2Name(null);
+    }
+
+    protected NameImpl getSupportedEnvelopeName() {
+        return NameImpl.createSupportedEnvelope1_2Name(null);
+    }
+
+    public SOAPHeaderElement addNotUnderstoodHeaderElement(final QName sourceName)
+        throws SOAPException {
+
+        if (sourceName == null) {
+            log.severe("SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader");
+            throw new SOAPException("Cannot pass NULL to addNotUnderstoodHeaderElement");
+        }
+        if ("".equals(sourceName.getNamespaceURI())) {
+            log.severe("SAAJ0417.ver1_2.qname.not.ns.qualified");
+            throw new SOAPException("The qname passed to addNotUnderstoodHeaderElement must be namespace-qualified");
+        }
+        String prefix = sourceName.getPrefix();
+        if ("".equals(prefix)) {
+            prefix = "ns1";
+        }
+        Name notunderstoodName = getNotUnderstoodName();
+        SOAPHeaderElement notunderstoodHeaderElement =
+            (SOAPHeaderElement) addChildElement(notunderstoodName);
+        notunderstoodHeaderElement.addAttribute(
+            NameImpl.createFromUnqualifiedName("qname"),
+            getQualifiedName(
+                new QName(
+                    sourceName.getNamespaceURI(),
+                    sourceName.getLocalPart(),
+                    prefix)));
+        notunderstoodHeaderElement.addNamespaceDeclaration(
+            prefix,
+            sourceName.getNamespaceURI());
+        return notunderstoodHeaderElement;
+    }
+
+    public SOAPElement addTextNode(String text) throws SOAPException {
+        log.log(
+            Level.SEVERE,
+            "SAAJ0416.ver1_2.adding.text.not.legal",
+            getElementQName());
+        throw new SOAPExceptionImpl("Adding text to SOAP 1.2 Header is not legal");
+    }
+
+    protected SOAPHeaderElement createHeaderElement(Name name)
+        throws SOAPException {
+        String uri = name.getURI();
+        if (uri == null || uri.equals("")) {
+            log.severe("SAAJ0413.ver1_2.header.elems.must.be.ns.qualified");
+            throw new SOAPExceptionImpl("SOAP 1.2 header elements must be namespace qualified");
+        }
+        return new HeaderElement1_2Impl(
+            ((SOAPDocument) getOwnerDocument()).getDocument(),
+            name);
+    }
+
+    protected SOAPHeaderElement createHeaderElement(QName name)
+        throws SOAPException {
+        String uri = name.getNamespaceURI();
+        if (uri == null || uri.equals("")) {
+            log.severe("SAAJ0413.ver1_2.header.elems.must.be.ns.qualified");
+            throw new SOAPExceptionImpl("SOAP 1.2 header elements must be namespace qualified");
+        }
+        return new HeaderElement1_2Impl(
+            ((SOAPDocument) getOwnerDocument()).getDocument(),
+            name);
+    }
+
+    public void setEncodingStyle(String encodingStyle) throws SOAPException {
+        log.severe("SAAJ0409.ver1_2.no.encodingstyle.in.header");
+        throw new SOAPExceptionImpl("encodingStyle attribute cannot appear on Header");
+    }
+
+    public SOAPElement addAttribute(Name name, String value)
+        throws SOAPException {
+        if (name.getLocalName().equals("encodingStyle")
+            && name.getURI().equals(NameImpl.SOAP12_NAMESPACE)) {
+
+            setEncodingStyle(value);
+        }
+        return super.addAttribute(name, value);
+    }
+
+    public SOAPElement addAttribute(QName name, String value)
+        throws SOAPException {
+        if (name.getLocalPart().equals("encodingStyle")
+            && name.getNamespaceURI().equals(NameImpl.SOAP12_NAMESPACE)) {
+
+            setEncodingStyle(value);
+        }
+        return super.addAttribute(name, value);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/HeaderElement1_2Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
+
+import java.util.logging.Logger;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.Name;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPException;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.HeaderElementImpl;
+import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
+
+public class HeaderElement1_2Impl extends HeaderElementImpl {
+
+    private static final Logger log =
+        Logger.getLogger(HeaderElement1_2Impl.class.getName(),
+                         "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
+
+    public HeaderElement1_2Impl(SOAPDocumentImpl ownerDoc, Name qname) {
+        super(ownerDoc, qname);
+    }
+    public HeaderElement1_2Impl(SOAPDocumentImpl ownerDoc, QName qname) {
+        super(ownerDoc, qname);
+    }
+
+    public SOAPElement setElementQName(QName newName) throws SOAPException {
+        HeaderElementImpl copy =
+            new HeaderElement1_2Impl((SOAPDocumentImpl)getOwnerDocument(), newName);
+        return replaceElementWithSOAPElement(this,copy);
+    }
+
+    protected NameImpl getRoleAttributeName() {
+        return NameImpl.create("role", null, NameImpl.SOAP12_NAMESPACE);
+    }
+
+    // Actor equivalent to Role in SOAP 1.2
+    protected NameImpl getActorAttributeName() {
+        return getRoleAttributeName();
+    }
+
+    protected NameImpl getMustunderstandAttributeName() {
+        return NameImpl.create("mustUnderstand", null, NameImpl.SOAP12_NAMESPACE);
+    }
+
+    // mustUnderstand attribute has literal value "true" or "false"
+    protected String getMustunderstandLiteralValue(boolean mustUnderstand) {
+        return (mustUnderstand == true ? "true" : "false");
+    }
+
+    protected boolean getMustunderstandAttributeValue(String mu) {
+        if (mu.equals("true") || mu.equals("1"))
+            return true;
+        return false;
+    }
+
+   protected NameImpl getRelayAttributeName() {
+        return NameImpl.create("relay", null, NameImpl.SOAP12_NAMESPACE);
+    }
+
+    //relay attribute has literal value "true" or "false"
+    protected String getRelayLiteralValue(boolean relay) {
+        return (relay == true ? "true" : "false");
+    }
+
+    protected boolean getRelayAttributeValue(String relay) {
+        if (relay.equals("true") || relay.equals("1"))
+            return true;
+        return false;
+    }
+
+    protected String getActorOrRole() {
+        return getRole();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,56 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for ver1_2 pkg
+
+SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: encodingStyle attribute cannot appear on Body
+SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: No other element except Fault allowed in SOAPBody
+SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: encodingStyle attribute cannot appear on Detail
+SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: encodingStyle attribute cannot appear on Envelope
+SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: Body must be last element in SOAPEnvelope
+SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope cannot contain anything other than Header and Body
+SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: encodingStyle attribute cannot appear on Fault
+SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: encodingStyle attribute cannot appear on a Fault child element
+SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: encodingStyle attribute cannot appear on Header
+SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: Cannot pass NULL to addNotUnderstoodHeaderElement
+SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: Argument cannot be null; supportedURIs cannot be null
+SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: List of supported URIs cannot be empty
+SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2 header elements must be namespace qualified
+#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2
+SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream does not represent a valid SOAP 1.2 Message
+# {0} - element qname
+SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: Adding text to {0} is not legal
+SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: The QName passed to addNotUnderstoodHeaderElement must be namespace-qualified
+
+#SOAPFault related errors
+SAAJ0430.ver1_2.locale.required=SAAJ0430: locale is required and must not be null
+SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: "xml:lang" attribute is not present on the Text element
+SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: A Subcode must be namespace-qualified
+#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0}
+SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text must be present inside env:Reason
+SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} is not a standard Code value
+SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: Cannot add Detail, Detail already exists
+SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Incorrect SOAP version for Detail element, expected SOAP 1.2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_de.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,56 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for ver1_2 pkg
+
+SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: encodingStyle-Attribut darf nicht in Nachrichtentext enthalten sein
+SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: Kein anderes Element au\u00DFer Fault in SOAPBody zul\u00E4ssig
+SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: encodingStyle-Attribut darf nicht in Detail enthalten sein
+SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: encodingStyle-Attribut darf nicht in Envelope enthalten sein
+SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: "Body" muss letztes Element in SOAPEnvelope sein
+SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope darf nur "Header" und "Body" enthalten
+SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: encodingStyle-Attribut darf nicht in Fault enthalten sein
+SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: encodingStyle-Attribut darf nicht in einem untergeordneten "Fault"-Element enthalten sein
+SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: encodingStyle-Attribut darf nicht in "Header" enthalten sein
+SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: NULL kann nicht an addNotUnderstoodHeaderElement \u00FCbergeben werden
+SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: Argument darf nicht null sein; supportedURIs d\u00FCrfen nicht null sein
+SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: Liste der unterst\u00FCtzten URIs darf nicht leer sein
+SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2 Header-Elemente m\u00FCssen namespace-f\u00E4hig sein
+#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2
+SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream stellt keine g\u00FCltige SOAP 1.2-Nachricht dar
+# {0} - element qname
+SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: Hinzuf\u00FCgen von Text zu {0} ist nicht zul\u00E4ssig
+SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: Der QName, der an addNotUnderstoodHeaderElement \u00FCbergeben wird, muss namespace-f\u00E4hig sein
+
+#SOAPFault related errors
+SAAJ0430.ver1_2.locale.required=SAAJ0430: Gebietsschema ist erforderlich und darf nicht null sein
+SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: "xml:lang"-Attribut ist in "Text"-Element nicht vorhanden
+SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: Ein Subcode muss namespace-f\u00E4hig sein
+#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0}
+SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text muss innerhalb von env:Reason vorhanden sein
+SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} ist kein Standardcodewert
+SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: Detail kann nicht hinzugef\u00FCgt werden, Detail ist bereits vorhanden
+SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Falsche SOAP-Version f\u00FCr Detail-Element, SOAP 1.2 erwartet
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_es.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,56 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for ver1_2 pkg
+
+SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: el atributo encodingStyle no puede aparecer en el cuerpo
+SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: no se permite ning\u00FAn otro elemento, aparte de Fault, en SOAPBody
+SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: el atributo encodingStyle no puede aparecer en Detail
+SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: el atributo encodingStyle no puede aparecer en Envelope
+SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: el cuerpo debe ser el \u00FAltimo elemento en SOAPEnvelope
+SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: el elemento Envelope no puede contener nada que no sea Header y Body
+SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: el atributo encodingStyle no puede aparecer en Fault
+SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: el atributo encodingStyle no puede aparecer en un elemento secundario Fault
+SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: el atributo encodingStyle no puede aparecer en Header
+SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: no se puede transferir NULL a addNotUnderstoodHeaderElement
+SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: el argumento no puede ser nulo y las URI soportadas no pueden ser nulas
+SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: la lista de URI soportadas no puede estar vac\u00EDa
+SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: los elementos de la cabecera de SOAP 1.2 deben estar cualificados por espacio de nombres
+#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2
+SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream no representa un mensaje de SOAP 1.2 v\u00E1lido
+# {0} - element qname
+SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: no es v\u00E1lido agregar texto a {0}
+SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: el QName que se ha transferido a addNotUnderstoodHeaderElement debe estar cualificado por espacio de nombres
+
+#SOAPFault related errors
+SAAJ0430.ver1_2.locale.required=SAAJ0430: la configuraci\u00F3n regional es necesaria y no debe ser nula
+SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: el atributo "xml:lang" no se encuentra en el elemento de texto
+SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: el subc\u00F3digo debe estar cualificado por espacio de nombres
+#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0}
+SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:text debe encontrarse dentro de env:Reason
+SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} no es un valor de c\u00F3digo est\u00E1ndar
+SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: no se puede agregar el detalle. El detalle ya existe
+SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: versi\u00F3n de SOAP incorrecta para el elemento Detail; se esperaba SOAP 1.2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_fr.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,56 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for ver1_2 pkg
+
+SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur l'\u00E9l\u00E9ment Body
+SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402 : aucun autre \u00E9l\u00E9ment que Fault n'est autoris\u00E9 dans SOAPBody
+SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur l'\u00E9l\u00E9ment Detail
+SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur l'\u00E9l\u00E9ment Envelope
+SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405 : Body doit \u00EAtre le dernier \u00E9l\u00E9ment de SOAPEnvelope
+SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406 : Envelope peut contenir uniquement les \u00E9l\u00E9ments Header et Body
+SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur l'\u00E9l\u00E9ment Fault
+SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur un \u00E9l\u00E9ment enfant Fault
+SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur l'\u00E9l\u00E9ment Header
+SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410 : impossible de transmettre la valeur NULL \u00E0 addNotUnderstoodHeaderElement
+SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411 : l'argument ne peut pas \u00EAtre NULL, supportedURIs ne peut pas \u00EAtre NULL
+SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412 : la liste des URI pris en charge ne peut pas \u00EAtre vide
+SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413 : les \u00E9l\u00E9ments d'en-t\u00EAte SOAP 1.2 ne doivent pas \u00EAtre un espace de noms qualifi\u00E9
+#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2
+SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415 : InputStream ne repr\u00E9sente pas un message SOAP 1.2 valide
+# {0} - element qname
+SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416 : l''ajout de texte \u00E0 {0} est interdit
+SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417 : le QName transmis \u00E0 addNotUnderstoodHeaderElement doit \u00EAtre un espace de noms qualifi\u00E9
+
+#SOAPFault related errors
+SAAJ0430.ver1_2.locale.required=SAAJ0430 : l'environnement local est requis et ne doit pas \u00EAtre NULL
+SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431 : l'attribut "xml:lang" ne figure pas sur l'\u00E9l\u00E9ment Text
+SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432 : un sous-code doit \u00EAtre un espace de noms qualifi\u00E9
+#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0}
+SAAJ0434.ver1_2.text.element.not.present=SAAJ0434 : env:Text doit \u00EAtre pr\u00E9sent dans env:Reason
+SAAJ0435.ver1_2.code.not.standard=SAAJ0435 : {0} n''est pas une valeur Code standard
+SAAJ0436.ver1_2.detail.exists.error=SAAJ0436 : impossible d'ajouter l'\u00E9l\u00E9ment Detail, il existe d\u00E9j\u00E0
+SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437 : version SOAP incorrecte pour l'\u00E9l\u00E9ment Detail, SOAP 1.2 attendu
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_it.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,56 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for ver1_2 pkg
+
+SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: l'attributo encodingStyle non pu\u00F2 essere presente in Body
+SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: In SOAPBody non sono consentiti elementi diversi da Fault
+SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: l'attributo encodingStyle non pu\u00F2 essere presente in Detail
+SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: l'attributo encodingStyle non pu\u00F2 essere presente in Envelope
+SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: Body deve essere l'ultimo elemento in SOAPEnvelope
+SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope non pu\u00F2 contenere elementi diversi da Header e Body
+SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: l'attributo encodingStyle non pu\u00F2 essere presente in Fault
+SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: l'attributo encodingStyle non pu\u00F2 essere presente in un elemento figlio di Fault
+SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: l'attributo encodingStyle non pu\u00F2 essere presente in Header
+SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: Impossibile passare NULL a addNotUnderstoodHeaderElement
+SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: L'argomento non pu\u00F2 essere nullo. Gli URI supportati non possono essere nulli
+SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: La lista di URI supportati non pu\u00F2 essere vuota
+SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: Gli elementi dell'intestazione SOAP 1.2 devono essere qualificati per lo spazio di nomi
+#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2
+SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream non rappresenta un messaggio SOAP 1.2 valido
+# {0} - element qname
+SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: L''aggiunta di testo a {0} non \u00E8 valida
+SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: Il QName passato a addNotUnderstoodHeaderElement deve essere qualificato per lo spazio di nomi
+
+#SOAPFault related errors
+SAAJ0430.ver1_2.locale.required=SAAJ0430: Le impostazioni nazionali sono obbligatorie e non devono essere nulle
+SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: L'attributo "xml:lang" non \u00E8 presente nell'elemento Text
+SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: Un codice secondario deve essere qualificato per lo spazio di nomi
+#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0}
+SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text deve essere presente in env:Reason
+SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} non \u00E8 un valore di codice standard
+SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: Impossibile aggiungere Detail. Detail esiste gi\u00E0.
+SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Versione SOAP errata per l'elemento Detail. Prevista SOAP 1.2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_ja.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,56 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for ver1_2 pkg
+
+SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: encodingStyle\u5C5E\u6027\u3092Body\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: Fault\u4EE5\u5916\u306E\u4ED6\u306E\u8981\u7D20\u306FSOAPBody\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
+SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: encodingStyle\u5C5E\u6027\u3092Detail\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: encodingStyle\u5C5E\u6027\u3092Envelope\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: Body\u306FSOAPEnvelope\u306E\u6700\u5F8C\u306E\u8981\u7D20\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope\u306BHeader\u304A\u3088\u3073Body\u4EE5\u5916\u306E\u3082\u306E\u3092\u542B\u3081\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: encodingStyle\u5C5E\u6027\u3092Fault\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: encodingStyle\u5C5E\u6027\u3092Fault\u5B50\u8981\u7D20\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: encodingStyle\u5C5E\u6027\u3092Header\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: NULL\u3092addNotUnderstoodHeaderElement\u306B\u6E21\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: \u5F15\u6570\u306Fnull\u306B\u3067\u304D\u307E\u305B\u3093\u3002supportedURIs\u306Fnull\u306B\u3067\u304D\u307E\u305B\u3093
+SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: \u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308BURI\u306E\u30EA\u30B9\u30C8\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093
+SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2\u306E\u30D8\u30C3\u30C0\u30FC\u8981\u7D20\u306F\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u3067\u4FEE\u98FE\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2
+SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream\u306F\u6709\u52B9\u306ASOAP 1.2\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u3057\u3066\u3044\u307E\u305B\u3093
+# {0} - element qname
+SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: {0}\u3078\u306E\u30C6\u30AD\u30B9\u30C8\u306E\u8FFD\u52A0\u306F\u6709\u52B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093
+SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: addNotUnderstoodHeaderElement\u306B\u6E21\u3055\u308C\u308BQName\u306F\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u3067\u4FEE\u98FE\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+
+#SOAPFault related errors
+SAAJ0430.ver1_2.locale.required=SAAJ0430: \u30ED\u30B1\u30FC\u30EB\u306F\u5FC5\u9808\u3067\u3042\u308A\u3001null\u306B\u3067\u304D\u307E\u305B\u3093
+SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: "xml:lang"\u5C5E\u6027\u304CText\u8981\u7D20\u306B\u5B58\u5728\u3057\u307E\u305B\u3093
+SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: Subcode\u306F\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u3067\u4FEE\u98FE\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0}
+SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text\u306Fenv:Reason\u5185\u306B\u5B58\u5728\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0}\u306F\u6A19\u6E96\u306E\u30B3\u30FC\u30C9\u5024\u3067\u306F\u3042\u308A\u307E\u305B\u3093
+SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: Detail\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002Detail\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059
+SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Detail\u8981\u7D20\u306ESOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u7121\u52B9\u3067\u3059\u3002SOAP 1.2\u304C\u4E88\u671F\u3055\u308C\u307E\u3059
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_ko.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,56 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for ver1_2 pkg
+
+SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: encodingStyle \uC18D\uC131\uC740 Body\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: SOAPBody\uC5D0\uC11C\uB294 Fault\uB97C \uC81C\uC678\uD55C \uB2E4\uB978 \uC694\uC18C\uAC00 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: encodingStyle \uC18D\uC131\uC740 Detail\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: encodingStyle \uC18D\uC131\uC740 Envelope\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: Body\uB294 SOAPEnvelope\uC758 \uB9C8\uC9C0\uB9C9 \uC694\uC18C\uC5EC\uC57C \uD569\uB2C8\uB2E4.
+SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope\uC5D0\uB294 Header\uC640 Body \uC774\uC678\uC758 \uB2E4\uB978 \uC694\uC18C\uAC00 \uD3EC\uD568\uB420 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: encodingStyle \uC18D\uC131\uC740 Fault\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: encodingStyle \uC18D\uC131\uC740 Fault \uD558\uC704 \uC694\uC18C\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: encodingStyle \uC18D\uC131\uC740 Header\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: addNotUnderstoodHeaderElement\uC5D0 NULL\uC744 \uC804\uB2EC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: \uC778\uC218\uB294 \uB110\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. supportedURIs\uB294 \uB110\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: \uC9C0\uC6D0\uB418\uB294 URI \uBAA9\uB85D\uC740 \uBE44\uC6CC \uB458 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2 Header \uC694\uC18C\uB294 \uC815\uADDC\uD654\uB41C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5EC\uC57C \uD569\uB2C8\uB2E4.
+#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2
+SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream\uC774 \uC801\uD569\uD55C SOAP 1.2 \uBA54\uC2DC\uC9C0\uB97C \uB098\uD0C0\uB0B4\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+# {0} - element qname
+SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: {0}\uC5D0 \uD14D\uC2A4\uD2B8\uB97C \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: addNotUnderstoodHeaderElement\uC5D0 \uC804\uB2EC\uB41C QName\uC740 \uC815\uADDC\uD654\uB41C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5EC\uC57C \uD569\uB2C8\uB2E4.
+
+#SOAPFault related errors
+SAAJ0430.ver1_2.locale.required=SAAJ0430: \uB85C\uCF00\uC77C\uC774 \uD544\uC694\uD558\uBA70 \uB110\uC774 \uC544\uB2C8\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: "xml:lang" \uC18D\uC131\uC774 Text \uC694\uC18C\uC5D0 \uC5C6\uC2B5\uB2C8\uB2E4.
+SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: \uD558\uC704 \uCF54\uB4DC\uB294 \uC815\uADDC\uD654\uB41C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5EC\uC57C \uD569\uB2C8\uB2E4.
+#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0}
+SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text\uB294 env:Reason\uC5D0 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0}\uC740(\uB294) \uD45C\uC900 \uCF54\uB4DC \uAC12\uC774 \uC544\uB2D9\uB2C8\uB2E4.
+SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: Detail\uC744 \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. Detail\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4.
+SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Detail \uC694\uC18C\uC5D0 \uB300\uD55C SOAP \uBC84\uC804\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. SOAP 1.2\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_pt_BR.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,56 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for ver1_2 pkg
+
+SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: o atributo encodingStyle n\u00E3o pode aparecer no Corpo
+SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: nenhum outro elemento, exceto Falha permitido no SOAPBody
+SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: o atributo encodingStyle n\u00E3o pode aparecer no Detalhe
+SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: o atributo encodingStyle n\u00E3o pode aparecer no Envelope
+SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: o Corpo deve ser o \u00FAltimo elemento no SOAPEnvelope
+SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: o envelope n\u00E3o pode conter nada diferente de Cabe\u00E7alho e Corpo
+SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: o atributo encodingStyle n\u00E3o pode aparecer na Falha
+SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: o atributo encodingStyle n\u00E3o pode aparecer em um elemento-filho Falha
+SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: o atributo encodingStyle n\u00E3o pode aparecer no Cabe\u00E7alho
+SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: n\u00E3o \u00E9 poss\u00EDvel informar NULL para addNotUnderstoodHeaderElement
+SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: o argumento n\u00E3o pode ser nulo; supportedURIs n\u00E3o pode ser nulo
+SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: lista de URIs suportados n\u00E3o pode ficar vazia
+SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: os elementos do cabe\u00E7alho SOAP 1.2 devem ser namespace qualificado
+#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2
+SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: o InputStream n\u00E3o representa uma Mensagem SOAP 1.2 v\u00E1lida
+# {0} - element qname
+SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: adicionar texto a {0} n\u00E3o \u00E9 v\u00E1lido
+SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: o QName informado ao addNotUnderstoodHeaderElement deve ser qualificado por namespace
+
+#SOAPFault related errors
+SAAJ0430.ver1_2.locale.required=SAAJ0430: a localidade \u00E9 obrigat\u00F3rio e n\u00E3o deve ser nula
+SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: o atributo "xml:lang" n\u00E3o est\u00E1 presente no elemento Texto
+SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: um subc\u00F3digo deve ser qualificado por namespace
+#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0}
+SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text deve estar presente em env:Reason
+SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} n\u00E3o \u00E9 um valor de C\u00F3digo padr\u00E3o
+SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: n\u00E3o \u00E9 poss\u00EDvel adicionar Detalhe, o Detalhe j\u00E1 existe
+SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: vers\u00E3o de SOAP incorreta para o elemento Detalhe, esperava SOAP 1.2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_zh_CN.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,56 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for ver1_2 pkg
+
+SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: \u6B63\u6587\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027
+SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: SOAPBody \u4E2D\u4E0D\u5141\u8BB8\u9664\u6545\u969C\u4E4B\u5916\u7684\u4EFB\u4F55\u5176\u4ED6\u5143\u7D20
+SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: \u8BE6\u7EC6\u4FE1\u606F\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027
+SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: \u4FE1\u5C01\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027
+SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: \u6B63\u6587\u5FC5\u987B\u662F SOAPEnvelope \u4E2D\u7684\u6700\u540E\u4E00\u4E2A\u5143\u7D20
+SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: \u4FE1\u5C01\u4E0D\u80FD\u5305\u542B\u9664\u6807\u5934\u548C\u6B63\u6587\u5916\u7684\u5176\u4ED6\u5185\u5BB9
+SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: \u6545\u969C\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027
+SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: \u6545\u969C\u5B50\u5143\u7D20\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027
+SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: \u6807\u5934\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027
+SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: \u4E0D\u80FD\u5C06\u7A7A\u503C\u4F20\u9012\u7ED9 addNotUnderstoodHeaderElement
+SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: \u53C2\u6570\u4E0D\u80FD\u4E3A\u7A7A\u503C; supportedURIs \u4E0D\u80FD\u4E3A\u7A7A\u503C
+SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: \u652F\u6301\u7684 URI \u7684\u5217\u8868\u4E0D\u80FD\u4E3A\u7A7A
+SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2 \u6807\u5934\u5143\u7D20\u5FC5\u987B\u9650\u5B9A\u540D\u79F0\u7A7A\u95F4
+#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2
+SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream \u4E0D\u8868\u793A\u6709\u6548\u7684 SOAP 1.2 \u6D88\u606F
+# {0} - element qname
+SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: \u5C06\u6587\u672C\u6DFB\u52A0\u5230{0}\u7684\u64CD\u4F5C\u662F\u975E\u6CD5\u7684
+SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: \u4F20\u9012\u5230 addNotUnderstoodHeaderElement \u7684 QName \u5FC5\u987B\u9650\u5B9A\u540D\u79F0\u7A7A\u95F4
+
+#SOAPFault related errors
+SAAJ0430.ver1_2.locale.required=SAAJ0430: \u533A\u57DF\u8BBE\u7F6E\u662F\u5FC5\u9700\u7684, \u4E0D\u80FD\u4E3A\u7A7A\u503C
+SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: \u6587\u672C\u5143\u7D20\u4E0D\u5B58\u5728 "xml:lang" \u5C5E\u6027
+SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: \u5B50\u4EE3\u7801\u5FC5\u987B\u9650\u5B9A\u540D\u79F0\u7A7A\u95F4
+#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0}
+SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Reason \u5185\u90E8\u5FC5\u987B\u5B58\u5728 env:Text
+SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0}\u4E0D\u662F\u6807\u51C6\u4EE3\u7801\u503C
+SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: \u65E0\u6CD5\u6DFB\u52A0\u8BE6\u7EC6\u4FE1\u606F, \u8BE6\u7EC6\u4FE1\u606F\u5DF2\u5B58\u5728
+SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: \u8BE6\u7EC6\u4FE1\u606F\u5143\u7D20\u7684 SOAP \u7248\u672C\u4E0D\u6B63\u786E, \u5E94\u4E3A SOAP 1.2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_zh_TW.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,56 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for ver1_2 pkg
+
+SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Body \u4E2D
+SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: SOAPBody \u4E2D\u9664\u4E86 Fault \u4EE5\u5916\u4E0D\u5141\u8A31\u5176\u4ED6\u5143\u7D20
+SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Detail \u4E2D
+SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Envelope \u4E2D
+SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: Body \u5FC5\u9808\u662F SOAPEnvelope \u4E2D\u7684\u6700\u5F8C\u4E00\u500B\u5143\u7D20
+SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope \u4E0D\u80FD\u5305\u542B Header \u548C Body \u4EE5\u5916\u7684\u4EFB\u4F55\u5167\u5BB9
+SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Fault \u4E2D
+SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Fault \u5B50\u5143\u7D20\u4E2D
+SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Header \u4E2D
+SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: \u4E0D\u80FD\u50B3\u9001 NULL \u81F3 addNotUnderstoodHeaderElement
+SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: \u5F15\u6578\u4E0D\u80FD\u662F\u7A7A\u503C; supportedURIs \u4E0D\u80FD\u662F\u7A7A\u503C
+SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: \u652F\u63F4\u7684 URI \u6E05\u55AE\u4E0D\u80FD\u7A7A\u767D
+SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2 \u6A19\u982D\u5143\u7D20\u5FC5\u9808\u662F\u9650\u5B9A\u7684\u547D\u540D\u7A7A\u9593
+#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2
+SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream \u4E0D\u4EE3\u8868\u6709\u6548\u7684 SOAP 1.2 \u8A0A\u606F
+# {0} - element qname
+SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: \u65B0\u589E\u6587\u5B57\u81F3 {0} \u7121\u6548
+SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: \u50B3\u9001\u81F3 addNotUnderstoodHeaderElement \u7684 QName \u5FC5\u9808\u662F\u9650\u5B9A\u7684\u547D\u540D\u7A7A\u9593
+
+#SOAPFault related errors
+SAAJ0430.ver1_2.locale.required=SAAJ0430: \u5FC5\u9808\u6709\u5730\u5340\u8A2D\u5B9A\u4E14\u4E0D\u5F97\u70BA\u7A7A\u503C
+SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: Text \u5143\u7D20\u4E0A\u6C92\u6709 "xml:lang" \u5C6C\u6027
+SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: Subcode \u5FC5\u9808\u662F\u9650\u5B9A\u7684\u547D\u540D\u7A7A\u9593
+#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0}
+SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text \u5FC5\u9808\u4F4D\u65BC env:Reason \u5167
+SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} \u4E0D\u662F\u6A19\u6E96 Code \u503C
+SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: \u7121\u6CD5\u65B0\u589E Detail, Detail \u5DF2\u7D93\u5B58\u5728
+SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Detail \u5143\u7D20\u7684 SOAP \u7248\u672C\u4E0D\u6B63\u78BA, \u61C9\u8A72\u662F SOAP 1.2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Message1_2Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.xml.soap.*;
+import javax.xml.stream.XMLStreamReader;
+
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.ContentType;
+import com.sun.xml.internal.messaging.saaj.soap.MessageImpl;
+
+public class Message1_2Impl extends MessageImpl implements SOAPConstants{
+
+    public Message1_2Impl() {
+        super();
+    }
+
+    public Message1_2Impl(SOAPMessage msg) {
+        super(msg);
+    }
+
+    public Message1_2Impl(boolean isFastInfoset, boolean acceptFastInfoset) {
+        super(isFastInfoset, acceptFastInfoset);
+    }
+
+    // unused. can we delete this? - Kohsuke
+    public Message1_2Impl(MimeHeaders headers, InputStream in)
+        throws IOException, SOAPExceptionImpl {
+        super(headers, in);
+    }
+
+    public Message1_2Impl(MimeHeaders headers, ContentType ct, int stat, InputStream in)
+        throws SOAPExceptionImpl {
+        super(headers,ct,stat,in);
+    }
+
+    public Message1_2Impl(MimeHeaders headers, ContentType ct, int stat, XMLStreamReader reader)
+            throws SOAPExceptionImpl {
+            super(headers,ct,stat,reader);
+    }
+
+    public SOAPPart getSOAPPart()  {
+        if (soapPartImpl == null)
+            soapPartImpl = new SOAPPart1_2Impl(this);
+
+        return soapPartImpl;
+    }
+
+    protected boolean isCorrectSoapVersion(int contentTypeId) {
+        return (contentTypeId & SOAP1_2_FLAG) != 0;
+    }
+
+    protected String getExpectedContentType() {
+        return isFastInfoset ? "application/soap+fastinfoset" : "application/soap+xml";
+    }
+
+   protected String getExpectedAcceptHeader() {
+       String accept = "application/soap+xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2";
+       return acceptFastInfoset ? ("application/soap+fastinfoset, " + accept) : accept;
+   }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPFactory1_2Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
+
+import javax.xml.soap.Detail;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPFault;
+
+import javax.xml.namespace.QName;
+
+import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
+import com.sun.xml.internal.messaging.saaj.soap.SOAPFactoryImpl;
+
+public class SOAPFactory1_2Impl extends SOAPFactoryImpl {
+    protected SOAPDocumentImpl createDocument() {
+        return (new SOAPPart1_2Impl()).getDocument();
+    }
+
+    public Detail createDetail() throws SOAPException {
+        return new Detail1_2Impl(createDocument());
+    }
+
+    public SOAPFault createFault(String reasonText, QName faultCode)
+        throws SOAPException {
+         if (faultCode == null) {
+            throw new IllegalArgumentException("faultCode argument for createFault was passed NULL");
+        }
+        if (reasonText == null) {
+            throw new IllegalArgumentException("reasonText argument for createFault was passed NULL");
+        }
+        Fault1_2Impl fault = new Fault1_2Impl(createDocument(), null);
+        fault.setFaultCode(faultCode);
+        fault.setFaultString(reasonText);
+        return fault;
+    }
+
+    public SOAPFault createFault() throws SOAPException {
+        Fault1_2Impl fault = new Fault1_2Impl(createDocument(), null);
+        fault.setFaultCode(fault.getDefaultFaultCode());
+        fault.setFaultString("Fault string, and possibly fault code, not set");
+        return fault;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPMessageFactory1_2Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author JAX-RPC RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.xml.soap.*;
+
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+import com.sun.xml.internal.messaging.saaj.soap.MessageFactoryImpl;
+import com.sun.xml.internal.messaging.saaj.soap.MessageImpl;
+
+public class SOAPMessageFactory1_2Impl extends MessageFactoryImpl {
+
+    public SOAPMessage createMessage() throws SOAPException {
+        return new Message1_2Impl();
+    }
+
+    public SOAPMessage createMessage(boolean isFastInfoset,
+        boolean acceptFastInfoset) throws SOAPException
+    {
+        return new Message1_2Impl(isFastInfoset, acceptFastInfoset);
+    }
+
+    public SOAPMessage createMessage(MimeHeaders headers, InputStream in) throws IOException, SOAPExceptionImpl {
+
+        if (headers == null) {
+            headers = new MimeHeaders();
+        }
+
+        if (getContentType(headers) == null) {
+            headers.setHeader("Content-Type", SOAPConstants.SOAP_1_2_CONTENT_TYPE);
+        }
+
+        MessageImpl msg = new Message1_2Impl(headers, in);
+        msg.setLazyAttachments(lazyAttachments);
+        return msg;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPPart1_2Impl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.soap.SOAPConstants;
+import javax.xml.soap.SOAPException;
+import javax.xml.transform.Source;
+
+import com.sun.xml.internal.messaging.saaj.soap.*;
+import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl;
+import com.sun.xml.internal.messaging.saaj.util.XMLDeclarationParser;
+
+public class SOAPPart1_2Impl extends SOAPPartImpl implements SOAPConstants{
+
+    protected static final Logger log =
+        Logger.getLogger(SOAPPart1_2Impl.class.getName(),
+                         "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
+
+    public SOAPPart1_2Impl() {
+        super();
+    }
+
+    public SOAPPart1_2Impl(MessageImpl message) {
+        super(message);
+    }
+
+    protected String getContentType() {
+        return "application/soap+xml";
+    }
+
+    protected Envelope createEmptyEnvelope(String prefix) throws SOAPException {
+        return new Envelope1_2Impl(getDocument(), prefix, true, true);
+    }
+
+    protected Envelope createEnvelopeFromSource() throws SOAPException {
+        XMLDeclarationParser parser = lookForXmlDecl();
+        Source tmp = source;
+        source = null;
+        EnvelopeImpl envelope = (EnvelopeImpl)EnvelopeFactory.createEnvelope(tmp, this);
+        if (!envelope.getNamespaceURI().equals(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE)) {
+            log.severe("SAAJ0415.ver1_2.msg.invalid.soap1.2");
+            throw new SOAPException("InputStream does not represent a valid SOAP 1.2 Message");
+        }
+
+        if (parser != null) { //can be null if source was a DomSource and not StreamSource
+            if (!omitXmlDecl) {
+                envelope.setOmitXmlDecl("no");
+                envelope.setXmlDecl(parser.getXmlDeclaration());
+                envelope.setCharsetEncoding(parser.getEncoding());
+            }
+        }
+        return envelope;
+
+    }
+
+    protected SOAPPartImpl duplicateType() {
+        return new SOAPPart1_2Impl();
+    }
+
+    @Override
+    public String getSOAPNamespace() {
+        return SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/Base64.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,272 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.util;
+
+
+// Cut & paste from tomcat
+
+/**
+ * This class provides encode/decode for RFC 2045 Base64 as
+ * defined by RFC 2045, N. Freed and N. Borenstein.
+ * RFC 2045: Multipurpose Internet Mail Extensions (MIME)
+ * Part One: Format of Internet Message Bodies. Reference
+ * 1996 Available at: http://www.ietf.org/rfc/rfc2045.txt
+ * This class is used by XML Schema binary format validation
+ *
+ * @author Jeffrey Rodriguez
+ * @version
+ */
+public final class Base64 {
+
+
+    static private final int  BASELENGTH         = 255;
+    static private final int  LOOKUPLENGTH       = 63;
+    static private final int  TWENTYFOURBITGROUP = 24;
+    static private final int  EIGHTBIT           = 8;
+    static private final int  SIXTEENBIT         = 16;
+    static private final int  SIXBIT             = 6;
+    static private final int  FOURBYTE           = 4;
+
+
+    static private final byte PAD               = ( byte ) '=';
+    static private byte [] base64Alphabet       = new byte[BASELENGTH];
+    static private byte [] lookUpBase64Alphabet = new byte[LOOKUPLENGTH];
+
+    static {
+
+        for (int i = 0; i<BASELENGTH; i++ ) {
+            base64Alphabet[i] = -1;
+        }
+        for ( int i = 'Z'; i >= 'A'; i-- ) {
+            base64Alphabet[i] = (byte) (i-'A');
+        }
+        for ( int i = 'z'; i>= 'a'; i--) {
+            base64Alphabet[i] = (byte) ( i-'a' + 26);
+        }
+
+        for ( int i = '9'; i >= '0'; i--) {
+            base64Alphabet[i] = (byte) (i-'0' + 52);
+        }
+
+        base64Alphabet['+']  = 62;
+        base64Alphabet['/']  = 63;
+
+       for (int i = 0; i<=25; i++ )
+            lookUpBase64Alphabet[i] = (byte) ('A'+i );
+
+        for (int i = 26,  j = 0; i<=51; i++, j++ )
+            lookUpBase64Alphabet[i] = (byte) ('a'+ j );
+
+        for (int i = 52,  j = 0; i<=61; i++, j++ )
+            lookUpBase64Alphabet[i] = (byte) ('0' + j );
+
+    }
+
+
+    static boolean isBase64( byte octect ) {
+        //shall we ignore white space? JEFF??
+        return(octect == PAD || base64Alphabet[octect] != -1 );
+    }
+
+
+    static boolean isArrayByteBase64( byte[] arrayOctect ) {
+        int length = arrayOctect.length;
+        if ( length == 0 )
+            return false;
+        for ( int i=0; i < length; i++ ) {
+            if ( Base64.isBase64( arrayOctect[i] ) == false)
+                return false;
+        }
+        return true;
+    }
+
+    /**
+     * Encodes hex octects into Base64
+     *
+     * @param binaryData Array containing binaryData
+     * @return Encoded Base64 array
+     */
+    public static byte[] encode( byte[] binaryData ) {
+        int      lengthDataBits    = binaryData.length*EIGHTBIT;
+        int      fewerThan24bits   = lengthDataBits%TWENTYFOURBITGROUP;
+        int      numberTriplets    = lengthDataBits/TWENTYFOURBITGROUP;
+        byte     encodedData[]     = null;
+
+
+        if ( fewerThan24bits != 0 ) //data not divisible by 24 bit
+            encodedData = new byte[ (numberTriplets + 1 )*4  ];
+        else // 16 or 8 bit
+            encodedData = new byte[ numberTriplets*4 ];
+
+        byte k=0, l=0, b1=0,b2=0,b3=0;
+
+        int encodedIndex = 0;
+        int dataIndex   = 0;
+        int i           = 0;
+        for ( i = 0; i<numberTriplets; i++ ) {
+
+            dataIndex = i*3;
+            b1 = binaryData[dataIndex];
+            b2 = binaryData[dataIndex + 1];
+            b3 = binaryData[dataIndex + 2];
+
+            l  = (byte)(b2 & 0x0f);
+            k  = (byte)(b1 & 0x03);
+
+            encodedIndex = i*4;
+            encodedData[encodedIndex]   = lookUpBase64Alphabet[ b1 >>2 ];
+            encodedData[encodedIndex+1] = lookUpBase64Alphabet[(b2 >>4 ) |
+( k<<4 )];
+            encodedData[encodedIndex+2] = lookUpBase64Alphabet[ (l <<2 ) |
+( b3>>6)];
+            encodedData[encodedIndex+3] = lookUpBase64Alphabet[ b3 & 0x3f ];
+        }
+
+        // form integral number of 6-bit groups
+        dataIndex    = i*3;
+        encodedIndex = i*4;
+        if (fewerThan24bits == EIGHTBIT ) {
+            b1 = binaryData[dataIndex];
+            k = (byte) ( b1 &0x03 );
+            encodedData[encodedIndex]     = lookUpBase64Alphabet[ b1 >>2 ];
+            encodedData[encodedIndex + 1] = lookUpBase64Alphabet[ k<<4 ];
+            encodedData[encodedIndex + 2] = PAD;
+            encodedData[encodedIndex + 3] = PAD;
+        } else if ( fewerThan24bits == SIXTEENBIT ) {
+
+            b1 = binaryData[dataIndex];
+            b2 = binaryData[dataIndex +1 ];
+            l = ( byte ) ( b2 &0x0f );
+            k = ( byte ) ( b1 &0x03 );
+            encodedData[encodedIndex]     = lookUpBase64Alphabet[ b1 >>2 ];
+            encodedData[encodedIndex + 1] = lookUpBase64Alphabet[ (b2 >>4 )
+| ( k<<4 )];
+            encodedData[encodedIndex + 2] = lookUpBase64Alphabet[ l<<2 ];
+            encodedData[encodedIndex + 3] = PAD;
+        }
+        return encodedData;
+    }
+
+
+    /**
+     * Decodes Base64 data into octects
+     *
+     * @param binaryData Byte array containing Base64 data
+     * @return Array containind decoded data.
+     */
+    public byte[] decode( byte[] base64Data ) {
+        int      numberQuadruple    = base64Data.length/FOURBYTE;
+        byte     decodedData[]      = null;
+        byte     b1=0,b2=0,b3=0, b4=0, marker0=0, marker1=0;
+
+        // Throw away anything not in base64Data
+        // Adjust size
+
+        int encodedIndex = 0;
+        int dataIndex    = 0;
+        decodedData      = new byte[ numberQuadruple*3 + 1 ];
+
+        for (int i = 0; i<numberQuadruple; i++ ) {
+            dataIndex = i*4;
+            marker0   = base64Data[dataIndex +2];
+            marker1   = base64Data[dataIndex +3];
+
+            b1 = base64Alphabet[base64Data[dataIndex]];
+            b2 = base64Alphabet[base64Data[dataIndex +1]];
+
+            if ( marker0 != PAD && marker1 != PAD ) {     //No PAD e.g 3cQl
+                b3 = base64Alphabet[ marker0 ];
+                b4 = base64Alphabet[ marker1 ];
+
+                decodedData[encodedIndex]   = (byte)(  b1 <<2 | b2>>4 ) ;
+                decodedData[encodedIndex+1] = (byte)(((b2 & 0xf)<<4 ) |(
+(b3>>2) & 0xf) );
+                decodedData[encodedIndex+2] = (byte)( b3<<6 | b4 );
+            } else if ( marker0 == PAD ) {               //Two PAD e.g. 3c[Pad][Pad]
+                decodedData[encodedIndex]   = (byte)(  b1 <<2 | b2>>4 ) ;
+                decodedData[encodedIndex+1] = (byte)((b2 & 0xf)<<4 );
+                decodedData[encodedIndex+2] = (byte) 0;
+            } else if ( marker1 == PAD ) {              //One PAD e.g. 3cQ[Pad]
+                b3 = base64Alphabet[ marker0 ];
+
+                decodedData[encodedIndex]   = (byte)(  b1 <<2 | b2>>4 );
+                decodedData[encodedIndex+1] = (byte)(((b2 & 0xf)<<4 ) |(
+(b3>>2) & 0xf) );
+                decodedData[encodedIndex+2] = (byte)( b3<<6);
+            }
+            encodedIndex += 3;
+        }
+        return decodedData;
+
+    }
+
+    static final int base64[]= {
+        64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+            64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+            64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, 64, 63,
+            52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64,
+            64,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
+            15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 64,
+            64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+            41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64,
+            64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+            64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+            64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+            64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+            64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+            64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+            64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+            64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64
+    };
+
+    public static String base64Decode( String orig ) {
+        char chars[]=orig.toCharArray();
+        StringBuffer sb=new StringBuffer();
+        int i=0;
+
+        int shift = 0;   // # of excess bits stored in accum
+        int acc = 0;
+
+        for (i=0; i<chars.length; i++) {
+            int v = base64[ chars[i] & 0xFF ];
+
+            if ( v >= 64 ) {
+                if( chars[i] != '=' )
+                    System.out.println("Wrong char in base64: " + chars[i]);
+            } else {
+                acc= ( acc << 6 ) | v;
+                shift += 6;
+                if ( shift >= 8 ) {
+                    shift -= 8;
+                    sb.append( (char) ((acc >> shift) & 0xff));
+                }
+            }
+        }
+        return sb.toString();
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/ByteInputStream.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.util;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+
+// This class just gives access to the underlying buffer without copying.
+
+public class ByteInputStream extends ByteArrayInputStream {
+    private static final byte[] EMPTY_ARRAY = new byte[0];
+
+    public ByteInputStream() {
+        this(EMPTY_ARRAY, 0);
+    }
+
+    public ByteInputStream(byte buf[], int length) {
+        super(buf, 0, length);
+    }
+
+    public ByteInputStream(byte buf[], int offset, int length) {
+        super(buf, offset, length);
+    }
+
+    public byte[] getBytes() {
+        return buf;
+    }
+
+    public int getCount() {
+        return count;
+    }
+
+    public void close() throws IOException {
+        reset();
+    }
+
+    public void setBuf(byte[] buf) {
+        this.buf = buf;
+        this.pos = 0;
+        this.count = buf.length;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/ByteOutputStream.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,180 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.util;
+
+import java.io.BufferedOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.InputStream;
+import java.io.ByteArrayInputStream;
+
+/**
+ * Customized {@link BufferedOutputStream}.
+ *
+ * <p>
+ * Compared to {@link BufferedOutputStream},
+ * this class:
+ *
+ * <ol>
+ * <li>doesn't do synchronization
+ * <li>allows access to the raw buffer
+ * <li>almost no parameter check
+ */
+public final class ByteOutputStream extends OutputStream {
+    /**
+     * The buffer where data is stored.
+     */
+    protected byte[] buf;
+
+    /**
+     * The number of valid bytes in the buffer.
+     */
+    protected int count = 0;
+
+    public ByteOutputStream() {
+        this(1024);
+    }
+
+    public ByteOutputStream(int size) {
+        buf = new byte[size];
+    }
+
+    /**
+     * Copies all the bytes from this input into this buffer.
+     */
+    public void write(InputStream in) throws IOException {
+        if (in instanceof ByteArrayInputStream) {
+            int size = in.available();
+            ensureCapacity(size);
+            count += in.read(buf,count,size);
+            return;
+        }
+        while(true) {
+            int cap = buf.length-count;
+            int sz = in.read(buf,count,cap);
+            if(sz<0)    return;     // hit EOS
+
+            count += sz;
+            if(cap==sz)
+                // the buffer filled up. double the buffer
+                ensureCapacity(count);
+        }
+    }
+
+    public void write(int b) {
+        ensureCapacity(1);
+        buf[count] = (byte) b;
+        count++;
+    }
+
+    /**
+     * Ensure that the buffer has at least this much space.
+     */
+    private void ensureCapacity(int space) {
+        int newcount = space + count;
+        if (newcount > buf.length) {
+            byte[] newbuf = new byte[Math.max(buf.length << 1, newcount)];
+            System.arraycopy(buf, 0, newbuf, 0, count);
+            buf = newbuf;
+        }
+    }
+
+    public void write(byte[] b, int off, int len) {
+        ensureCapacity(len);
+        System.arraycopy(b, off, buf, count, len);
+        count += len;
+    }
+
+    public void write(byte[] b) {
+        write(b, 0, b.length);
+    }
+
+    /**
+     * Writes a string as ASCII string.
+     */
+    public void writeAsAscii(String s) {
+        int len = s.length();
+
+        ensureCapacity(len);
+
+        int ptr = count;
+        for( int i=0; i<len; i++ )
+            buf[ptr++] = (byte)s.charAt(i);
+        count = ptr;
+    }
+
+    public void writeTo(OutputStream out) throws IOException {
+        out.write(buf, 0, count);
+    }
+
+    public void reset() {
+        count = 0;
+    }
+
+    /**
+     * Evil buffer reallocation method.
+     * Don't use it unless you absolutely have to.
+     *
+     * @deprecated
+     *      because this is evil!
+     */
+    public byte toByteArray()[] {
+        byte[] newbuf = new byte[count];
+        System.arraycopy(buf, 0, newbuf, 0, count);
+        return newbuf;
+    }
+
+    public int size() {
+        return count;
+    }
+
+    public ByteInputStream newInputStream() {
+        return new ByteInputStream(buf,count);
+    }
+
+    /**
+     * Converts the buffer's contents into a string, translating bytes into
+     * characters according to the platform's default character encoding.
+     *
+     * @return String translated from the buffer's contents.
+     * @since JDK1.1
+     */
+    public String toString() {
+        return new String(buf, 0, count);
+    }
+
+    public void close() {
+    }
+
+    public byte[] getBytes() {
+        return buf;
+    }
+
+
+    public int getCount() {
+        return count;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/CharReader.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.util;
+
+import java.io.CharArrayReader;
+
+// This class just gives access to the underlying buffer without copying.
+
+public class CharReader extends CharArrayReader {
+    public CharReader(char buf[], int length) {
+        super(buf, 0, length);
+    }
+
+    public CharReader(char buf[], int offset, int length) {
+        super(buf, offset, length);
+    }
+
+    public char[] getChars() {
+        return buf;
+    }
+
+    public int getCount() {
+        return count;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/CharWriter.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.util;
+
+import java.io.CharArrayWriter;
+
+// This class just gives access to the underlying buffer without copying.
+
+public class CharWriter extends CharArrayWriter {
+    public CharWriter () {
+        super();
+    }
+
+    public CharWriter(int size) {
+        super(size);
+    }
+
+    public char[] getChars() {
+        return buf;
+    }
+
+    public int getCount() {
+        return count;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/FastInfosetReflection.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,240 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.util;
+
+import java.lang.reflect.*;
+import javax.xml.transform.Source;
+import javax.xml.transform.Result;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+/**
+ *
+ * @author Santiago.PericasGeertsen@sun.com
+ * @author Paul.Sandoz@sun.com
+ */
+public class FastInfosetReflection {
+
+    /**
+     * FI DOMDocumentParser constructor using reflection.
+     */
+    static Constructor fiDOMDocumentParser_new;
+
+    /**
+     * FI <code>DOMDocumentParser.parse()</code> method via reflection.
+     */
+    static Method fiDOMDocumentParser_parse;
+
+    /**
+     * FI DOMDocumentSerializer constructor using reflection.
+     */
+    static Constructor fiDOMDocumentSerializer_new;
+
+    /**
+     * FI <code>FastInfosetSource.serialize(Document)</code> method via reflection.
+     */
+    static Method fiDOMDocumentSerializer_serialize;
+
+    /**
+     * FI <code>FastInfosetSource.setOutputStream(OutputStream)</code> method via reflection.
+     */
+    static Method fiDOMDocumentSerializer_setOutputStream;
+
+    /**
+     * FI FastInfosetSource constructor using reflection.
+     */
+    static Class fiFastInfosetSource_class;
+
+    /**
+     * FI FastInfosetSource constructor using reflection.
+     */
+    static Constructor fiFastInfosetSource_new;
+
+    /**
+     * FI <code>FastInfosetSource.getInputStream()</code> method via reflection.
+     */
+    static Method fiFastInfosetSource_getInputStream;
+
+    /**
+     * FI <code>FastInfosetSource.setInputSTream()</code> method via reflection.
+     */
+    static Method fiFastInfosetSource_setInputStream;
+
+    /**
+     * FI FastInfosetResult constructor using reflection.
+     */
+    static Constructor fiFastInfosetResult_new;
+
+    /**
+     * FI <code>FastInfosetResult.getOutputSTream()</code> method via reflection.
+     */
+    static Method fiFastInfosetResult_getOutputStream;
+
+    static {
+        try {
+            Class clazz = Class.forName("com.sun.xml.internal.fastinfoset.dom.DOMDocumentParser");
+            fiDOMDocumentParser_new = clazz.getConstructor((Class[]) null);
+            fiDOMDocumentParser_parse = clazz.getMethod("parse",
+                new Class[] { org.w3c.dom.Document.class, java.io.InputStream.class });
+
+            clazz = Class.forName("com.sun.xml.internal.fastinfoset.dom.DOMDocumentSerializer");
+            fiDOMDocumentSerializer_new = clazz.getConstructor((Class[])null);
+            fiDOMDocumentSerializer_serialize = clazz.getMethod("serialize",
+                new Class[] { org.w3c.dom.Node.class });
+            fiDOMDocumentSerializer_setOutputStream = clazz.getMethod("setOutputStream",
+                new Class[] { java.io.OutputStream.class });
+
+            fiFastInfosetSource_class = clazz = Class.forName("com.sun.xml.internal.org.jvnet.fastinfoset.FastInfosetSource");
+            fiFastInfosetSource_new = clazz.getConstructor(
+                new Class[] { java.io.InputStream.class });
+            fiFastInfosetSource_getInputStream = clazz.getMethod("getInputStream", (Class[]) null);
+            fiFastInfosetSource_setInputStream = clazz.getMethod("setInputStream",
+                new Class[] { java.io.InputStream.class });
+
+            clazz = Class.forName("com.sun.xml.internal.org.jvnet.fastinfoset.FastInfosetResult");
+            fiFastInfosetResult_new = clazz.getConstructor(
+                new Class[] { java.io.OutputStream.class });
+            fiFastInfosetResult_getOutputStream = clazz.getMethod("getOutputStream", (Class[]) null);
+        }
+        catch (Exception e) {
+            // falls through
+        }
+    }
+
+    // -- DOMDocumentParser ----------------------------------------------
+
+    public static Object DOMDocumentParser_new() throws Exception {
+        if (fiDOMDocumentParser_new == null) {
+            throw new RuntimeException("Unable to locate Fast Infoset implementation");
+        }
+        return fiDOMDocumentParser_new.newInstance((Object[])null);
+    }
+
+    public static void DOMDocumentParser_parse(Object parser,
+        Document d, InputStream s) throws Exception
+    {
+        if (fiDOMDocumentParser_parse == null) {
+            throw new RuntimeException("Unable to locate Fast Infoset implementation");
+        }
+        fiDOMDocumentParser_parse.invoke(parser, new Object[] { d, s });
+    }
+
+    // -- DOMDocumentSerializer-------------------------------------------
+
+    public static Object DOMDocumentSerializer_new() throws Exception {
+        if (fiDOMDocumentSerializer_new == null) {
+            throw new RuntimeException("Unable to locate Fast Infoset implementation");
+        }
+        return fiDOMDocumentSerializer_new.newInstance((Object[])null);
+    }
+
+    public static void DOMDocumentSerializer_serialize(Object serializer, Node node)
+        throws Exception
+    {
+        if (fiDOMDocumentSerializer_serialize == null) {
+            throw new RuntimeException("Unable to locate Fast Infoset implementation");
+        }
+        fiDOMDocumentSerializer_serialize.invoke(serializer, new Object[] { node });
+    }
+
+    public static void DOMDocumentSerializer_setOutputStream(Object serializer,
+        OutputStream os) throws Exception
+    {
+        if (fiDOMDocumentSerializer_setOutputStream == null) {
+            throw new RuntimeException("Unable to locate Fast Infoset implementation");
+        }
+        fiDOMDocumentSerializer_setOutputStream.invoke(serializer, new Object[] { os });
+    }
+
+    // -- FastInfosetSource ----------------------------------------------
+
+    public static boolean isFastInfosetSource(Source source) {
+        return source.getClass().getName().equals(
+            "com.sun.xml.internal.org.jvnet.fastinfoset.FastInfosetSource");
+    }
+
+    public static Class getFastInfosetSource_class() {
+        if (fiFastInfosetSource_class == null) {
+            throw new RuntimeException("Unable to locate Fast Infoset implementation");
+        }
+
+        return fiFastInfosetSource_class;
+    }
+    public static Source FastInfosetSource_new(InputStream is)
+        throws Exception
+    {
+        if (fiFastInfosetSource_new == null) {
+            throw new RuntimeException("Unable to locate Fast Infoset implementation");
+        }
+        return (Source) fiFastInfosetSource_new.newInstance(new Object[] { is });
+    }
+
+    public static InputStream FastInfosetSource_getInputStream(Source source)
+        throws Exception
+    {
+        if (fiFastInfosetSource_getInputStream == null) {
+            throw new RuntimeException("Unable to locate Fast Infoset implementation");
+        }
+        return (InputStream) fiFastInfosetSource_getInputStream.invoke(source, (Object[])null);
+    }
+
+    public static void FastInfosetSource_setInputStream(Source source,
+        InputStream is) throws Exception
+    {
+        if (fiFastInfosetSource_setInputStream == null) {
+            throw new RuntimeException("Unable to locate Fast Infoset implementation");
+        }
+        fiFastInfosetSource_setInputStream.invoke(source, new Object[] { is });
+    }
+
+    // -- FastInfosetResult ----------------------------------------------
+
+    public static boolean isFastInfosetResult(Result result) {
+        return result.getClass().getName().equals(
+            "com.sun.xml.internal.org.jvnet.fastinfoset.FastInfosetResult");
+    }
+
+    public static Result FastInfosetResult_new(OutputStream os)
+        throws Exception
+    {
+        if (fiFastInfosetResult_new == null) {
+            throw new RuntimeException("Unable to locate Fast Infoset implementation");
+        }
+        return (Result) fiFastInfosetResult_new.newInstance(new Object[] { os });
+    }
+
+    public static OutputStream FastInfosetResult_getOutputStream(Result result)
+        throws Exception
+    {
+        if (fiFastInfosetResult_getOutputStream == null) {
+            throw new RuntimeException("Unable to locate Fast Infoset implementation");
+        }
+        return (OutputStream) fiFastInfosetResult_getOutputStream.invoke(result, (Object[])null);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/FinalArrayList.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.util;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+/**
+ * {@link ArrayList} with a final marker to help JIT.
+ * @author Kohsuke Kawaguchi
+ */
+public final class FinalArrayList extends ArrayList {
+    public FinalArrayList(int initialCapacity) {
+        super(initialCapacity);
+    }
+
+    public FinalArrayList() {
+    }
+
+    public FinalArrayList(Collection collection) {
+        super(collection);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/JAXMStreamSource.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.util;
+
+import java.io.*;
+
+import javax.xml.transform.stream.StreamSource;
+
+
+/**
+ *
+ * @author Anil Vijendran
+ */
+public class JAXMStreamSource extends StreamSource {
+    InputStream in;
+    Reader reader;
+    private static final boolean lazyContentLength;
+    static {
+        lazyContentLength = SAAJUtil.getSystemBoolean("saaj.lazy.contentlength");
+    }
+    public JAXMStreamSource(InputStream is) throws IOException {
+        if (lazyContentLength) {
+            in = is;
+        } else if (is instanceof ByteInputStream) {
+            this.in = (ByteInputStream) is;
+        } else {
+            ByteOutputStream bout = null;
+            try {
+                bout = new ByteOutputStream();
+                bout.write(is);
+                this.in = bout.newInputStream();
+            } finally {
+                if (bout != null)
+                    bout.close();
+            }
+        }
+    }
+
+    public JAXMStreamSource(Reader rdr) throws IOException {
+
+        if (lazyContentLength) {
+            this.reader = rdr;
+            return;
+        }
+        CharWriter cout = new CharWriter();
+        char[] temp = new char[1024];
+        int len;
+
+        while (-1 != (len = rdr.read(temp)))
+            cout.write(temp, 0, len);
+
+        this.reader = new CharReader(cout.getChars(), cout.getCount());
+    }
+
+    public InputStream getInputStream() {
+        return in;
+    }
+
+    public Reader getReader() {
+        return reader;
+    }
+
+    public void reset() throws IOException {
+            if (in != null)
+                in.reset();
+            if (reader != null)
+                reader.reset();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/JaxmURI.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,1380 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.util;
+
+// Imported from: org.apache.xerces.util
+// Needed to work around differences in JDK1.2 and 1.3 and deal with userInfo
+
+import java.io.IOException;
+import java.io.Serializable;
+
+
+/**********************************************************************
+* A class to represent a Uniform Resource Identifier (URI). This class
+* is designed to handle the parsing of URIs and provide access to
+* the various components (scheme, host, port, userinfo, path, query
+* string and fragment) that may constitute a URI.
+* <p>
+* Parsing of a URI specification is done according to the URI
+* syntax described in RFC 2396
+* <http://www.ietf.org/rfc/rfc2396.txt?number=2396>. Every URI consists
+* of a scheme, followed by a colon (':'), followed by a scheme-specific
+* part. For URIs that follow the "generic URI" syntax, the scheme-
+* specific part begins with two slashes ("//") and may be followed
+* by an authority segment (comprised of user information, host, and
+* port), path segment, query segment and fragment. Note that RFC 2396
+* no longer specifies the use of the parameters segment and excludes
+* the "user:password" syntax as part of the authority segment. If
+* "user:password" appears in a URI, the entire user/password string
+* is stored as userinfo.
+* <p>
+* For URIs that do not follow the "generic URI" syntax (e.g. mailto),
+* the entire scheme-specific part is treated as the "path" portion
+* of the URI.
+* <p>
+* Note that, unlike the java.net.URL class, this class does not provide
+* any built-in network access functionality nor does it provide any
+* scheme-specific functionality (for example, it does not know a
+* default port for a specific scheme). Rather, it only knows the
+* grammar and basic set of operations that can be applied to a URI.
+*
+* @version
+*
+**********************************************************************/
+ public class JaxmURI implements Serializable {
+
+  /*******************************************************************
+  * MalformedURIExceptions are thrown in the process of building a URI
+  * or setting fields on a URI when an operation would result in an
+  * invalid URI specification.
+  *
+  ********************************************************************/
+  public static class MalformedURIException extends IOException {
+
+   /******************************************************************
+    * Constructs a <code>MalformedURIException</code> with no specified
+    * detail message.
+    ******************************************************************/
+    public MalformedURIException() {
+      super();
+    }
+
+    /*****************************************************************
+    * Constructs a <code>MalformedURIException</code> with the
+    * specified detail message.
+    *
+    * @param p_msg the detail message.
+    ******************************************************************/
+    public MalformedURIException(String p_msg) {
+      super(p_msg);
+    }
+  }
+
+  /** reserved characters */
+  private static final String RESERVED_CHARACTERS = ";/?:@&=+$,";
+
+  /** URI punctuation mark characters - these, combined with
+      alphanumerics, constitute the "unreserved" characters */
+  private static final String MARK_CHARACTERS = "-_.!~*'() ";
+
+  /** scheme can be composed of alphanumerics and these characters */
+  private static final String SCHEME_CHARACTERS = "+-.";
+
+  /** userinfo can be composed of unreserved, escaped and these
+      characters */
+  private static final String USERINFO_CHARACTERS = ";:&=+$,";
+
+  /** Stores the scheme (usually the protocol) for this URI. */
+  private String m_scheme = null;
+
+  /** If specified, stores the userinfo for this URI; otherwise null */
+  private String m_userinfo = null;
+
+  /** If specified, stores the host for this URI; otherwise null */
+  private String m_host = null;
+
+  /** If specified, stores the port for this URI; otherwise -1 */
+  private int m_port = -1;
+
+  /** If specified, stores the path for this URI; otherwise null */
+  private String m_path = null;
+
+  /** If specified, stores the query string for this URI; otherwise
+      null.  */
+  private String m_queryString = null;
+
+  /** If specified, stores the fragment for this URI; otherwise null */
+  private String m_fragment = null;
+
+  private static boolean DEBUG = false;
+
+  /**
+  * Construct a new and uninitialized URI.
+  */
+  public JaxmURI() {
+  }
+
+ /**
+  * Construct a new URI from another URI. All fields for this URI are
+  * set equal to the fields of the URI passed in.
+  *
+  * @param p_other the URI to copy (cannot be null)
+  */
+  public JaxmURI(JaxmURI p_other) {
+    initialize(p_other);
+  }
+
+ /**
+  * Construct a new URI from a URI specification string. If the
+  * specification follows the "generic URI" syntax, (two slashes
+  * following the first colon), the specification will be parsed
+  * accordingly - setting the scheme, userinfo, host,port, path, query
+  * string and fragment fields as necessary. If the specification does
+  * not follow the "generic URI" syntax, the specification is parsed
+  * into a scheme and scheme-specific part (stored as the path) only.
+  *
+  * @param p_uriSpec the URI specification string (cannot be null or
+  *                  empty)
+  *
+  * @exception MalformedURIException if p_uriSpec violates any syntax
+  *                                   rules
+  */
+  public JaxmURI(String p_uriSpec) throws MalformedURIException {
+    this((JaxmURI)null, p_uriSpec);
+  }
+
+ /**
+  * Construct a new URI from a base URI and a URI specification string.
+  * The URI specification string may be a relative URI.
+  *
+  * @param p_base the base URI (cannot be null if p_uriSpec is null or
+  *               empty)
+  * @param p_uriSpec the URI specification string (cannot be null or
+  *                  empty if p_base is null)
+  *
+  * @exception MalformedURIException if p_uriSpec violates any syntax
+  *                                  rules
+  */
+  public JaxmURI(JaxmURI p_base, String p_uriSpec) throws MalformedURIException {
+    initialize(p_base, p_uriSpec);
+  }
+
+ /**
+  * Construct a new URI that does not follow the generic URI syntax.
+  * Only the scheme and scheme-specific part (stored as the path) are
+  * initialized.
+  *
+  * @param p_scheme the URI scheme (cannot be null or empty)
+  * @param p_schemeSpecificPart the scheme-specific part (cannot be
+  *                             null or empty)
+  *
+  * @exception MalformedURIException if p_scheme violates any
+  *                                  syntax rules
+  */
+  public JaxmURI(String p_scheme, String p_schemeSpecificPart)
+             throws MalformedURIException {
+    if (p_scheme == null || p_scheme.trim().length() == 0) {
+      throw new MalformedURIException(
+            "Cannot construct URI with null/empty scheme!");
+    }
+    if (p_schemeSpecificPart == null ||
+        p_schemeSpecificPart.trim().length() == 0) {
+      throw new MalformedURIException(
+          "Cannot construct URI with null/empty scheme-specific part!");
+    }
+    setScheme(p_scheme);
+    setPath(p_schemeSpecificPart);
+  }
+
+ /**
+  * Construct a new URI that follows the generic URI syntax from its
+  * component parts. Each component is validated for syntax and some
+  * basic semantic checks are performed as well.  See the individual
+  * setter methods for specifics.
+  *
+  * @param p_scheme the URI scheme (cannot be null or empty)
+  * @param p_host the hostname or IPv4 address for the URI
+  * @param p_path the URI path - if the path contains '?' or '#',
+  *               then the query string and/or fragment will be
+  *               set from the path; however, if the query and
+  *               fragment are specified both in the path and as
+  *               separate parameters, an exception is thrown
+  * @param p_queryString the URI query string (cannot be specified
+  *                      if path is null)
+  * @param p_fragment the URI fragment (cannot be specified if path
+  *                   is null)
+  *
+  * @exception MalformedURIException if any of the parameters violates
+  *                                  syntax rules or semantic rules
+  */
+  public JaxmURI(String p_scheme, String p_host, String p_path,
+             String p_queryString, String p_fragment)
+         throws MalformedURIException {
+    this(p_scheme, null, p_host, -1, p_path, p_queryString, p_fragment);
+  }
+
+ /**
+  * Construct a new URI that follows the generic URI syntax from its
+  * component parts. Each component is validated for syntax and some
+  * basic semantic checks are performed as well.  See the individual
+  * setter methods for specifics.
+  *
+  * @param p_scheme the URI scheme (cannot be null or empty)
+  * @param p_userinfo the URI userinfo (cannot be specified if host
+  *                   is null)
+  * @param p_host the hostname or IPv4 address for the URI
+  * @param p_port the URI port (may be -1 for "unspecified"; cannot
+  *               be specified if host is null)
+  * @param p_path the URI path - if the path contains '?' or '#',
+  *               then the query string and/or fragment will be
+  *               set from the path; however, if the query and
+  *               fragment are specified both in the path and as
+  *               separate parameters, an exception is thrown
+  * @param p_queryString the URI query string (cannot be specified
+  *                      if path is null)
+  * @param p_fragment the URI fragment (cannot be specified if path
+  *                   is null)
+  *
+  * @exception MalformedURIException if any of the parameters violates
+  *                                  syntax rules or semantic rules
+  */
+  public JaxmURI(String p_scheme, String p_userinfo,
+             String p_host, int p_port, String p_path,
+             String p_queryString, String p_fragment)
+         throws MalformedURIException {
+    if (p_scheme == null || p_scheme.trim().length() == 0) {
+      throw new MalformedURIException("Scheme is required!");
+    }
+
+    if (p_host == null) {
+      if (p_userinfo != null) {
+        throw new MalformedURIException(
+             "Userinfo may not be specified if host is not specified!");
+      }
+      if (p_port != -1) {
+        throw new MalformedURIException(
+             "Port may not be specified if host is not specified!");
+      }
+    }
+
+    if (p_path != null) {
+      if (p_path.indexOf('?') != -1 && p_queryString != null) {
+        throw new MalformedURIException(
+          "Query string cannot be specified in path and query string!");
+      }
+
+      if (p_path.indexOf('#') != -1 && p_fragment != null) {
+        throw new MalformedURIException(
+          "Fragment cannot be specified in both the path and fragment!");
+      }
+    }
+
+    setScheme(p_scheme);
+    setHost(p_host);
+    setPort(p_port);
+    setUserinfo(p_userinfo);
+    setPath(p_path);
+    setQueryString(p_queryString);
+    setFragment(p_fragment);
+  }
+
+ /**
+  * Initialize all fields of this URI from another URI.
+  *
+  * @param p_other the URI to copy (cannot be null)
+  */
+  private void initialize(JaxmURI p_other) {
+    m_scheme = p_other.getScheme();
+    m_userinfo = p_other.getUserinfo();
+    m_host = p_other.getHost();
+    m_port = p_other.getPort();
+    m_path = p_other.getPath();
+    m_queryString = p_other.getQueryString();
+    m_fragment = p_other.getFragment();
+  }
+
+ /**
+  * Initializes this URI from a base URI and a URI specification string.
+  * See RFC 2396 Section 4 and Appendix B for specifications on parsing
+  * the URI and Section 5 for specifications on resolving relative URIs
+  * and relative paths.
+  *
+  * @param p_base the base URI (may be null if p_uriSpec is an absolute
+  *               URI)
+  * @param p_uriSpec the URI spec string which may be an absolute or
+  *                  relative URI (can only be null/empty if p_base
+  *                  is not null)
+  *
+  * @exception MalformedURIException if p_base is null and p_uriSpec
+  *                                  is not an absolute URI or if
+  *                                  p_uriSpec violates syntax rules
+  */
+  private void initialize(JaxmURI p_base, String p_uriSpec)
+                         throws MalformedURIException {
+    if (p_base == null &&
+        (p_uriSpec == null || p_uriSpec.trim().length() == 0)) {
+      throw new MalformedURIException(
+                  "Cannot initialize URI with empty parameters.");
+      }
+
+    // just make a copy of the base if spec is empty
+    if (p_uriSpec == null || p_uriSpec.trim().length() == 0) {
+      initialize(p_base);
+      return;
+    }
+
+    String uriSpec = p_uriSpec.trim();
+    int uriSpecLen = uriSpec.length();
+    int index = 0;
+
+    // Check for scheme, which must be before `/'. Also handle names with
+    // DOS drive letters ('D:'), so 1-character schemes are not allowed.
+    int colonIdx = uriSpec.indexOf(':');
+    int slashIdx = uriSpec.indexOf('/');
+    if ((colonIdx < 2) || (colonIdx > slashIdx && slashIdx != -1)) {
+      int fragmentIdx = uriSpec.indexOf('#');
+      // A standalone base is a valid URI according to spec
+      if (p_base == null && fragmentIdx != 0 ) {
+        throw new MalformedURIException("No scheme found in URI.");
+      }
+    }
+    else {
+      initializeScheme(uriSpec);
+      index = m_scheme.length()+1;
+    }
+
+    // two slashes means generic URI syntax, so we get the authority
+    if (((index+1) < uriSpecLen) &&
+        (uriSpec.substring(index).startsWith("//"))) {
+      index += 2;
+      int startPos = index;
+
+      // get authority - everything up to path, query or fragment
+      char testChar = '\0';
+      while (index < uriSpecLen) {
+        testChar = uriSpec.charAt(index);
+        if (testChar == '/' || testChar == '?' || testChar == '#') {
+          break;
+        }
+        index++;
+      }
+
+      // if we found authority, parse it out, otherwise we set the
+      // host to empty string
+      if (index > startPos) {
+        initializeAuthority(uriSpec.substring(startPos, index));
+      }
+      else {
+        m_host = "";
+      }
+    }
+
+    initializePath(uriSpec.substring(index));
+
+    // Resolve relative URI to base URI - see RFC 2396 Section 5.2
+    // In some cases, it might make more sense to throw an exception
+    // (when scheme is specified is the string spec and the base URI
+    // is also specified, for example), but we're just following the
+    // RFC specifications
+    if (p_base != null) {
+
+      // check to see if this is the current doc - RFC 2396 5.2 #2
+      // note that this is slightly different from the RFC spec in that
+      // we don't include the check for query string being null
+      // - this handles cases where the urispec is just a query
+      // string or a fragment (e.g. "?y" or "#s") -
+      // see <http://www.ics.uci.edu/~fielding/url/test1.html> which
+      // identified this as a bug in the RFC
+      if (m_path.length() == 0 && m_scheme == null &&
+          m_host == null) {
+        m_scheme = p_base.getScheme();
+        m_userinfo = p_base.getUserinfo();
+        m_host = p_base.getHost();
+        m_port = p_base.getPort();
+        m_path = p_base.getPath();
+
+        if (m_queryString == null) {
+          m_queryString = p_base.getQueryString();
+        }
+        return;
+      }
+
+      // check for scheme - RFC 2396 5.2 #3
+      // if we found a scheme, it means absolute URI, so we're done
+      if (m_scheme == null) {
+        m_scheme = p_base.getScheme();
+      }
+      else {
+        return;
+      }
+
+      // check for authority - RFC 2396 5.2 #4
+      // if we found a host, then we've got a network path, so we're done
+      if (m_host == null) {
+        m_userinfo = p_base.getUserinfo();
+        m_host = p_base.getHost();
+        m_port = p_base.getPort();
+      }
+      else {
+        return;
+      }
+
+      // check for absolute path - RFC 2396 5.2 #5
+      if (m_path.length() > 0 &&
+          m_path.startsWith("/")) {
+        return;
+      }
+
+      // if we get to this point, we need to resolve relative path
+      // RFC 2396 5.2 #6
+      String path = "";
+      String basePath = p_base.getPath();
+
+      // 6a - get all but the last segment of the base URI path
+      if (basePath != null) {
+        int lastSlash = basePath.lastIndexOf('/');
+        if (lastSlash != -1) {
+          path = basePath.substring(0, lastSlash+1);
+        }
+      }
+
+      // 6b - append the relative URI path
+      path = path.concat(m_path);
+
+      // 6c - remove all "./" where "." is a complete path segment
+      index = -1;
+      while ((index = path.indexOf("/./")) != -1) {
+        path = path.substring(0, index+1).concat(path.substring(index+3));
+      }
+
+      // 6d - remove "." if path ends with "." as a complete path segment
+      if (path.endsWith("/.")) {
+        path = path.substring(0, path.length()-1);
+      }
+
+      // 6e - remove all "<segment>/../" where "<segment>" is a complete
+      // path segment not equal to ".."
+      index = 1;
+      int segIndex = -1;
+      String tempString = null;
+
+      while ((index = path.indexOf("/../", index)) > 0) {
+        tempString = path.substring(0, path.indexOf("/../"));
+        segIndex = tempString.lastIndexOf('/');
+        if (segIndex != -1) {
+          if (!tempString.substring(segIndex++).equals("..")) {
+            path = path.substring(0, segIndex).concat(path.substring(index+4));
+          }
+          else
+            index += 4;
+        }
+        else
+          index += 4;
+      }
+
+      // 6f - remove ending "<segment>/.." where "<segment>" is a
+      // complete path segment
+      if (path.endsWith("/..")) {
+        tempString = path.substring(0, path.length()-3);
+        segIndex = tempString.lastIndexOf('/');
+        if (segIndex != -1) {
+          path = path.substring(0, segIndex+1);
+        }
+      }
+      m_path = path;
+    }
+  }
+
+ /**
+  * Initialize the scheme for this URI from a URI string spec.
+  *
+  * @param p_uriSpec the URI specification (cannot be null)
+  *
+  * @exception MalformedURIException if URI does not have a conformant
+  *                                  scheme
+  */
+  private void initializeScheme(String p_uriSpec)
+                 throws MalformedURIException {
+    int uriSpecLen = p_uriSpec.length();
+    int index = 0;
+    String scheme = null;
+    char testChar = '\0';
+
+    while (index < uriSpecLen) {
+      testChar = p_uriSpec.charAt(index);
+      if (testChar == ':' || testChar == '/' ||
+          testChar == '?' || testChar == '#') {
+        break;
+      }
+      index++;
+    }
+    scheme = p_uriSpec.substring(0, index);
+
+    if (scheme.length() == 0) {
+      throw new MalformedURIException("No scheme found in URI.");
+    }
+    else {
+      setScheme(scheme);
+    }
+  }
+
+ /**
+  * Initialize the authority (userinfo, host and port) for this
+  * URI from a URI string spec.
+  *
+  * @param p_uriSpec the URI specification (cannot be null)
+  *
+  * @exception MalformedURIException if p_uriSpec violates syntax rules
+  */
+  private void initializeAuthority(String p_uriSpec)
+                 throws MalformedURIException {
+    int index = 0;
+    int start = 0;
+    int end = p_uriSpec.length();
+    char testChar = '\0';
+    String userinfo = null;
+
+    // userinfo is everything up @
+    if (p_uriSpec.indexOf('@', start) != -1) {
+      while (index < end) {
+        testChar = p_uriSpec.charAt(index);
+        if (testChar == '@') {
+          break;
+        }
+        index++;
+      }
+      userinfo = p_uriSpec.substring(start, index);
+      index++;
+    }
+
+    // host is everything up to ':'
+    String host = null;
+    start = index;
+    while (index < end) {
+      testChar = p_uriSpec.charAt(index);
+      if (testChar == ':') {
+        break;
+      }
+      index++;
+    }
+    host = p_uriSpec.substring(start, index);
+    int port = -1;
+    if (host.length() > 0) {
+      // port
+      if (testChar == ':') {
+        index++;
+        start = index;
+        while (index < end) {
+          index++;
+        }
+        String portStr = p_uriSpec.substring(start, index);
+        if (portStr.length() > 0) {
+          for (int i = 0; i < portStr.length(); i++) {
+            if (!isDigit(portStr.charAt(i))) {
+              throw new MalformedURIException(
+                   portStr +
+                   " is invalid. Port should only contain digits!");
+            }
+          }
+          try {
+            port = Integer.parseInt(portStr);
+          }
+          catch (NumberFormatException nfe) {
+            // can't happen
+          }
+        }
+      }
+    }
+    setHost(host);
+    setPort(port);
+    setUserinfo(userinfo);
+  }
+
+ /**
+  * Initialize the path for this URI from a URI string spec.
+  *
+  * @param p_uriSpec the URI specification (cannot be null)
+  *
+  * @exception MalformedURIException if p_uriSpec violates syntax rules
+  */
+  private void initializePath(String p_uriSpec)
+                 throws MalformedURIException {
+    if (p_uriSpec == null) {
+      throw new MalformedURIException(
+                "Cannot initialize path from null string!");
+    }
+
+    int index = 0;
+    int start = 0;
+    int end = p_uriSpec.length();
+    char testChar = '\0';
+
+    // path - everything up to query string or fragment
+    while (index < end) {
+      testChar = p_uriSpec.charAt(index);
+      if (testChar == '?' || testChar == '#') {
+        break;
+      }
+      // check for valid escape sequence
+      if (testChar == '%') {
+         if (index+2 >= end ||
+            !isHex(p_uriSpec.charAt(index+1)) ||
+            !isHex(p_uriSpec.charAt(index+2))) {
+          throw new MalformedURIException(
+                "Path contains invalid escape sequence!");
+         }
+      }
+      else if (!isReservedCharacter(testChar) &&
+               !isUnreservedCharacter(testChar)) {
+        throw new MalformedURIException(
+                  "Path contains invalid character: " + testChar);
+      }
+      index++;
+    }
+    m_path = p_uriSpec.substring(start, index);
+
+    // query - starts with ? and up to fragment or end
+    if (testChar == '?') {
+      index++;
+      start = index;
+      while (index < end) {
+        testChar = p_uriSpec.charAt(index);
+        if (testChar == '#') {
+          break;
+        }
+        if (testChar == '%') {
+           if (index+2 >= end ||
+              !isHex(p_uriSpec.charAt(index+1)) ||
+              !isHex(p_uriSpec.charAt(index+2))) {
+            throw new MalformedURIException(
+                    "Query string contains invalid escape sequence!");
+           }
+        }
+        else if (!isReservedCharacter(testChar) &&
+                 !isUnreservedCharacter(testChar)) {
+          throw new MalformedURIException(
+                "Query string contains invalid character:" + testChar);
+        }
+        index++;
+      }
+      m_queryString = p_uriSpec.substring(start, index);
+    }
+
+    // fragment - starts with #
+    if (testChar == '#') {
+      index++;
+      start = index;
+      while (index < end) {
+        testChar = p_uriSpec.charAt(index);
+
+        if (testChar == '%') {
+           if (index+2 >= end ||
+              !isHex(p_uriSpec.charAt(index+1)) ||
+              !isHex(p_uriSpec.charAt(index+2))) {
+            throw new MalformedURIException(
+                    "Fragment contains invalid escape sequence!");
+           }
+        }
+        else if (!isReservedCharacter(testChar) &&
+                 !isUnreservedCharacter(testChar)) {
+          throw new MalformedURIException(
+                "Fragment contains invalid character:"+testChar);
+        }
+        index++;
+      }
+      m_fragment = p_uriSpec.substring(start, index);
+    }
+  }
+
+ /**
+  * Get the scheme for this URI.
+  *
+  * @return the scheme for this URI
+  */
+  public String getScheme() {
+    return m_scheme;
+  }
+
+ /**
+  * Get the scheme-specific part for this URI (everything following the
+  * scheme and the first colon). See RFC 2396 Section 5.2 for spec.
+  *
+  * @return the scheme-specific part for this URI
+  */
+  public String getSchemeSpecificPart() {
+    StringBuffer schemespec = new StringBuffer();
+
+    if (m_userinfo != null || m_host != null || m_port != -1) {
+      schemespec.append("//");
+    }
+
+    if (m_userinfo != null) {
+      schemespec.append(m_userinfo);
+      schemespec.append('@');
+    }
+
+    if (m_host != null) {
+      schemespec.append(m_host);
+    }
+
+    if (m_port != -1) {
+      schemespec.append(':');
+      schemespec.append(m_port);
+    }
+
+    if (m_path != null) {
+      schemespec.append((m_path));
+    }
+
+    if (m_queryString != null) {
+      schemespec.append('?');
+      schemespec.append(m_queryString);
+    }
+
+    if (m_fragment != null) {
+      schemespec.append('#');
+      schemespec.append(m_fragment);
+    }
+
+    return schemespec.toString();
+  }
+
+ /**
+  * Get the userinfo for this URI.
+  *
+  * @return the userinfo for this URI (null if not specified).
+  */
+  public String getUserinfo() {
+    return m_userinfo;
+  }
+
+  /**
+  * Get the host for this URI.
+  *
+  * @return the host for this URI (null if not specified).
+  */
+  public String getHost() {
+    return m_host;
+  }
+
+ /**
+  * Get the port for this URI.
+  *
+  * @return the port for this URI (-1 if not specified).
+  */
+  public int getPort() {
+    return m_port;
+  }
+
+ /**
+  * Get the path for this URI (optionally with the query string and
+  * fragment).
+  *
+  * @param p_includeQueryString if true (and query string is not null),
+  *                             then a "?" followed by the query string
+  *                             will be appended
+  * @param p_includeFragment if true (and fragment is not null),
+  *                             then a "#" followed by the fragment
+  *                             will be appended
+  *
+  * @return the path for this URI possibly including the query string
+  *         and fragment
+  */
+  public String getPath(boolean p_includeQueryString,
+                        boolean p_includeFragment) {
+    StringBuffer pathString = new StringBuffer(m_path);
+
+    if (p_includeQueryString && m_queryString != null) {
+      pathString.append('?');
+      pathString.append(m_queryString);
+    }
+
+    if (p_includeFragment && m_fragment != null) {
+      pathString.append('#');
+      pathString.append(m_fragment);
+    }
+    return pathString.toString();
+  }
+
+ /**
+  * Get the path for this URI. Note that the value returned is the path
+  * only and does not include the query string or fragment.
+  *
+  * @return the path for this URI.
+  */
+  public String getPath() {
+    return m_path;
+  }
+
+ /**
+  * Get the query string for this URI.
+  *
+  * @return the query string for this URI. Null is returned if there
+  *         was no "?" in the URI spec, empty string if there was a
+  *         "?" but no query string following it.
+  */
+  public String getQueryString() {
+    return m_queryString;
+  }
+
+ /**
+  * Get the fragment for this URI.
+  *
+  * @return the fragment for this URI. Null is returned if there
+  *         was no "#" in the URI spec, empty string if there was a
+  *         "#" but no fragment following it.
+  */
+  public String getFragment() {
+    return m_fragment;
+  }
+
+ /**
+  * Set the scheme for this URI. The scheme is converted to lowercase
+  * before it is set.
+  *
+  * @param p_scheme the scheme for this URI (cannot be null)
+  *
+  * @exception MalformedURIException if p_scheme is not a conformant
+  *                                  scheme name
+  */
+  public void setScheme(String p_scheme) throws MalformedURIException {
+    if (p_scheme == null) {
+      throw new MalformedURIException(
+                "Cannot set scheme from null string!");
+    }
+    if (!isConformantSchemeName(p_scheme)) {
+      throw new MalformedURIException("The scheme is not conformant.");
+    }
+
+    m_scheme = p_scheme.toLowerCase();
+  }
+
+ /**
+  * Set the userinfo for this URI. If a non-null value is passed in and
+  * the host value is null, then an exception is thrown.
+  *
+  * @param p_userinfo the userinfo for this URI
+  *
+  * @exception MalformedURIException if p_userinfo contains invalid
+  *                                  characters
+  */
+  public void setUserinfo(String p_userinfo) throws MalformedURIException {
+    if (p_userinfo == null) {
+      m_userinfo = null;
+    }
+    else {
+      if (m_host == null) {
+        throw new MalformedURIException(
+                     "Userinfo cannot be set when host is null!");
+      }
+
+      // userinfo can contain alphanumerics, mark characters, escaped
+      // and ';',':','&','=','+','$',','
+      int index = 0;
+      int end = p_userinfo.length();
+      char testChar = '\0';
+      while (index < end) {
+        testChar = p_userinfo.charAt(index);
+        if (testChar == '%') {
+          if (index+2 >= end ||
+              !isHex(p_userinfo.charAt(index+1)) ||
+              !isHex(p_userinfo.charAt(index+2))) {
+            throw new MalformedURIException(
+                  "Userinfo contains invalid escape sequence!");
+          }
+        }
+        else if (!isUnreservedCharacter(testChar) &&
+                 USERINFO_CHARACTERS.indexOf(testChar) == -1) {
+          throw new MalformedURIException(
+                  "Userinfo contains invalid character:"+testChar);
+        }
+        index++;
+      }
+    }
+    m_userinfo = p_userinfo;
+  }
+
+  /**
+  * Set the host for this URI. If null is passed in, the userinfo
+  * field is also set to null and the port is set to -1.
+  *
+  * @param p_host the host for this URI
+  *
+  * @exception MalformedURIException if p_host is not a valid IP
+  *                                  address or DNS hostname.
+  */
+  public void setHost(String p_host) throws MalformedURIException {
+    if (p_host == null || p_host.trim().length() == 0) {
+      m_host = p_host;
+      m_userinfo = null;
+      m_port = -1;
+    }
+    else if (!isWellFormedAddress(p_host)) {
+      throw new MalformedURIException("Host is not a well formed address!");
+    }
+    m_host = p_host;
+  }
+
+ /**
+  * Set the port for this URI. -1 is used to indicate that the port is
+  * not specified, otherwise valid port numbers are  between 0 and 65535.
+  * If a valid port number is passed in and the host field is null,
+  * an exception is thrown.
+  *
+  * @param p_port the port number for this URI
+  *
+  * @exception MalformedURIException if p_port is not -1 and not a
+  *                                  valid port number
+  */
+  public void setPort(int p_port) throws MalformedURIException {
+    if (p_port >= 0 && p_port <= 65535) {
+      if (m_host == null) {
+        throw new MalformedURIException(
+                      "Port cannot be set when host is null!");
+      }
+    }
+    else if (p_port != -1) {
+      throw new MalformedURIException("Invalid port number!");
+    }
+    m_port = p_port;
+  }
+
+ /**
+  * Set the path for this URI. If the supplied path is null, then the
+  * query string and fragment are set to null as well. If the supplied
+  * path includes a query string and/or fragment, these fields will be
+  * parsed and set as well. Note that, for URIs following the "generic
+  * URI" syntax, the path specified should start with a slash.
+  * For URIs that do not follow the generic URI syntax, this method
+  * sets the scheme-specific part.
+  *
+  * @param p_path the path for this URI (may be null)
+  *
+  * @exception MalformedURIException if p_path contains invalid
+  *                                  characters
+  */
+  public void setPath(String p_path) throws MalformedURIException {
+    if (p_path == null) {
+      m_path = null;
+      m_queryString = null;
+      m_fragment = null;
+    }
+    else {
+      initializePath(p_path);
+    }
+  }
+
+ /**
+  * Append to the end of the path of this URI. If the current path does
+  * not end in a slash and the path to be appended does not begin with
+  * a slash, a slash will be appended to the current path before the
+  * new segment is added. Also, if the current path ends in a slash
+  * and the new segment begins with a slash, the extra slash will be
+  * removed before the new segment is appended.
+  *
+  * @param p_addToPath the new segment to be added to the current path
+  *
+  * @exception MalformedURIException if p_addToPath contains syntax
+  *                                  errors
+  */
+  public void appendPath(String p_addToPath)
+                         throws MalformedURIException {
+    if (p_addToPath == null || p_addToPath.trim().length() == 0) {
+      return;
+    }
+
+    if (!isURIString(p_addToPath)) {
+      throw new MalformedURIException(
+              "Path contains invalid character!");
+    }
+
+    if (m_path == null || m_path.trim().length() == 0) {
+      if (p_addToPath.startsWith("/")) {
+        m_path = p_addToPath;
+      }
+      else {
+        m_path = "/" + p_addToPath;
+      }
+    }
+    else if (m_path.endsWith("/")) {
+      if (p_addToPath.startsWith("/")) {
+        m_path = m_path.concat(p_addToPath.substring(1));
+      }
+      else {
+        m_path = m_path.concat(p_addToPath);
+      }
+    }
+    else {
+      if (p_addToPath.startsWith("/")) {
+        m_path = m_path.concat(p_addToPath);
+      }
+      else {
+        m_path = m_path.concat("/" + p_addToPath);
+      }
+    }
+  }
+
+ /**
+  * Set the query string for this URI. A non-null value is valid only
+  * if this is an URI conforming to the generic URI syntax and
+  * the path value is not null.
+  *
+  * @param p_queryString the query string for this URI
+  *
+  * @exception MalformedURIException if p_queryString is not null and this
+  *                                  URI does not conform to the generic
+  *                                  URI syntax or if the path is null
+  */
+  public void setQueryString(String p_queryString) throws MalformedURIException {
+    if (p_queryString == null) {
+      m_queryString = null;
+    }
+    else if (!isGenericURI()) {
+      throw new MalformedURIException(
+              "Query string can only be set for a generic URI!");
+    }
+    else if (getPath() == null) {
+      throw new MalformedURIException(
+              "Query string cannot be set when path is null!");
+    }
+    else if (!isURIString(p_queryString)) {
+      throw new MalformedURIException(
+              "Query string contains invalid character!");
+    }
+    else {
+      m_queryString = p_queryString;
+    }
+  }
+
+ /**
+  * Set the fragment for this URI. A non-null value is valid only
+  * if this is a URI conforming to the generic URI syntax and
+  * the path value is not null.
+  *
+  * @param p_fragment the fragment for this URI
+  *
+  * @exception MalformedURIException if p_fragment is not null and this
+  *                                  URI does not conform to the generic
+  *                                  URI syntax or if the path is null
+  */
+  public void setFragment(String p_fragment) throws MalformedURIException {
+    if (p_fragment == null) {
+      m_fragment = null;
+    }
+    else if (!isGenericURI()) {
+      throw new MalformedURIException(
+         "Fragment can only be set for a generic URI!");
+    }
+    else if (getPath() == null) {
+      throw new MalformedURIException(
+              "Fragment cannot be set when path is null!");
+    }
+    else if (!isURIString(p_fragment)) {
+      throw new MalformedURIException(
+              "Fragment contains invalid character!");
+    }
+    else {
+      m_fragment = p_fragment;
+    }
+  }
+
+ /**
+  * Determines if the passed-in Object is equivalent to this URI.
+  *
+  * @param p_test the Object to test for equality.
+  *
+  * @return true if p_test is a URI with all values equal to this
+  *         URI, false otherwise
+  */
+  public boolean equals(Object p_test) {
+    if (p_test instanceof JaxmURI) {
+      JaxmURI testURI = (JaxmURI) p_test;
+      if (((m_scheme == null && testURI.m_scheme == null) ||
+           (m_scheme != null && testURI.m_scheme != null &&
+            m_scheme.equals(testURI.m_scheme))) &&
+          ((m_userinfo == null && testURI.m_userinfo == null) ||
+           (m_userinfo != null && testURI.m_userinfo != null &&
+            m_userinfo.equals(testURI.m_userinfo))) &&
+          ((m_host == null && testURI.m_host == null) ||
+           (m_host != null && testURI.m_host != null &&
+            m_host.equals(testURI.m_host))) &&
+            m_port == testURI.m_port &&
+          ((m_path == null && testURI.m_path == null) ||
+           (m_path != null && testURI.m_path != null &&
+            m_path.equals(testURI.m_path))) &&
+          ((m_queryString == null && testURI.m_queryString == null) ||
+           (m_queryString != null && testURI.m_queryString != null &&
+            m_queryString.equals(testURI.m_queryString))) &&
+          ((m_fragment == null && testURI.m_fragment == null) ||
+           (m_fragment != null && testURI.m_fragment != null &&
+            m_fragment.equals(testURI.m_fragment)))) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  public int hashCode() {
+          // No members safe to use, just default to a constant.
+          return 153214;
+  }
+
+ /**
+  * Get the URI as a string specification. See RFC 2396 Section 5.2.
+  *
+  * @return the URI string specification
+  */
+  public String toString() {
+    StringBuffer uriSpecString = new StringBuffer();
+
+    if (m_scheme != null) {
+      uriSpecString.append(m_scheme);
+      uriSpecString.append(':');
+    }
+    uriSpecString.append(getSchemeSpecificPart());
+    return uriSpecString.toString();
+  }
+
+ /**
+  * Get the indicator as to whether this URI uses the "generic URI"
+  * syntax.
+  *
+  * @return true if this URI uses the "generic URI" syntax, false
+  *         otherwise
+  */
+  public boolean isGenericURI() {
+    // presence of the host (whether valid or empty) means
+    // double-slashes which means generic uri
+    return (m_host != null);
+  }
+
+ /**
+  * Determine whether a scheme conforms to the rules for a scheme name.
+  * A scheme is conformant if it starts with an alphanumeric, and
+  * contains only alphanumerics, '+','-' and '.'.
+  *
+  * @return true if the scheme is conformant, false otherwise
+  */
+  public static boolean isConformantSchemeName(String p_scheme) {
+    if (p_scheme == null || p_scheme.trim().length() == 0) {
+      return false;
+    }
+
+    if (!isAlpha(p_scheme.charAt(0))) {
+      return false;
+    }
+
+    char testChar;
+    for (int i = 1; i < p_scheme.length(); i++) {
+      testChar = p_scheme.charAt(i);
+      if (!isAlphanum(testChar) &&
+          SCHEME_CHARACTERS.indexOf(testChar) == -1) {
+        return false;
+      }
+    }
+
+    return true;
+  }
+
+ /**
+  * Determine whether a string is syntactically capable of representing
+  * a valid IPv4 address or the domain name of a network host. A valid
+  * IPv4 address consists of four decimal digit groups separated by a
+  * '.'. A hostname consists of domain labels (each of which must
+  * begin and end with an alphanumeric but may contain '-') separated
+  & by a '.'. See RFC 2396 Section 3.2.2.
+  *
+  * @return true if the string is a syntactically valid IPv4 address
+  *              or hostname
+  */
+  public static boolean isWellFormedAddress(String p_address) {
+    if (p_address == null) {
+      return false;
+    }
+
+    String address = p_address.trim();
+    int addrLength = address.length();
+    if (addrLength == 0 || addrLength > 255) {
+      return false;
+    }
+
+    if (address.startsWith(".") || address.startsWith("-")) {
+      return false;
+    }
+
+    // rightmost domain label starting with digit indicates IP address
+    // since top level domain label can only start with an alpha
+    // see RFC 2396 Section 3.2.2
+    int index = address.lastIndexOf('.');
+    if (address.endsWith(".")) {
+      index = address.substring(0, index).lastIndexOf('.');
+    }
+
+    if (index+1 < addrLength && isDigit(p_address.charAt(index+1))) {
+      char testChar;
+      int numDots = 0;
+
+      // make sure that 1) we see only digits and dot separators, 2) that
+      // any dot separator is preceded and followed by a digit and
+      // 3) that we find 3 dots
+      for (int i = 0; i < addrLength; i++) {
+        testChar = address.charAt(i);
+        if (testChar == '.') {
+          if (!isDigit(address.charAt(i-1)) ||
+              (i+1 < addrLength && !isDigit(address.charAt(i+1)))) {
+            return false;
+          }
+          numDots++;
+        }
+        else if (!isDigit(testChar)) {
+          return false;
+        }
+      }
+      if (numDots != 3) {
+        return false;
+      }
+    }
+    else {
+      // domain labels can contain alphanumerics and '-"
+      // but must start and end with an alphanumeric
+      char testChar;
+
+      for (int i = 0; i < addrLength; i++) {
+        testChar = address.charAt(i);
+        if (testChar == '.') {
+          if (!isAlphanum(address.charAt(i-1))) {
+            return false;
+          }
+          if (i+1 < addrLength && !isAlphanum(address.charAt(i+1))) {
+            return false;
+          }
+        }
+        else if (!isAlphanum(testChar) && testChar != '-') {
+          return false;
+        }
+      }
+    }
+    return true;
+  }
+
+
+ /**
+  * Determine whether a char is a digit.
+  *
+  * @return true if the char is betweeen '0' and '9', false otherwise
+  */
+  private static boolean isDigit(char p_char) {
+    return p_char >= '0' && p_char <= '9';
+  }
+
+ /**
+  * Determine whether a character is a hexadecimal character.
+  *
+  * @return true if the char is betweeen '0' and '9', 'a' and 'f'
+  *         or 'A' and 'F', false otherwise
+  */
+  private static boolean isHex(char p_char) {
+    return (isDigit(p_char) ||
+            (p_char >= 'a' && p_char <= 'f') ||
+            (p_char >= 'A' && p_char <= 'F'));
+  }
+
+ /**
+  * Determine whether a char is an alphabetic character: a-z or A-Z
+  *
+  * @return true if the char is alphabetic, false otherwise
+  */
+  private static boolean isAlpha(char p_char) {
+    return ((p_char >= 'a' && p_char <= 'z') ||
+            (p_char >= 'A' && p_char <= 'Z' ));
+  }
+
+ /**
+  * Determine whether a char is an alphanumeric: 0-9, a-z or A-Z
+  *
+  * @return true if the char is alphanumeric, false otherwise
+  */
+  private static boolean isAlphanum(char p_char) {
+    return (isAlpha(p_char) || isDigit(p_char));
+  }
+
+ /**
+  * Determine whether a character is a reserved character:
+  * ';', '/', '?', ':', '@', '&', '=', '+', '$' or ','
+  *
+  * @return true if the string contains any reserved characters
+  */
+  private static boolean isReservedCharacter(char p_char) {
+    return RESERVED_CHARACTERS.indexOf(p_char) != -1;
+  }
+
+ /**
+  * Determine whether a char is an unreserved character.
+  *
+  * @return true if the char is unreserved, false otherwise
+  */
+  private static boolean isUnreservedCharacter(char p_char) {
+    return (isAlphanum(p_char) ||
+            MARK_CHARACTERS.indexOf(p_char) != -1);
+  }
+
+ /**
+  * Determine whether a given string contains only URI characters (also
+  * called "uric" in RFC 2396). uric consist of all reserved
+  * characters, unreserved characters and escaped characters.
+  *
+  * @return true if the string is comprised of uric, false otherwise
+  */
+  private static boolean isURIString(String p_uric) {
+    if (p_uric == null) {
+      return false;
+    }
+    int end = p_uric.length();
+    char testChar = '\0';
+    for (int i = 0; i < end; i++) {
+      testChar = p_uric.charAt(i);
+      if (testChar == '%') {
+        if (i+2 >= end ||
+            !isHex(p_uric.charAt(i+1)) ||
+            !isHex(p_uric.charAt(i+2))) {
+          return false;
+        }
+        else {
+          i += 2;
+          continue;
+        }
+      }
+      if (isReservedCharacter(testChar) ||
+          isUnreservedCharacter(testChar)) {
+          continue;
+      }
+      else {
+        return false;
+      }
+    }
+    return true;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,33 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for util pkg
+# Error messages
+SAAJ0601.util.newSAXParser.exception=SAAJ0601: Can't create RejectDoctypSaxFilter because SAXParserFactory.newSAXParser threw an exception. See stack trace for details
+SAAJ0602.util.getXMLReader.exception=SAAJ0602: Can't create RejectDoctypSaxFilter because SAXParser.getXMLReader threw an exception. See stack trace for details
+SAAJ0603.util.setProperty.exception=SAAJ0603: Can't create RejectDoctypSaxFilter because XMLReader.setProperty threw an exception. See stack trace for details
+
+# Info messages
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_de.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,33 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for util pkg
+# Error messages
+SAAJ0601.util.newSAXParser.exception=SAAJ0601: RejectDoctypSaxFilter kann nicht erstellt werden, weil SAXParserFactory.newSAXParser eine Ausnahme ausgel\u00F6st hat. Weitere Einzelheiten finden Sie im Stack Trace
+SAAJ0602.util.getXMLReader.exception=SAAJ0602: RejectDoctypSaxFilter kann nicht erstellt werden, weil SAXParser.getXMLReader eine Ausnahme ausgel\u00F6st hat. Weitere Einzelheiten finden Sie im Stack Trace
+SAAJ0603.util.setProperty.exception=SAAJ0603: RejectDoctypSaxFilter kann nicht erstellt werden, weil XMLReader.setProperty eine Ausnahme ausgel\u00F6st hat. Weitere Einzelheiten finden Sie im Stack Trace
+
+# Info messages
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_es.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,33 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for util pkg
+# Error messages
+SAAJ0601.util.newSAXParser.exception=SAAJ0601: no se puede crear RejectDoctypSaxFilter, porque SAXParserFactory.newSAXParser ha devuelto una excepci\u00F3n. Consulte el rastreo de pila para obtener m\u00E1s informaci\u00F3n
+SAAJ0602.util.getXMLReader.exception=SAAJ0602: no se puede crear RejectDoctypSaxFilter, porque SAXParser.getXMLReader ha devuelto una excepci\u00F3n. Consulte el rastreo de pila para obtener m\u00E1s informaci\u00F3n
+SAAJ0603.util.setProperty.exception=SAAJ0603: no se puede crear RejectDoctypSaxFilter porque XMLReader.setProperty ha devuelto una excepci\u00F3n. Consulte el rastreo de pila para obtener m\u00E1s informaci\u00F3n
+
+# Info messages
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_fr.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,33 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for util pkg
+# Error messages
+SAAJ0601.util.newSAXParser.exception=SAAJ0601 : impossible de cr\u00E9er RejectDoctypSaxFilter car SAXParserFactory.newSAXParser a g\u00E9n\u00E9r\u00E9 une exception. Pour plus de d\u00E9tails, consultez la trace de pile
+SAAJ0602.util.getXMLReader.exception=SAAJ0602 : impossible de cr\u00E9er RejectDoctypSaxFilter car SAXParser.getXMLReader a g\u00E9n\u00E9r\u00E9 une exception. Pour plus de d\u00E9tails, consultez la trace de pile
+SAAJ0603.util.setProperty.exception=SAAJ0603 : impossible de cr\u00E9er RejectDoctypSaxFilter car XMLReader.setProperty a g\u00E9n\u00E9r\u00E9 une exception. Pour plus de d\u00E9tails, consultez la trace de pile
+
+# Info messages
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_it.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,33 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for util pkg
+# Error messages
+SAAJ0601.util.newSAXParser.exception=SAAJ0601: Impossibile creare RejectDoctypSaxFilter poich\u00E9 SAXParserFactory.newSAXParser ha restituito un'eccezione. Vedere lo stack trace per i dettagli.
+SAAJ0602.util.getXMLReader.exception=SAAJ0602: Impossibile creare RejectDoctypSaxFilter poich\u00E9 SAXParser.getXMLReader ha restituito un'eccezione. Vedere lo stack trace per i dettagli.
+SAAJ0603.util.setProperty.exception=SAAJ0603: Impossibile creare RejectDoctypSaxFilter poich\u00E9 XMLReader.setProperty ha restituito un'eccezione. Vedere lo stack trace per i dettagli.
+
+# Info messages
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_ja.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,33 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for util pkg
+# Error messages
+SAAJ0601.util.newSAXParser.exception=SAAJ0601: SAXParserFactory.newSAXParser\u304C\u4F8B\u5916\u3092\u30B9\u30ED\u30FC\u3057\u305F\u305F\u3081\u3001RejectDoctypSaxFilter\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002\u8A73\u7D30\u306F\u30B9\u30BF\u30C3\u30AF\u30FB\u30C8\u30EC\u30FC\u30B9\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044
+SAAJ0602.util.getXMLReader.exception=SAAJ0602: SAXParser.getXMLReader\u304C\u4F8B\u5916\u3092\u30B9\u30ED\u30FC\u3057\u305F\u305F\u3081\u3001RejectDoctypSaxFilter\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002\u8A73\u7D30\u306F\u30B9\u30BF\u30C3\u30AF\u30FB\u30C8\u30EC\u30FC\u30B9\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044
+SAAJ0603.util.setProperty.exception=SAAJ0603: XMLReader.setProperty\u304C\u4F8B\u5916\u3092\u30B9\u30ED\u30FC\u3057\u305F\u305F\u3081\u3001RejectDoctypSaxFilter\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002\u8A73\u7D30\u306F\u30B9\u30BF\u30C3\u30AF\u30FB\u30C8\u30EC\u30FC\u30B9\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044
+
+# Info messages
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_ko.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,33 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for util pkg
+# Error messages
+SAAJ0601.util.newSAXParser.exception=SAAJ0601: SAXParserFactory.newSAXParser\uB85C \uC778\uD574 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD558\uC5EC RejectDoctypSaxFilter\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 \uC2A4\uD0DD \uCD94\uC801\uC744 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.
+SAAJ0602.util.getXMLReader.exception=SAAJ0602: SAXParser.getXMLReader\uB85C \uC778\uD574 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD558\uC5EC RejectDoctypSaxFilter\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 \uC2A4\uD0DD \uCD94\uC801\uC744 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.
+SAAJ0603.util.setProperty.exception=SAAJ0603: XMLReader.setProperty\uB85C \uC778\uD574 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD558\uC5EC RejectDoctypSaxFilter\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 \uC2A4\uD0DD \uCD94\uC801\uC744 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.
+
+# Info messages
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_pt_BR.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,33 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for util pkg
+# Error messages
+SAAJ0601.util.newSAXParser.exception=SAAJ0601: n\u00E3o \u00E9 poss\u00EDvel criar RejectDoctypSaxFilter porque SAXParserFactory.newSAXParser gerou uma exce\u00E7\u00E3o. Consulte o rastreamento de pilha para obter detalhes
+SAAJ0602.util.getXMLReader.exception=SAAJ0602: n\u00E3o \u00E9 poss\u00EDvel criar RejectDoctypSaxFilter porque SAXParser.getXMLReader gerou uma exce\u00E7\u00E3o. Consulte a pilha de rastreamento para obter detalhes
+SAAJ0603.util.setProperty.exception=SAAJ0603: n\u00E3o \u00E9 poss\u00EDvel criar RejectDoctypSaxFilter porque XMLReader.setProperty gerou uma exce\u00E7\u00E3o. Consulte a pilha de rastreamento para obter detalhes
+
+# Info messages
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_zh_CN.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,33 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for util pkg
+# Error messages
+SAAJ0601.util.newSAXParser.exception=SAAJ0601: \u65E0\u6CD5\u521B\u5EFA RejectDoctypSaxFilter, \u56E0\u4E3A SAXParserFactory.newSAXParser \u629B\u51FA\u4E86\u5F02\u5E38\u9519\u8BEF\u3002\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605\u5806\u6808\u8DDF\u8E2A
+SAAJ0602.util.getXMLReader.exception=SAAJ0602: \u65E0\u6CD5\u521B\u5EFA RejectDoctypSaxFilter, \u56E0\u4E3A SAXParser.getXMLReader \u629B\u51FA\u4E86\u5F02\u5E38\u9519\u8BEF\u3002\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605\u5806\u6808\u8DDF\u8E2A
+SAAJ0603.util.setProperty.exception=SAAJ0603: \u65E0\u6CD5\u521B\u5EFA RejectDoctypSaxFilter, \u56E0\u4E3A XMLReader.setProperty \u629B\u51FA\u4E86\u5F02\u5E38\u9519\u8BEF\u3002\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605\u5806\u6808\u8DDF\u8E2A
+
+# Info messages
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_zh_TW.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,33 @@
+#
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# SAAJ ResourceBundle properties file
+# Contains Log messages for util pkg
+# Error messages
+SAAJ0601.util.newSAXParser.exception=SAAJ0601: \u7121\u6CD5\u5EFA\u7ACB RejectDoctypSaxFilter, \u56E0\u70BA SAXParserFactory.newSAXParser \u767C\u751F\u7570\u5E38\u72C0\u6CC1. \u8ACB\u53C3\u95B1\u5806\u758A\u8FFD\u8E64\u4EE5\u77AD\u89E3\u8A73\u7D30\u8CC7\u8A0A
+SAAJ0602.util.getXMLReader.exception=SAAJ0602: \u7121\u6CD5\u5EFA\u7ACB RejectDoctypSaxFilter, \u56E0\u70BA SAXParser.getXMLReader \u767C\u751F\u7570\u5E38\u72C0\u6CC1. \u8ACB\u53C3\u95B1\u5806\u758A\u8FFD\u8E64\u4EE5\u77AD\u89E3\u8A73\u7D30\u8CC7\u8A0A
+SAAJ0603.util.setProperty.exception=SAAJ0603: \u7121\u6CD5\u5EFA\u7ACB RejectDoctypSaxFilter, \u56E0\u70BA XMLReader.setProperty \u767C\u751F\u7570\u5E38\u72C0\u6CC1. \u8ACB\u53C3\u95B1\u5806\u758A\u8FFD\u8E64\u4EE5\u77AD\u89E3\u8A73\u7D30\u8CC7\u8A0A
+
+# Info messages
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LogDomainConstants.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.util;
+
+/**
+ * @author  Manveen Kaur (manveen.kaur@eng.sun.com)
+ */
+
+/**
+ * This interface defines a number of constants pertaining to Logging domains.
+ */
+
+public interface LogDomainConstants {
+
+    public static String MODULE_TOPLEVEL_DOMAIN =
+                    "com.sun.xml.internal.messaging.saaj";
+
+    // First Level Domain
+    public static String CLIENT_DOMAIN =
+                MODULE_TOPLEVEL_DOMAIN + ".client";
+
+    public static String SOAP_DOMAIN =
+                MODULE_TOPLEVEL_DOMAIN + ".soap";
+
+    public static String UTIL_DOMAIN =
+                MODULE_TOPLEVEL_DOMAIN + ".util";
+
+    // Second Level Domain
+    public static String HTTP_CONN_DOMAIN =
+                  CLIENT_DOMAIN + ".p2p";
+
+    public static String NAMING_DOMAIN =
+                SOAP_DOMAIN + ".name";
+
+    public static String SOAP_IMPL_DOMAIN =
+                  SOAP_DOMAIN + ".impl";
+
+    public static String SOAP_VER1_1_DOMAIN =
+                  SOAP_DOMAIN + ".ver1_1";
+
+    public static String SOAP_VER1_2_DOMAIN =
+                  SOAP_DOMAIN + ".ver1_2";
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/MimeHeadersUtil.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.util;
+
+import java.util.Iterator;
+
+import javax.xml.soap.MimeHeader;
+import javax.xml.soap.MimeHeaders;
+
+public class MimeHeadersUtil {
+    public static MimeHeaders copy(MimeHeaders headers) {
+        MimeHeaders newHeaders = new MimeHeaders();
+        Iterator eachHeader = headers.getAllHeaders();
+        while (eachHeader.hasNext()) {
+            MimeHeader currentHeader = (MimeHeader) eachHeader.next();
+
+            newHeaders.addHeader(
+                currentHeader.getName(),
+                currentHeader.getValue());
+        }
+        return newHeaders;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/NamespaceContextIterator.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,122 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+*
+* @author SAAJ RI Development Team
+*/
+package com.sun.xml.internal.messaging.saaj.util;
+
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+
+import org.w3c.dom.*;
+
+public class NamespaceContextIterator implements Iterator {
+    Node context;
+    NamedNodeMap attributes = null;
+    int attributesLength;
+    int attributeIndex;
+    Attr next = null;
+    Attr last = null;
+    boolean traverseStack = true;
+
+    public NamespaceContextIterator(Node context) {
+        this.context = context;
+        findContextAttributes();
+    }
+
+    public NamespaceContextIterator(Node context, boolean traverseStack) {
+        this(context);
+        this.traverseStack = traverseStack;
+    }
+
+    protected void findContextAttributes() {
+        while (context != null) {
+            int type = context.getNodeType();
+            if (type == Node.ELEMENT_NODE) {
+                attributes = context.getAttributes();
+                attributesLength = attributes.getLength();
+                attributeIndex = 0;
+                return;
+            } else {
+                context = null;
+            }
+        }
+    }
+
+    protected void findNext() {
+        while (next == null && context != null) {
+            for (; attributeIndex < attributesLength; ++attributeIndex) {
+                Node currentAttribute = attributes.item(attributeIndex);
+                String attributeName = currentAttribute.getNodeName();
+                if (attributeName.startsWith("xmlns")
+                    && (attributeName.length() == 5
+                        || attributeName.charAt(5) == ':')) {
+                    next = (Attr) currentAttribute;
+                    ++attributeIndex;
+                    return;
+                }
+            }
+            if (traverseStack) {
+                context = context.getParentNode();
+                findContextAttributes();
+            } else {
+                context = null;
+            }
+        }
+    }
+
+    public boolean hasNext() {
+        findNext();
+        return next != null;
+    }
+
+    public Object next() {
+        return getNext();
+    }
+
+    public Attr nextNamespaceAttr() {
+        return getNext();
+    }
+
+    protected Attr getNext() {
+        findNext();
+        if (next == null) {
+            throw new NoSuchElementException();
+        }
+        last = next;
+        next = null;
+        return last;
+    }
+
+    public void remove() {
+        if (last == null) {
+            throw new IllegalStateException();
+        }
+        ((Element) context).removeAttributeNode(last);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/ParseUtil.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.util;
+
+
+// Cut&paste from sun.net.www.ParseUtil: decode, unescape
+
+public class ParseUtil {
+    /**
+     * Un-escape and return the character at position i in string s.
+     */
+    private static char unescape(String s, int i) {
+        return (char) Integer.parseInt(s.substring(i+1,i+3),16);
+    }
+
+    /**
+     * Returns a new String constructed from the specified String by replacing
+     * the URL escape sequences and UTF8 encoding with the characters they
+     * represent.
+     */
+    public static String decode(String s) {
+        StringBuffer sb = new StringBuffer();
+
+        int i=0;
+        while (i<s.length()) {
+            char c = s.charAt(i);
+            char c2, c3;
+
+            if (c != '%') {
+                i++;
+            } else {
+                try {
+                    c = unescape(s, i);
+                    i += 3;
+
+                    if ((c & 0x80) != 0) {
+                        switch (c >> 4) {
+                            case 0xC: case 0xD:
+                                c2 = unescape(s, i);
+                                i += 3;
+                                c = (char)(((c & 0x1f) << 6) | (c2 & 0x3f));
+                                break;
+
+                            case 0xE:
+                                c2 = unescape(s, i);
+                                i += 3;
+                                c3 = unescape(s, i);
+                                i += 3;
+                                c = (char)(((c & 0x0f) << 12) |
+                                           ((c2 & 0x3f) << 6) |
+                                            (c3 & 0x3f));
+                                break;
+
+                            default:
+                                throw new IllegalArgumentException();
+                        }
+                    }
+                } catch (NumberFormatException e) {
+                    throw new IllegalArgumentException();
+                }
+            }
+
+            sb.append(c);
+        }
+
+        return sb.toString();
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/ParserPool.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.util;
+
+
+import org.xml.sax.SAXException;
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.BlockingQueue;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import org.xml.sax.SAXNotRecognizedException;
+import org.xml.sax.SAXNotSupportedException;
+
+
+/**
+ * Pool of SAXParser objects
+ */
+public class ParserPool {
+    private final BlockingQueue<SAXParser> queue;
+    private SAXParserFactory factory;
+
+    public ParserPool(int capacity) {
+        queue = new ArrayBlockingQueue<SAXParser>(capacity);
+        //factory = SAXParserFactory.newInstance();
+        factory = new com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl();
+        factory.setNamespaceAware(true);
+        for (int i = 0; i < capacity; i++) {
+           try {
+                queue.put(factory.newSAXParser());
+            } catch (InterruptedException ex) {
+                Thread.currentThread().interrupt();
+                throw new RuntimeException(ex);
+            } catch (ParserConfigurationException ex) {
+                throw new RuntimeException(ex);
+            } catch (SAXException ex) {
+                throw new RuntimeException(ex);
+            }
+        }
+    }
+
+    public SAXParser get() throws ParserConfigurationException,
+                SAXException {
+
+        try {
+            return (SAXParser) queue.take();
+        } catch (InterruptedException ex) {
+            throw new SAXException(ex);
+        }
+
+    }
+
+    public boolean put(SAXParser parser) {
+        return queue.offer(parser);
+    }
+
+    public void returnParser(SAXParser saxParser) {
+        saxParser.reset();
+        resetSaxParser(saxParser);
+        put(saxParser);
+    }
+
+
+    /**
+     * SAAJ Issue 46 :https://saaj.dev.java.net/issues/show_bug.cgi?id=46
+     * Xerces does not provide a way to reset the SymbolTable
+     * So we are trying to reset it using the proprietary code below.
+     * Temporary Until the bug : https://jaxp.dev.java.net/issues/show_bug.cgi?id=59
+     * is fixed.
+     * @param parser the parser from the pool whose Symbol Table needs to be reset.
+     */
+     private void resetSaxParser(SAXParser parser) {
+        try {
+            //Object obj = parser.getProperty("http://apache.org/xml/properties/internal/symbol-table");
+            com.sun.org.apache.xerces.internal.util.SymbolTable table = new com.sun.org.apache.xerces.internal.util.SymbolTable();
+            parser.setProperty("http://apache.org/xml/properties/internal/symbol-table", table);
+            //obj = parser.getProperty("http://apache.org/xml/properties/internal/symbol-table");
+        } catch (SAXNotRecognizedException ex) {
+            //nothing to do
+        } catch (SAXNotSupportedException ex) {
+            //nothing to do
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/RejectDoctypeSaxFilter.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,182 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.util;
+
+import java.util.logging.Logger;
+
+import javax.xml.parsers.SAXParser;
+import javax.xml.soap.SOAPException;
+
+import org.xml.sax.*;
+import org.xml.sax.ext.LexicalHandler;
+import org.xml.sax.helpers.XMLFilterImpl;
+
+import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
+import org.xml.sax.helpers.AttributesImpl;
+
+/**
+ * Users of this class see a SAX2 XMLReader (via XMLFilterImpl).  This
+ * class creates a parent XMLReader via JAXP and installs itself as a SAX2
+ * extension LexicalHandler which rejects document type declarations
+ * because they are not legal in SOAP.  If the user of this class sets a
+ * LexicalHandler, then it forwards events to that handler.
+ *
+ *
+ * @author Edwin Goei
+ */
+
+public class RejectDoctypeSaxFilter extends XMLFilterImpl implements XMLReader, LexicalHandler{
+    protected static final Logger log =
+    Logger.getLogger(LogDomainConstants.UTIL_DOMAIN,
+    "com.sun.xml.internal.messaging.saaj.util.LocalStrings");
+
+    /** Standard SAX 2.0 ext property */
+    static final String LEXICAL_HANDLER_PROP =
+    "http://xml.org/sax/properties/lexical-handler";
+
+    static final String WSU_NS = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd".intern();
+    static final String SIGNATURE_LNAME = "Signature".intern();
+    static final String ENCRYPTED_DATA_LNAME = "EncryptedData".intern();
+    static final String DSIG_NS = "http://www.w3.org/2000/09/xmldsig#".intern();
+    static final String XENC_NS = "http://www.w3.org/2001/04/xmlenc#".intern();
+    static final String ID_NAME = "ID".intern();
+
+    /** LexicalHandler to forward events to, if any */
+    private LexicalHandler lexicalHandler;
+
+    public RejectDoctypeSaxFilter(SAXParser saxParser) throws SOAPException {
+        XMLReader xmlReader;
+        try {
+            xmlReader = saxParser.getXMLReader();
+        } catch (Exception e) {
+            log.severe("SAAJ0602.util.getXMLReader.exception");
+            throw new SOAPExceptionImpl(
+            "Couldn't get an XMLReader while constructing a RejectDoctypeSaxFilter",
+            e);
+        }
+
+        // Set ourselves up to be the SAX LexicalHandler
+        try {
+            xmlReader.setProperty(LEXICAL_HANDLER_PROP, this);
+        } catch (Exception e) {
+            log.severe("SAAJ0603.util.setProperty.exception");
+            throw new SOAPExceptionImpl(
+            "Couldn't set the lexical handler property while constructing a RejectDoctypeSaxFilter",
+            e);
+        }
+
+        // Set the parent XMLReader of this SAX filter
+        setParent(xmlReader);
+    }
+
+    /*
+     * Override setProperty() to capture any LexicalHandler that is set for
+     * forwarding of events.
+     */
+    public void setProperty(String name, Object value)
+    throws SAXNotRecognizedException, SAXNotSupportedException {
+        if (LEXICAL_HANDLER_PROP.equals(name)) {
+            lexicalHandler = (LexicalHandler) value;
+        } else {
+            super.setProperty(name, value);
+        }
+    }
+
+    //
+    // Beginning of SAX LexicalHandler callbacks...
+    //
+
+    public void startDTD(String name, String publicId, String systemId)
+    throws SAXException {
+        throw new SAXException("Document Type Declaration is not allowed");
+    }
+
+    public void endDTD() throws SAXException {
+    }
+
+    public void startEntity(String name) throws SAXException {
+        if (lexicalHandler != null) {
+            lexicalHandler.startEntity(name);
+        }
+    }
+
+    public void endEntity(String name) throws SAXException {
+        if (lexicalHandler != null) {
+            lexicalHandler.endEntity(name);
+        }
+    }
+
+    public void startCDATA() throws SAXException {
+        if (lexicalHandler != null) {
+            lexicalHandler.startCDATA();
+        }
+    }
+
+    public void endCDATA() throws SAXException {
+        if (lexicalHandler != null) {
+            lexicalHandler.endCDATA();
+        }
+    }
+
+    public void comment(char[] ch, int start, int length) throws SAXException {
+        if (lexicalHandler != null) {
+            lexicalHandler.comment(ch, start, length);
+        }
+    }
+
+    //
+    // End of SAX LexicalHandler callbacks
+    //
+
+    public void startElement(String namespaceURI, String localName,
+    String qName, Attributes atts)   throws SAXException{
+        if(atts != null ){
+            boolean eos = false;
+            if(namespaceURI == DSIG_NS || XENC_NS == namespaceURI){
+                eos = true;
+            }
+            int length = atts.getLength();
+            AttributesImpl attrImpl = new AttributesImpl();
+            for(int i=0; i< length;i++){
+                String name = atts.getLocalName(i);
+                if(name!=null && (name.equals("Id"))){
+                    if(eos || atts.getURI(i) == WSU_NS ){
+                        attrImpl.addAttribute(atts.getURI(i), atts.getLocalName(i),
+                        atts.getQName(i), ID_NAME, atts.getValue(i));
+                    }else{
+                         attrImpl.addAttribute(atts.getURI(i), atts.getLocalName(i), atts.getQName(i), atts.getType(i), atts.getValue(i));
+                    }
+                }else{
+                    attrImpl.addAttribute(atts.getURI(i), atts.getLocalName(i),
+                    atts.getQName(i), atts.getType(i), atts.getValue(i));
+                }
+            }
+            super.startElement(namespaceURI,localName, qName,attrImpl);
+        }else{
+            super.startElement(namespaceURI,localName, qName, null);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/SAAJUtil.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.util;
+
+import java.security.AccessControlException;
+
+/**
+ *
+ * @author vbkumarjayanti
+ */
+public final class SAAJUtil {
+
+    public static boolean getSystemBoolean(String arg) {
+        try {
+            return Boolean.getBoolean(arg);
+        } catch (AccessControlException ex) {
+            return false;
+        }
+    }
+
+    public static String getSystemProperty(String arg) {
+        try {
+            return System.getProperty(arg);
+        } catch (SecurityException ex) {
+            return null;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/TeeInputStream.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * Created on Feb 28, 2003
+ *
+ * To change this generated comment go to
+ * Window>Preferences>Java>Code Generation>Code Template
+ */
+package com.sun.xml.internal.messaging.saaj.util;
+
+import java.io.*;
+
+/**
+ * @author pgoodwin
+ */
+public class TeeInputStream extends InputStream {
+    protected InputStream source;
+    protected OutputStream copySink;
+
+    public TeeInputStream(InputStream source, OutputStream sink) {
+        super();
+        this.copySink = sink;
+        this.source = source;
+    }
+
+    public int read() throws IOException {
+        int result = source.read();
+        copySink.write(result);
+        return result;
+    }
+
+    public int available() throws IOException {
+        return source.available();
+    }
+
+    public void close() throws IOException {
+        source.close();
+    }
+
+    public synchronized void mark(int readlimit) {
+        source.mark(readlimit);
+    }
+
+    public boolean markSupported() {
+        return source.markSupported();
+    }
+
+    public int read(byte[] b, int off, int len) throws IOException {
+        int result = source.read(b, off, len);
+        copySink.write(b, off, len);
+        return result;
+    }
+
+    public int read(byte[] b) throws IOException {
+        int result = source.read(b);
+        copySink.write(b);
+        return result;
+    }
+
+    public synchronized void reset() throws IOException {
+        source.reset();
+    }
+
+    public long skip(long n) throws IOException {
+        return source.skip(n);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/XMLDeclarationParser.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,179 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.util;
+
+import java.io.*;
+
+import javax.xml.transform.TransformerException;
+
+/*
+ * Class that parses the very first construct in the document i.e.
+ *  <?xml ... ?>
+ *
+ * @author Panos Kougiouris (panos@acm.org)
+ * @version
+ */
+
+public class XMLDeclarationParser {
+    private String m_encoding;
+    private PushbackReader m_pushbackReader;
+    private boolean m_hasHeader; // preserve the case where no XML Header exists
+    private String xmlDecl = null;
+    static String gt16 = null;
+    static String utf16Decl = null;
+    static {
+         try {
+             gt16 = new String(">".getBytes("utf-16"));
+             utf16Decl = new String("<?xml".getBytes("utf-16"));
+         } catch (Exception e) {}
+    }
+
+    //---------------------------------------------------------------------
+
+    public XMLDeclarationParser(PushbackReader pr)
+    {
+        m_pushbackReader = pr;
+        m_encoding = "utf-8";
+        m_hasHeader = false;
+    }
+
+    //---------------------------------------------------------------------
+    public String getEncoding()
+    {
+        return m_encoding;
+    }
+
+    public String getXmlDeclaration() {
+        return xmlDecl;
+    }
+
+    //---------------------------------------------------------------------
+
+     public void parse()  throws TransformerException, IOException
+     {
+        int c = 0;
+        int index = 0;
+        char[] aChar = new char[65535];
+        StringBuffer xmlDeclStr = new StringBuffer();
+        while ((c = m_pushbackReader.read()) != -1) {
+            aChar[index] = (char)c;
+            xmlDeclStr.append((char)c);
+            index++;
+            if (c == '>') {
+                break;
+            }
+        }
+        int len = index;
+
+        String decl = xmlDeclStr.toString();
+        boolean utf16 = false;
+        boolean utf8 = false;
+
+        int xmlIndex = decl.indexOf(utf16Decl);
+        if (xmlIndex > -1) {
+            utf16 = true;
+        } else {
+            xmlIndex = decl.indexOf("<?xml");
+            if (xmlIndex > -1) {
+                utf8 = true;
+            }
+        }
+
+        // no XML decl
+        if (!utf16 && !utf8) {
+            m_pushbackReader.unread(aChar, 0, len);
+            return;
+        }
+        m_hasHeader = true;
+
+        if (utf16) {
+            xmlDecl = new String(decl.getBytes(), "utf-16");
+            xmlDecl = xmlDecl.substring(xmlDecl.indexOf("<"));
+        } else {
+            xmlDecl = decl;
+        }
+        // do we want to check that there are no other characters preceeding <?xml
+        if (xmlIndex != 0) {
+            throw new IOException("Unexpected characters before XML declaration");
+        }
+
+        int versionIndex =  xmlDecl.indexOf("version");
+        if (versionIndex == -1) {
+            throw new IOException("Mandatory 'version' attribute Missing in XML declaration");
+        }
+
+        // now set
+        int encodingIndex = xmlDecl.indexOf("encoding");
+        if (encodingIndex == -1) {
+            return;
+        }
+
+        if (versionIndex > encodingIndex) {
+            throw new IOException("The 'version' attribute should preceed the 'encoding' attribute in an XML Declaration");
+        }
+
+        int stdAloneIndex = xmlDecl.indexOf("standalone");
+        if ((stdAloneIndex > -1) && ((stdAloneIndex < versionIndex) || (stdAloneIndex < encodingIndex))) {
+            throw new IOException("The 'standalone' attribute should be the last attribute in an XML Declaration");
+        }
+
+        int eqIndex = xmlDecl.indexOf("=", encodingIndex);
+        if (eqIndex == -1) {
+            throw new IOException("Missing '=' character after 'encoding' in XML declaration");
+        }
+
+        m_encoding = parseEncoding(xmlDecl, eqIndex);
+        if(m_encoding.startsWith("\"")){
+            m_encoding = m_encoding.substring(m_encoding.indexOf("\"")+1, m_encoding.lastIndexOf("\""));
+        } else if(m_encoding.startsWith("\'")){
+            m_encoding = m_encoding.substring(m_encoding.indexOf("\'")+1, m_encoding.lastIndexOf("\'"));
+        }
+     }
+
+     //--------------------------------------------------------------------
+
+    public void writeTo(Writer wr) throws IOException {
+        if (!m_hasHeader) return;
+        wr.write(xmlDecl.toString());
+    }
+
+    private String parseEncoding(String xmlDeclFinal, int eqIndex) throws IOException {
+        java.util.StringTokenizer strTok = new java.util.StringTokenizer(
+            xmlDeclFinal.substring(eqIndex + 1));
+        if (strTok.hasMoreTokens()) {
+            String encodingTok = strTok.nextToken();
+            int indexofQ = encodingTok.indexOf("?");
+            if (indexofQ > -1) {
+                return encodingTok.substring(0,indexofQ);
+            } else {
+                return encodingTok;
+            }
+        } else {
+            throw new IOException("Error parsing 'encoding' attribute in XML declaration");
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/LazyEnvelopeStaxReader.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,359 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.util.stax;
+
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPException;
+import javax.xml.stream.Location;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.w3c.dom.Node;
+
+import com.sun.xml.internal.messaging.saaj.soap.impl.BodyImpl;
+import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl;
+
+/**
+ * "Hybrid" reader which
+ * @author desagar
+ *
+ */
+public class LazyEnvelopeStaxReader extends com.sun.xml.internal.org.jvnet.staxex.util.DOMStreamReader {
+//    EnvelopeImpl env;
+    XMLStreamReader payloadReader = null;
+    boolean usePayloadReaderDelegate = false;
+    private QName bodyQName;
+
+    public LazyEnvelopeStaxReader(EnvelopeImpl env) throws SOAPException, XMLStreamException {
+        super(env);
+//        this.env = env;
+        bodyQName = new QName(env.getNamespaceURI(), "Body");
+        payloadReader = env.getStaxBridge().getPayloadReader();
+        int eventType = getEventType();
+        while (eventType != START_ELEMENT) {
+            eventType = nextTag();
+        }
+    }
+
+    public Object getProperty(String name) throws IllegalArgumentException {
+        if (usePayloadReaderDelegate) return payloadReader.getProperty(name);
+        return super.getProperty(name);
+    }
+
+    public int next() throws XMLStreamException {
+//        boolean previouslyUsingPayloadReader = usePayloadReaderDelegate;
+        //call checkReaderStatus to advance to payloadReader if needed
+        checkReaderStatus(true);
+
+        if (usePayloadReaderDelegate) return payloadReader.getEventType();
+
+        //if we just moved to payload reader, don't advance the pointer
+//        if (usePayloadReaderDelegate && !previouslyUsingPayloadReader) return payloadReader.getEventType();
+
+//        if (usePayloadReaderDelegate) return payloadReader.next();
+        return getEventType();
+    }
+
+    public void require(int type, String namespaceURI, String localName)
+            throws XMLStreamException {
+        if (usePayloadReaderDelegate) payloadReader.require(type, namespaceURI, localName);
+        else super.require(type, namespaceURI, localName);
+    }
+
+    public String getElementText() throws XMLStreamException {
+        if (usePayloadReaderDelegate) return payloadReader.getElementText();
+        return super.getElementText();
+    }
+
+    public int nextTag() throws XMLStreamException {
+        if (usePayloadReaderDelegate) return payloadReader.nextTag();
+        return super.nextTag();
+    }
+
+    public boolean hasNext() throws XMLStreamException {
+        checkReaderStatus(false);
+        boolean hasNext;
+        if (usePayloadReaderDelegate) {
+            hasNext = payloadReader.hasNext();
+        } else {
+            hasNext = super.hasNext();
+        }
+
+        /*if (!hasNext && payloadReader != null) {
+            usePayloadReaderDelegate = true;
+            hasNext = payloadReader.hasNext();
+        }*/
+        return hasNext;
+    }
+
+    private void checkReaderStatus(boolean advanceToNext) throws XMLStreamException {
+        //if we are using payloadReader, make sure it is not exhausted
+        //if it is, return to DOM based reader for remaining end elements (body and envelope)
+        if (usePayloadReaderDelegate) {
+            if (!payloadReader.hasNext()) {
+                usePayloadReaderDelegate = false;
+            }
+        } else if (START_ELEMENT == getEventType()) {
+            //if not on payload reader, check if we need to switch to payload reader
+
+            //if the current event is the SOAP body element start,
+            //and the body is lazy, switch to the payload reader
+            if (bodyQName.equals(getName())) {
+                //if we are just switching to payload reader, don't advance...payload reader
+                //will already be on the first payload element
+                usePayloadReaderDelegate = true;
+                advanceToNext = false;
+            }
+        }
+
+        if (advanceToNext) {
+            if (usePayloadReaderDelegate) {
+                payloadReader.next();
+            } else {
+                super.next();
+            }
+        }
+    }
+
+    public void close() throws XMLStreamException {
+        if (usePayloadReaderDelegate) payloadReader.close();
+        else super.close();
+    }
+
+    public String getNamespaceURI(String prefix) {
+        if (usePayloadReaderDelegate) return payloadReader.getNamespaceURI(prefix);
+        return super.getNamespaceURI(prefix);
+    }
+
+    public boolean isStartElement() {
+        if (usePayloadReaderDelegate) return payloadReader.isStartElement();
+        return super.isStartElement();
+    }
+
+    public boolean isEndElement() {
+        if (usePayloadReaderDelegate) return payloadReader.isEndElement();
+        return super.isEndElement();
+    }
+
+    public boolean isCharacters() {
+        if (usePayloadReaderDelegate) return payloadReader.isCharacters();
+        return super.isEndElement();
+    }
+
+    public boolean isWhiteSpace() {
+        if (usePayloadReaderDelegate) return payloadReader.isWhiteSpace();
+        return super.isWhiteSpace();
+    }
+
+    public String getAttributeValue(String namespaceURI, String localName) {
+        if (usePayloadReaderDelegate) return payloadReader.getAttributeValue(namespaceURI, localName);
+        return super.getAttributeValue(namespaceURI, localName);
+    }
+
+    public int getAttributeCount() {
+        if (usePayloadReaderDelegate) return payloadReader.getAttributeCount();
+        return super.getAttributeCount();
+    }
+
+    public QName getAttributeName(int index) {
+        if (usePayloadReaderDelegate) return payloadReader.getAttributeName(index);
+        return super.getAttributeName(index);
+    }
+
+    public String getAttributeNamespace(int index) {
+        if (usePayloadReaderDelegate) return payloadReader.getAttributeNamespace(index);
+        return super.getAttributeNamespace(index);
+    }
+
+    public String getAttributeLocalName(int index) {
+        if (usePayloadReaderDelegate) return payloadReader.getAttributeLocalName(index);
+        return super.getAttributeLocalName(index);
+    }
+
+    public String getAttributePrefix(int index) {
+        if (usePayloadReaderDelegate) return payloadReader.getAttributePrefix(index);
+        return super.getAttributePrefix(index);
+    }
+
+    public String getAttributeType(int index) {
+        if (usePayloadReaderDelegate) return payloadReader.getAttributeType(index);
+        return super.getAttributeType(index);
+    }
+
+    public String getAttributeValue(int index) {
+        if (usePayloadReaderDelegate) return payloadReader.getAttributeValue(index);
+        return super.getAttributeValue(index);
+    }
+
+    public boolean isAttributeSpecified(int index) {
+        if (usePayloadReaderDelegate) return payloadReader.isAttributeSpecified(index);
+        return super.isAttributeSpecified(index);
+    }
+
+    public int getNamespaceCount() {
+        if (usePayloadReaderDelegate) return payloadReader.getNamespaceCount();
+        return super.getNamespaceCount();
+    }
+
+    public String getNamespacePrefix(int index) {
+        if (usePayloadReaderDelegate) return payloadReader.getNamespacePrefix(index);
+        return super.getNamespacePrefix(index);
+    }
+
+    public String getNamespaceURI(int index) {
+        if (usePayloadReaderDelegate) return payloadReader.getNamespaceURI(index);
+        return super.getNamespaceURI(index);
+    }
+
+    public NamespaceContext getNamespaceContext() {
+        if (usePayloadReaderDelegate) return payloadReader.getNamespaceContext();
+        return super.getNamespaceContext();
+    }
+
+    public int getEventType() {
+        if (usePayloadReaderDelegate) return payloadReader.getEventType();
+        return super.getEventType();
+    }
+
+    public String getText() {
+        if (usePayloadReaderDelegate) return payloadReader.getText();
+        return super.getText();
+    }
+
+    public char[] getTextCharacters() {
+        if (usePayloadReaderDelegate) return payloadReader.getTextCharacters();
+        return super.getTextCharacters();
+    }
+
+    public int getTextCharacters(int sourceStart, char[] target,
+            int targetStart, int length) throws XMLStreamException {
+        if (usePayloadReaderDelegate) return payloadReader.getTextCharacters(sourceStart, target, targetStart,
+                length);
+        return super.getTextCharacters(sourceStart, target, targetStart, length);
+    }
+
+    public int getTextStart() {
+        if (usePayloadReaderDelegate) return payloadReader.getTextStart();
+        return super.getTextStart();
+    }
+
+    public int getTextLength() {
+        if (usePayloadReaderDelegate) return payloadReader.getTextLength();
+        return super.getTextLength();
+    }
+
+    public String getEncoding() {
+        if (usePayloadReaderDelegate) return payloadReader.getEncoding();
+        return super.getEncoding();
+    }
+
+    public boolean hasText() {
+        if (usePayloadReaderDelegate) return payloadReader.hasText();
+        return super.hasText();
+    }
+
+    public Location getLocation() {
+        if (usePayloadReaderDelegate) return payloadReader.getLocation();
+        return super.getLocation();
+    }
+
+    public QName getName() {
+        if (usePayloadReaderDelegate) return payloadReader.getName();
+        return super.getName();
+    }
+
+    public String getLocalName() {
+        if (usePayloadReaderDelegate) return payloadReader.getLocalName();
+        return super.getLocalName();
+    }
+
+    public boolean hasName() {
+        if (usePayloadReaderDelegate) return payloadReader.hasName();
+        return super.hasName();
+    }
+
+    public String getNamespaceURI() {
+        if (usePayloadReaderDelegate) return payloadReader.getNamespaceURI();
+        return super.getNamespaceURI();
+    }
+
+    public String getPrefix() {
+        if (usePayloadReaderDelegate) return payloadReader.getPrefix();
+        return super.getPrefix();
+    }
+
+    public String getVersion() {
+        if (usePayloadReaderDelegate) return payloadReader.getVersion();
+        return super.getVersion();
+    }
+
+    public boolean isStandalone() {
+        if (usePayloadReaderDelegate) return payloadReader.isStandalone();
+        return super.isStandalone();
+    }
+
+    public boolean standaloneSet() {
+        if (usePayloadReaderDelegate) return payloadReader.standaloneSet();
+        return super.standaloneSet();
+    }
+
+    public String getCharacterEncodingScheme() {
+        if (usePayloadReaderDelegate) return payloadReader.getCharacterEncodingScheme();
+        return super.getCharacterEncodingScheme();
+    }
+
+    public String getPITarget() {
+        if (usePayloadReaderDelegate) return payloadReader.getPITarget();
+        return super.getPITarget();
+    }
+
+    public String getPIData() {
+        if (usePayloadReaderDelegate) return payloadReader.getPIData();
+        return super.getPIData();
+    }
+
+    //make sure that message is not realized as a result of call
+    //to getFirstChild
+    protected Node getFirstChild(Node node) {
+        if (node instanceof BodyImpl) {
+            return ((BodyImpl) node).getFirstChildNoMaterialize();
+        } else {
+            return node.getFirstChild();
+        }
+    }
+
+    protected Node getNextSibling(Node node) {
+        if (node instanceof BodyImpl) {
+            //body is not expected to have a next sibling - even if it does
+            //we would have to materialize the node to retrieve it.
+            //Since we don't want to materialize it right now, just return null
+            return null;
+        }
+        return node.getNextSibling();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/SaajStaxReaderEx.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,147 @@
+/*
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.util.stax;
+
+import com.sun.xml.internal.org.jvnet.staxex.Base64Data;
+import com.sun.xml.internal.org.jvnet.staxex.BinaryText;
+import com.sun.xml.internal.org.jvnet.staxex.XMLStreamReaderEx;
+import com.sun.xml.internal.org.jvnet.staxex.util.DOMStreamReader;
+import org.w3c.dom.Node;
+import org.w3c.dom.Text;
+
+import javax.xml.soap.SOAPElement;
+import javax.xml.stream.XMLStreamException;
+import java.util.Iterator;
+
+/**
+ * SaajStaxReaderEx
+ *
+ * @author shih-chang.chen@oracle.com
+ */
+public class SaajStaxReaderEx extends DOMStreamReader implements XMLStreamReaderEx {
+    //TODO extends com.sun.xml.internal.ws.streaming.DOMStreamReader
+    private BinaryText binaryText = null;
+    private Base64Data base64AttData = null;
+
+    public SaajStaxReaderEx(SOAPElement se) {
+        super(se);
+    }
+
+    @Override
+    public int next() throws XMLStreamException {
+        binaryText = null;
+        base64AttData = null;
+        while(true) {
+            int r = _next();
+            switch (r) {
+            case CHARACTERS:
+                if (_current instanceof BinaryText) {
+                    binaryText = (BinaryText) _current;
+                    base64AttData = new Base64Data();
+                    base64AttData.set(binaryText.getDataHandler());
+//System.out.println("--------------- debug SaajStaxReaderEx binaryText " + binaryText);
+                } else {
+                    // if we are currently at text node, make sure that this is a meaningful text node.
+                    Node prev = _current.getPreviousSibling();
+                    if(prev!=null && prev.getNodeType()==Node.TEXT_NODE)
+                        continue;   // nope. this is just a continuation of previous text that should be invisible
+
+                    Text t = (Text)_current;
+                    wholeText = t.getWholeText();
+                    if(wholeText.length()==0)
+                        continue;   // nope. this is empty text.
+                }
+                return CHARACTERS;
+            case START_ELEMENT:
+                splitAttributes();
+                return START_ELEMENT;
+            default:
+                return r;
+            }
+        }
+    }
+
+    @Override
+    public String getElementTextTrim() throws XMLStreamException {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public CharSequence getPCDATA() throws XMLStreamException {
+        return (binaryText != null) ? base64AttData : getText();
+    }
+
+    @Override
+    public com.sun.xml.internal.org.jvnet.staxex.NamespaceContextEx getNamespaceContext() {
+        return new com.sun.xml.internal.org.jvnet.staxex.NamespaceContextEx() {
+
+            @Override
+            public String getNamespaceURI(String prefix) {
+                return _current.lookupNamespaceURI(prefix);
+            }
+
+            @Override
+            public String getPrefix(String uri) {
+                return _current.lookupPrefix(uri);
+            }
+
+            @Override
+            public Iterator getPrefixes(String arg0) {
+                // TODO Auto-generated method stub
+                return null;
+            }
+
+            @Override
+            public Iterator<Binding> iterator() {
+                // TODO Auto-generated method stub
+                return null;
+            }
+
+        };
+    }
+
+
+    @Override
+    public int getTextLength() {
+        return (binaryText != null) ? base64AttData.length() : super.getTextLength();
+    }
+
+    @Override
+    public int getTextStart() {
+        return (binaryText != null) ? 0: super.getTextStart();
+    }
+
+    @Override
+    public char[] getTextCharacters() {
+        if (binaryText != null) {
+            char[] chars = new char[base64AttData.length()];
+            base64AttData.writeTo(chars, 0);
+            return chars;
+        }
+        return super.getTextCharacters();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/SaajStaxWriter.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,334 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.util.stax;
+
+import java.util.Arrays;
+import java.util.Iterator;
+
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.w3c.dom.Comment;
+import org.w3c.dom.Node;
+
+/**
+ * SaajStaxWriter builds a SAAJ SOAPMessage by using XMLStreamWriter interface.
+ *
+ * @author shih-chang.chen@oracle.com
+ */
+public class SaajStaxWriter implements XMLStreamWriter {
+
+    protected SOAPMessage soap;
+    protected String envURI;
+    protected SOAPElement currentElement;
+
+    static final protected String Envelope = "Envelope";
+    static final protected String Header = "Header";
+    static final protected String Body = "Body";
+    static final protected String xmlns = "xmlns";
+
+    public SaajStaxWriter(final SOAPMessage msg, String uri) throws SOAPException {
+        soap = msg;
+        this.envURI = uri;
+    }
+
+    public SOAPMessage getSOAPMessage() {
+        return soap;
+    }
+
+    protected SOAPElement getEnvelope() throws SOAPException {
+        return soap.getSOAPPart().getEnvelope();
+    }
+
+    @Override
+    public void writeStartElement(final String localName) throws XMLStreamException {
+        try {
+            currentElement = currentElement.addChildElement(localName);
+        } catch (SOAPException e) {
+            throw new XMLStreamException(e);
+        }
+    }
+
+    @Override
+    public void writeStartElement(final String ns, final String ln) throws XMLStreamException {
+        writeStartElement(null, ln, ns);
+    }
+
+    @Override
+    public void writeStartElement(final String prefix, final String ln, final String ns) throws XMLStreamException {
+        try {
+            if (envURI.equals(ns)) {
+                if (Envelope.equals(ln)) {
+                    currentElement = getEnvelope();
+                    fixPrefix(prefix);
+                    return;
+                } else if (Header.equals(ln)) {
+                    currentElement = soap.getSOAPHeader();
+                    fixPrefix(prefix);
+                    return;
+                } else if (Body.equals(ln)) {
+                    currentElement = soap.getSOAPBody();
+                    fixPrefix(prefix);
+                    return;
+                }
+            }
+            currentElement = (prefix == null) ?
+                    currentElement.addChildElement(new QName(ns, ln)) :
+                    currentElement.addChildElement(ln, prefix, ns);
+        } catch (SOAPException e) {
+            throw new XMLStreamException(e);
+        }
+    }
+
+    private void fixPrefix(final String prfx) throws XMLStreamException {
+        fixPrefix(prfx, currentElement);
+    }
+
+    private void fixPrefix(final String prfx, SOAPElement element) throws XMLStreamException {
+        String oldPrfx = element.getPrefix();
+        if (prfx != null && !prfx.equals(oldPrfx)) {
+            element.setPrefix(prfx);
+        }
+    }
+
+    @Override
+    public void writeEmptyElement(final String uri, final String ln) throws XMLStreamException {
+        writeStartElement(null, ln, uri);
+    }
+
+    @Override
+    public void writeEmptyElement(final String prefix, final String ln, final String uri) throws XMLStreamException {
+        writeStartElement(prefix, ln, uri);
+    }
+
+    @Override
+    public void writeEmptyElement(final String ln) throws XMLStreamException {
+        writeStartElement(null, ln, null);
+    }
+
+    @Override
+    public void writeEndElement() throws XMLStreamException {
+        if (currentElement != null) currentElement = currentElement.getParentElement();
+    }
+
+    @Override
+    public void writeEndDocument() throws XMLStreamException {
+    }
+
+    @Override
+    public void close() throws XMLStreamException {
+    }
+
+    @Override
+    public void flush() throws XMLStreamException {
+    }
+
+    @Override
+    public void writeAttribute(final String ln, final String val) throws XMLStreamException {
+        writeAttribute(null, null, ln, val);
+    }
+
+    @Override
+    public void writeAttribute(final String prefix, final String ns, final String ln, final String value) throws XMLStreamException {
+        try {
+            if (ns == null) {
+                if (prefix == null && xmlns.equals(ln)) {
+                    currentElement.addNamespaceDeclaration("", value);
+                } else {
+                    currentElement.setAttributeNS("", ln, value);
+                }
+            } else {
+                QName name = (prefix == null) ? new QName(ns, ln) : new QName(ns, ln, prefix);
+                currentElement.addAttribute(name, value);
+            }
+        } catch (SOAPException e) {
+            throw new XMLStreamException(e);
+        }
+    }
+
+    @Override
+    public void writeAttribute(final String ns, final String ln, final String val) throws XMLStreamException {
+        writeAttribute(null, ns, ln, val);
+    }
+
+    @Override
+    public void writeNamespace(String prefix, final String uri) throws XMLStreamException {
+
+        // make prefix default if null or "xmlns" (according to javadoc)
+        if (prefix == null || "xmlns".equals(prefix)) {
+            prefix = "";
+        }
+
+        try {
+            currentElement.addNamespaceDeclaration(prefix, uri);
+        } catch (SOAPException e) {
+            throw new XMLStreamException(e);
+        }
+    }
+
+    @Override
+    public void writeDefaultNamespace(final String uri) throws XMLStreamException {
+        writeNamespace("", uri);
+    }
+
+    @Override
+    public void writeComment(final String data) throws XMLStreamException {
+        Comment c = soap.getSOAPPart().createComment(data);
+        currentElement.appendChild(c);
+    }
+
+    @Override
+    public void writeProcessingInstruction(final String target) throws XMLStreamException {
+        Node n = soap.getSOAPPart().createProcessingInstruction(target, "");
+        currentElement.appendChild(n);
+    }
+
+    @Override
+    public void writeProcessingInstruction(final String target, final String data) throws XMLStreamException {
+        Node n = soap.getSOAPPart().createProcessingInstruction(target, data);
+        currentElement.appendChild(n);
+    }
+
+    @Override
+    public void writeCData(final String data) throws XMLStreamException {
+        Node n = soap.getSOAPPart().createCDATASection(data);
+        currentElement.appendChild(n);
+    }
+
+    @Override
+    public void writeDTD(final String dtd) throws XMLStreamException {
+        //TODO ... Don't do anything here
+    }
+
+    @Override
+    public void writeEntityRef(final String name) throws XMLStreamException {
+        Node n = soap.getSOAPPart().createEntityReference(name);
+        currentElement.appendChild(n);
+    }
+
+    @Override
+    public void writeStartDocument() throws XMLStreamException {
+    }
+
+    @Override
+    public void writeStartDocument(final String version) throws XMLStreamException {
+        if (version != null) soap.getSOAPPart().setXmlVersion(version);
+    }
+
+    @Override
+    public void writeStartDocument(final String encoding, final String version) throws XMLStreamException {
+        if (version != null) soap.getSOAPPart().setXmlVersion(version);
+        if (encoding != null) {
+            try {
+                soap.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, encoding);
+            } catch (SOAPException e) {
+                throw new XMLStreamException(e);
+            }
+        }
+    }
+
+    @Override
+    public void writeCharacters(final String text) throws XMLStreamException {
+        try {
+            currentElement.addTextNode(text);
+        } catch (SOAPException e) {
+            throw new XMLStreamException(e);
+        }
+    }
+
+    @Override
+    public void writeCharacters(final char[] text, final int start, final int len) throws XMLStreamException {
+        char[] chr = (start == 0 && len == text.length) ? text : Arrays.copyOfRange(text, start, start + len);
+        try {
+            currentElement.addTextNode(new String(chr));
+        } catch (SOAPException e) {
+            throw new XMLStreamException(e);
+        }
+    }
+
+    @Override
+    public String getPrefix(final String uri) throws XMLStreamException {
+        return currentElement.lookupPrefix(uri);
+    }
+
+    @Override
+    public void setPrefix(final String prefix, final String uri) throws XMLStreamException {
+        try {
+            this.currentElement.addNamespaceDeclaration(prefix, uri);
+        } catch (SOAPException e) {
+            throw new XMLStreamException(e);
+        }
+    }
+
+    @Override
+    public void setDefaultNamespace(final String uri) throws XMLStreamException {
+        setPrefix("", uri);
+    }
+
+    @Override
+    public void setNamespaceContext(final NamespaceContext context)throws XMLStreamException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Object getProperty(final String name) throws IllegalArgumentException {
+        //TODO the following line is to make eclipselink happy ... they are aware of this problem -
+        if (javax.xml.stream.XMLOutputFactory.IS_REPAIRING_NAMESPACES.equals(name)) return Boolean.FALSE;
+        return null;
+    }
+
+    @Override
+    public NamespaceContext getNamespaceContext() {
+        return new NamespaceContext() {
+            public String getNamespaceURI(final String prefix) {
+                return currentElement.getNamespaceURI(prefix);
+            }
+            public String getPrefix(final String namespaceURI) {
+                return currentElement.lookupPrefix(namespaceURI);
+            }
+            public Iterator getPrefixes(final String namespaceURI) {
+                return new Iterator() {
+                    String prefix = getPrefix(namespaceURI);
+                    public boolean hasNext() {
+                        return (prefix != null);
+                    }
+                    public Object next() {
+                        if (!hasNext()) throw new java.util.NoSuchElementException();
+                        String next = prefix;
+                        prefix = null;
+                        return next;
+                    }
+                    public void remove() {}
+                };
+            }
+        };
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/SaajStaxWriterEx.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,245 @@
+/*
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.xml.internal.messaging.saaj.util.stax;
+
+import java.io.OutputStream;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.UUID;
+
+import javax.activation.DataHandler;
+import javax.xml.bind.attachment.AttachmentMarshaller;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.stream.XMLStreamException;
+
+import com.sun.xml.internal.org.jvnet.staxex.Base64Data;
+import com.sun.xml.internal.org.jvnet.staxex.BinaryText;
+import com.sun.xml.internal.org.jvnet.staxex.MtomEnabled;
+import com.sun.xml.internal.org.jvnet.staxex.NamespaceContextEx;
+import com.sun.xml.internal.org.jvnet.staxex.StreamingDataHandler;
+import com.sun.xml.internal.org.jvnet.staxex.XMLStreamWriterEx;
+import com.sun.xml.internal.org.jvnet.staxex.util.MtomStreamWriter;
+//
+//import com.sun.xml.internal.ws.api.message.saaj.SaajStaxWriter;
+//import com.sun.xml.internal.ws.developer.StreamingDataHandler;
+//import com.sun.xml.internal.ws.streaming.MtomStreamWriter;
+
+/**
+ * SaajStaxWriterEx converts XMLStreamWriterEx calls to build an orasaaj SOAPMessage with BinaryTextImpl.
+ *
+ * @author shih-chang.chen@oracle.com
+ */
+public class SaajStaxWriterEx extends SaajStaxWriter implements XMLStreamWriterEx, MtomStreamWriter {
+
+    static final protected String xopNS = "http://www.w3.org/2004/08/xop/include";
+    static final protected String Include = "Include";
+    static final protected String href = "href";
+
+    private enum State {xopInclude, others};
+    private State state = State.others;
+    private BinaryText binaryText;
+
+    public SaajStaxWriterEx(SOAPMessage msg, String uri) throws SOAPException {
+        super(msg, uri);
+    }
+
+    public void writeStartElement(String prefix, String ln, String ns) throws XMLStreamException {
+        if (xopNS.equals(ns) && Include.equals(ln)) {
+            state = State.xopInclude;
+            return;
+        } else {
+            super.writeStartElement(prefix, ln, ns);
+        }
+    }
+
+    @Override
+    public void writeEndElement() throws XMLStreamException {
+        if (state.equals(State.xopInclude)) {
+            state = State.others;
+        } else {
+            super.writeEndElement();
+        }
+    }
+
+    @Override
+    public void writeAttribute(String prefix, String ns, String ln, String value) throws XMLStreamException {
+        if (binaryText != null && href.equals(ln)) {
+            return;
+        } else {
+            super.writeAttribute(prefix, ns, ln, value);
+        }
+    }
+
+//    @Override
+//    public void writeComment(String data) throws XMLStreamException {
+//        ((ElementImpl)currentElement).addCommentNode(data);
+//    }
+//
+//    @Override
+//    public void writeCData(String data) throws XMLStreamException {
+//      CDataTextImpl cdt = new CDataTextImpl(soap.getSOAPPart(), data);
+//        currentElement.appendChild(cdt);
+//    }
+
+    @Override
+    public NamespaceContextEx getNamespaceContext() {
+        return new NamespaceContextEx() {
+            public String getNamespaceURI(String prefix) {
+                return currentElement.getNamespaceURI(prefix);
+            }
+            public String getPrefix(String namespaceURI) {
+                return currentElement.lookupPrefix(namespaceURI);
+            }
+            public Iterator getPrefixes(final String namespaceURI) {
+                return new Iterator() {
+                    String prefix = getPrefix(namespaceURI);
+                    public boolean hasNext() {
+                        return (prefix != null);
+                    }
+                    public Object next() {
+                        if (prefix == null) throw new java.util.NoSuchElementException();
+                        String next = prefix;
+                        prefix = null;
+                        return next;
+                    }
+                    public void remove() {}
+                };
+            }
+            public Iterator<Binding> iterator() {
+                return new Iterator<Binding>() {
+                    public boolean hasNext() { return false; }
+                    public Binding next() { return null; }
+                    public void remove() {}
+                };
+            }
+        };
+    }
+
+    @Override
+    public void writeBinary(DataHandler data) throws XMLStreamException {
+//      binaryText = BinaryTextImpl.createBinaryTextFromDataHandler((MessageImpl)soap, null, currentElement.getOwnerDocument(), data);
+//      currentElement.appendChild(binaryText);
+        addBinaryText(data);
+    }
+
+    @Override
+    public OutputStream writeBinary(String arg0) throws XMLStreamException {
+        return null;
+    }
+
+    @Override
+    public void writeBinary(byte[] data, int offset, int length, String contentType) throws XMLStreamException {
+//        if (mtomThreshold == -1 || mtomThreshold > length) return null;
+        byte[] bytes = (offset == 0 && length == data.length) ? data : Arrays.copyOfRange(data, offset, offset + length);
+        if (currentElement instanceof MtomEnabled) {
+            binaryText = ((MtomEnabled) currentElement).addBinaryText(bytes);
+        } else {
+            throw new IllegalStateException("The currentElement is not MtomEnabled " + currentElement);
+        }
+    }
+
+    @Override
+    public void writePCDATA(CharSequence arg0) throws XMLStreamException {
+        if (arg0 instanceof Base64Data) {
+            // The fix of StreamReaderBufferCreator preserves this dataHandler
+            addBinaryText(((Base64Data) arg0).getDataHandler());
+        } else {
+            // We should not normally get here as we expect a DataHandler,
+            // but this is the most general solution.  If we do get
+            // something other than a Data Handler, create a Text node with
+            // the data.  Another alternative would be to throw an exception,
+            // but in the most general case, we don't know whether this input
+            // is expected.
+            try {
+                currentElement.addTextNode(arg0.toString());
+            } catch (SOAPException e) {
+                throw new XMLStreamException("Cannot add Text node", e);
+            }
+        }
+    }
+
+    static private String encodeCid() {
+        String cid = "example.jaxws.sun.com";
+        String name = UUID.randomUUID() + "@";
+        return name + cid;
+    }
+
+    private String addBinaryText(DataHandler data) {
+        String hrefOrCid = null;
+        if (data instanceof StreamingDataHandler) {
+            hrefOrCid = ((StreamingDataHandler) data).getHrefCid();
+        }
+        if (hrefOrCid == null) hrefOrCid = encodeCid();
+
+        String prefixedCid = (hrefOrCid.startsWith("cid:")) ? hrefOrCid : "cid:" + hrefOrCid;
+        // Should we do the threshold processing on DataHandler ? But that would be
+        // expensive as DataHolder need to read the data again from its source
+      //binaryText = BinaryTextImpl.createBinaryTextFromDataHandler((MessageImpl) soap, prefixedCid, currentElement.getOwnerDocument(), data);
+      //currentElement.appendChild(binaryText);
+        if (currentElement instanceof MtomEnabled) {
+            binaryText = ((MtomEnabled) currentElement).addBinaryText(prefixedCid, data);
+        } else {
+            throw new IllegalStateException("The currentElement is not MtomEnabled " + currentElement);
+        }
+        return hrefOrCid;
+    }
+
+    public AttachmentMarshaller getAttachmentMarshaller() {
+        return new AttachmentMarshaller() {
+            @Override
+            public String addMtomAttachment(DataHandler data, String ns, String ln) {
+//                if (mtomThreshold == -1) return null;
+                String hrefOrCid = addBinaryText(data);
+//                return binaryText.getHref();
+                return hrefOrCid;
+            }
+
+            @Override
+            public String addMtomAttachment(byte[] data, int offset, int length, String mimeType, String ns, String ln) {
+//                if (mtomThreshold == -1 || mtomThreshold > length) return null;
+                byte[] bytes = (offset == 0 && length == data.length) ? data : Arrays.copyOfRange(data, offset, offset + length);
+//                binaryText = (BinaryTextImpl) ((ElementImpl) currentElement).addAsBase64TextNode(bytes);
+                if (currentElement instanceof MtomEnabled) {
+                    binaryText = ((MtomEnabled) currentElement).addBinaryText(bytes);
+                } else {
+                    throw new IllegalStateException("The currentElement is not MtomEnabled " + currentElement);
+                }
+                return binaryText.getHref();
+            }
+
+            @Override
+            public String addSwaRefAttachment(DataHandler data) {
+                return "cid:"+encodeCid();
+            }
+
+            @Override
+            public boolean isXOPPackage() {
+                return true;
+            }
+        };
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/transform/EfficientStreamingTransformer.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,423 @@
+/*
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * EfficientStreamingTransformer.java
+ *
+ * Created on July 29, 2002, 3:49 PM
+ */
+
+package com.sun.xml.internal.messaging.saaj.util.transform;
+
+import java.io.*;
+
+import java.net.URISyntaxException;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.dom.DOMResult;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.w3c.dom.Document;
+
+import com.sun.xml.internal.messaging.saaj.util.XMLDeclarationParser;
+import com.sun.xml.internal.messaging.saaj.util.FastInfosetReflection;
+import java.net.URI;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+
+/**
+ * This class is a proxy for a Transformer object with optimizations
+ * for certain cases. If source and result are of type stream, then
+ * bytes are simply copied whenever possible (note that this assumes
+ * that the input is well formed). In addition, it provides support for
+ * FI using native DOM parsers and serializers.
+ *
+ * @author Panos Kougiouris panos@acm.org
+ * @author Santiago.PericasGeertsen@sun.com
+ *
+ */
+public class EfficientStreamingTransformer
+    extends javax.xml.transform.Transformer {
+
+  //static final String version;
+  //static final String vendor;
+  // removing static : security issue : CR 6813167Z
+  private final TransformerFactory transformerFactory = TransformerFactory.newInstance();
+
+  /**
+  removing support for Java 1.4 and 1.3 : CR6658158
+  static {
+        version = System.getProperty("java.vm.version");
+        vendor = System.getProperty("java.vm.vendor");
+        if (vendor.startsWith("Sun") &&
+            (version.startsWith("1.4") || version.startsWith("1.3"))) {
+            transformerFactory =
+                new com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl();
+        }
+  }*/
+
+    /**
+     * TransformerFactory instance.
+     */
+
+    /**
+     * Underlying XSLT transformer.
+     */
+    private Transformer m_realTransformer = null;
+
+    /**
+     * Undelying FI DOM parser.
+     */
+    private Object m_fiDOMDocumentParser = null;
+
+    /**
+     * Underlying FI DOM serializer.
+     */
+    private Object m_fiDOMDocumentSerializer = null;
+
+    private EfficientStreamingTransformer() {
+    }
+
+    private void materialize() throws TransformerException {
+        if (m_realTransformer == null) {
+            m_realTransformer = transformerFactory.newTransformer();
+        }
+    }
+
+    public void clearParameters() {
+        if (m_realTransformer != null)
+            m_realTransformer.clearParameters();
+    }
+
+    public javax.xml.transform.ErrorListener getErrorListener() {
+        try {
+            materialize();
+            return m_realTransformer.getErrorListener();
+        } catch (TransformerException e) {
+            // will be caught later
+        }
+        return null;
+    }
+
+    public java.util.Properties getOutputProperties() {
+        try {
+            materialize();
+            return m_realTransformer.getOutputProperties();
+        } catch (TransformerException e) {
+            // will be caught later
+        }
+        return null;
+    }
+
+    public String getOutputProperty(String str)
+        throws java.lang.IllegalArgumentException {
+        try {
+            materialize();
+            return m_realTransformer.getOutputProperty(str);
+        } catch (TransformerException e) {
+            // will be caught later
+        }
+        return null;
+    }
+
+    public Object getParameter(String str) {
+        try {
+            materialize();
+            return m_realTransformer.getParameter(str);
+        } catch (TransformerException e) {
+            // will be caught later
+        }
+        return null;
+    }
+
+    public javax.xml.transform.URIResolver getURIResolver() {
+        try {
+            materialize();
+            return m_realTransformer.getURIResolver();
+        } catch (TransformerException e) {
+            // will be caught later
+        }
+        return null;
+    }
+
+    public void setErrorListener(
+        javax.xml.transform.ErrorListener errorListener)
+        throws java.lang.IllegalArgumentException {
+        try {
+            materialize();
+            m_realTransformer.setErrorListener(errorListener);
+        } catch (TransformerException e) {
+            // will be caught later
+        }
+    }
+
+    public void setOutputProperties(java.util.Properties properties)
+        throws java.lang.IllegalArgumentException {
+        try {
+            materialize();
+            m_realTransformer.setOutputProperties(properties);
+        } catch (TransformerException e) {
+            // will be caught later
+        }
+    }
+
+    public void setOutputProperty(String str, String str1)
+        throws java.lang.IllegalArgumentException {
+        try {
+            materialize();
+            m_realTransformer.setOutputProperty(str, str1);
+        } catch (TransformerException e) {
+            // will be caught later
+        }
+    }
+
+    public void setParameter(String str, Object obj) {
+        try {
+            materialize();
+            m_realTransformer.setParameter(str, obj);
+        } catch (TransformerException e) {
+            // will be caught later
+        }
+    }
+
+    public void setURIResolver(javax.xml.transform.URIResolver uRIResolver) {
+        try {
+            materialize();
+            m_realTransformer.setURIResolver(uRIResolver);
+        } catch (TransformerException e) {
+            // will be caught later
+        }
+    }
+
+    private InputStream getInputStreamFromSource(StreamSource s)
+        throws TransformerException {
+
+        InputStream stream = s.getInputStream();
+        if (stream != null)
+            return stream;
+
+        if (s.getReader() != null)
+            return null;
+
+        String systemId = s.getSystemId();
+        if (systemId != null) {
+            try {
+                String fileURL = systemId;
+
+                if (systemId.startsWith("file:///"))
+                {
+                    /*
+                     systemId is:
+                     file:///<drive>:/some/path/file.xml
+                     or
+                     file:///some/path/file.xml
+                    */
+
+                    String absolutePath = systemId.substring(7);
+                    /*
+                     /<drive>:/some/path/file.xml
+                     or
+                     /some/path/file.xml
+                    */
+
+                    boolean hasDriveDesignator = absolutePath.indexOf(":") > 0;
+                    if (hasDriveDesignator) {
+                      String driveDesignatedPath = absolutePath.substring(1);
+                      /*
+                      <drive>:/some/path/file.xml */
+                      fileURL = driveDesignatedPath;
+                    }
+                    else {
+                      /*
+                      /some/path/file.xml */
+                      fileURL = absolutePath;
+                    }
+                }
+                //return new FileInputStream(fileURL);
+                try {
+                    return new FileInputStream(new File(new URI(fileURL)));
+                } catch (URISyntaxException ex) {
+                    throw new TransformerException(ex);
+                }
+            } catch (IOException e) {
+                throw new TransformerException(e.toString());
+            }
+        }
+
+        throw new TransformerException("Unexpected StreamSource object");
+    }
+
+    //------------------------------------------------------------------------
+
+    public void transform(
+        javax.xml.transform.Source source,
+        javax.xml.transform.Result result)
+        throws javax.xml.transform.TransformerException
+    {
+        // StreamSource -> StreamResult
+        if ((source instanceof StreamSource)
+            && (result instanceof StreamResult)) {
+            try {
+                StreamSource streamSource = (StreamSource) source;
+                InputStream is = getInputStreamFromSource(streamSource);
+
+                OutputStream os = ((StreamResult) result).getOutputStream();
+                if (os == null)
+                    // TODO: We might want to fix this if it were to be used beyond
+                    // XmlDataContentHandler that we know uses only OutputStream
+                    throw new TransformerException("Unexpected StreamResult object contains null OutputStream");
+
+                if (is != null) {
+                    if (is.markSupported())
+                        is.mark(Integer.MAX_VALUE);
+                    int num;
+                    byte[] b = new byte[8192];
+                    while ((num = is.read(b)) != -1) {
+                        os.write(b, 0, num);
+                    }
+                    if (is.markSupported())
+                        is.reset();
+                    return;
+                }
+
+                Reader reader = streamSource.getReader();
+                if (reader != null) {
+
+                    if (reader.markSupported())
+                        reader.mark(Integer.MAX_VALUE);
+
+                    PushbackReader pushbackReader = new PushbackReader(reader, 4096);
+                    //some size to unread <?xml ....?>
+                    XMLDeclarationParser ev =
+                        new XMLDeclarationParser(pushbackReader);
+                    try {
+                        ev.parse();
+                    } catch (Exception ex) {
+                        throw new TransformerException(
+                            "Unable to run the JAXP transformer on a stream "
+                                + ex.getMessage());
+                    }
+                    Writer writer =
+                        new OutputStreamWriter(os /*, ev.getEncoding()*/);
+                    ev.writeTo(writer);         // doesn't write any, if no header
+
+                    int num;
+                    char[] ac = new char[8192];
+                    while ((num = pushbackReader.read(ac)) != -1) {
+                        writer.write(ac, 0, num);
+                    }
+                    writer.flush();
+
+                    if (reader.markSupported())
+                        reader.reset();
+                    return;
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+                throw new TransformerException(e.toString());
+            }
+
+            throw new TransformerException("Unexpected StreamSource object");
+        }
+        // FastInfosetSource -> DOMResult
+        else if (FastInfosetReflection.isFastInfosetSource(source)
+                && (result instanceof DOMResult))
+        {
+            try {
+                // Use reflection to avoid a static dep with FI
+                if (m_fiDOMDocumentParser == null) {
+                    m_fiDOMDocumentParser = FastInfosetReflection.DOMDocumentParser_new();
+                }
+
+                // m_fiDOMDocumentParser.parse(document, source.getInputStream())
+                FastInfosetReflection.DOMDocumentParser_parse(
+                    m_fiDOMDocumentParser,
+                    (Document) ((DOMResult) result).getNode(),
+                    FastInfosetReflection.FastInfosetSource_getInputStream(source));
+
+                // We're done!
+                return;
+            }
+            catch (Exception e) {
+                throw new TransformerException(e);
+            }
+        }
+        // DOMSource -> FastInfosetResult
+        else if ((source instanceof DOMSource)
+                && FastInfosetReflection.isFastInfosetResult(result))
+        {
+            try {
+                // Use reflection to avoid a static dep with FI
+                if (m_fiDOMDocumentSerializer == null) {
+                    m_fiDOMDocumentSerializer = FastInfosetReflection.DOMDocumentSerializer_new();
+                }
+
+                // m_fiDOMDocumentSerializer.setOutputStream(result.getOutputStream())
+                FastInfosetReflection.DOMDocumentSerializer_setOutputStream(
+                    m_fiDOMDocumentSerializer,
+                    FastInfosetReflection.FastInfosetResult_getOutputStream(result));
+
+                // m_fiDOMDocumentSerializer.serialize(node)
+                FastInfosetReflection.DOMDocumentSerializer_serialize(
+                    m_fiDOMDocumentSerializer,
+                    ((DOMSource) source).getNode());
+
+                // We're done!
+                return;
+            }
+            catch (Exception e) {
+                throw new TransformerException(e);
+            }
+        }
+
+        // All other cases -- use transformer object
+
+        materialize();
+        m_realTransformer.transform(source, result);
+    }
+
+    /**
+     * Threadlocal to hold a Transformer instance for this thread.
+     * CR : 6813167
+     */
+    //private static ThreadLocal effTransformer = new ThreadLocal();
+
+    /**
+     * Return Transformer instance for this thread, allocating a new one if
+     * necessary. Note that this method does not clear global parameters,
+     * properties or any other data set on a previously used transformer.
+     */
+    public static Transformer newTransformer() {
+        //CR : 6813167
+        /*Transformer tt = (Transformer) effTransformer.get();
+        if (tt == null) {
+            effTransformer.set(tt = new EfficientStreamingTransformer());
+        }
+        return tt;*/
+        return new EfficientStreamingTransformer();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/AttachmentPart.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,528 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+import java.io.InputStream;
+import java.io.Reader;
+import java.util.Iterator;
+
+import javax.activation.DataHandler;
+
+/**
+ * A single attachment to a <code>SOAPMessage</code> object. A <code>SOAPMessage</code>
+ * object may contain zero, one, or many <code>AttachmentPart</code> objects.
+ * Each <code>AttachmentPart</code> object consists of two parts,
+ * application-specific content and associated MIME headers. The
+ * MIME headers consists of name/value pairs that can be used to
+ * identify and describe the content.
+ * <p>
+ * An <code>AttachmentPart</code> object must conform to certain standards.
+ * <OL>
+ * <LI>It must conform to <a href="http://www.ietf.org/rfc/rfc2045.txt">
+ *     MIME [RFC2045] standards</a>
+ * <LI>It MUST contain content
+ * <LI>The header portion MUST include the following header:
+ *  <UL>
+ *   <LI><code>Content-Type</code><br>
+ *       This header identifies the type of data in the content of an
+ *       <code>AttachmentPart</code> object and MUST conform to [RFC2045].
+ *       The following is an example of a Content-Type header:
+ *       <PRE>
+ *       Content-Type:  application/xml
+ *       </PRE>
+ *       The following line of code, in which <code>ap</code> is an
+ *       <code>AttachmentPart</code> object, sets the header shown in
+ *       the previous example.
+ *       <PRE>
+ *       ap.setMimeHeader("Content-Type", "application/xml");
+ *       </PRE>
+ * <p>
+ *  </UL>
+ * </OL>
+ * <p>
+ * There are no restrictions on the content portion of an <code>
+ * AttachmentPart</code> object. The content may be anything from a
+ * simple plain text object to a complex XML document or image file.
+ *
+ * <p>
+ * An <code>AttachmentPart</code> object is created with the method
+ * <code>SOAPMessage.createAttachmentPart</code>. After setting its MIME headers,
+ *  the <code>AttachmentPart</code> object is added to the message
+ * that created it with the method <code>SOAPMessage.addAttachmentPart</code>.
+ *
+ * <p>
+ * The following code fragment, in which <code>m</code> is a
+ * <code>SOAPMessage</code> object and <code>contentStringl</code> is a
+ * <code>String</code>, creates an instance of <code>AttachmentPart</code>,
+ * sets the <code>AttachmentPart</code> object with some content and
+ * header information, and adds the <code>AttachmentPart</code> object to
+ * the <code>SOAPMessage</code> object.
+ * <PRE>
+ *     AttachmentPart ap1 = m.createAttachmentPart();
+ *     ap1.setContent(contentString1, "text/plain");
+ *     m.addAttachmentPart(ap1);
+ * </PRE>
+ *
+ *
+ * <p>
+ * The following code fragment creates and adds a second
+ * <code>AttachmentPart</code> instance to the same message. <code>jpegData</code>
+ * is a binary byte buffer representing the jpeg file.
+ * <PRE>
+ *     AttachmentPart ap2 = m.createAttachmentPart();
+ *     byte[] jpegData =  ...;
+ *     ap2.setContent(new ByteArrayInputStream(jpegData), "image/jpeg");
+ *     m.addAttachmentPart(ap2);
+ * </PRE>
+ * <p>
+ * The <code>getContent</code> method retrieves the contents and header from
+ * an <code>AttachmentPart</code> object. Depending on the
+ * <code>DataContentHandler</code> objects present, the returned
+ * <code>Object</code> can either be a typed Java object corresponding
+ * to the MIME type or an <code>InputStream</code> object that contains the
+ * content as bytes.
+ * <PRE>
+ *     String content1 = ap1.getContent();
+ *     java.io.InputStream content2 = ap2.getContent();
+ * </PRE>
+ *
+ * The method <code>clearContent</code> removes all the content from an
+ * <code>AttachmentPart</code> object but does not affect its header information.
+ * <PRE>
+ *     ap1.clearContent();
+ * </PRE>
+ *
+ * @since 1.6
+ */
+
+public abstract class AttachmentPart {
+    /**
+     * Returns the number of bytes in this <code>AttachmentPart</code>
+     * object.
+     *
+     * @return the size of this <code>AttachmentPart</code> object in bytes
+     *         or -1 if the size cannot be determined
+     * @exception SOAPException if the content of this attachment is
+     *            corrupted of if there was an exception while trying
+     *            to determine the size.
+     */
+    public abstract int getSize() throws SOAPException;
+
+    /**
+     * Clears out the content of this <code>AttachmentPart</code> object.
+     * The MIME header portion is left untouched.
+     */
+    public abstract void clearContent();
+
+    /**
+     * Gets the content of this <code>AttachmentPart</code> object as a Java
+     * object. The type of the returned Java object depends on (1) the
+     * <code>DataContentHandler</code> object that is used to interpret the bytes
+     * and (2) the <code>Content-Type</code> given in the header.
+     * <p>
+     * For the MIME content types "text/plain", "text/html" and "text/xml", the
+     * <code>DataContentHandler</code> object does the conversions to and
+     * from the Java types corresponding to the MIME types.
+     * For other MIME types,the <code>DataContentHandler</code> object
+     * can return an <code>InputStream</code> object that contains the content data
+     * as raw bytes.
+     * <p>
+     * A SAAJ-compliant implementation must, as a minimum, return a
+     * <code>java.lang.String</code> object corresponding to any content
+     * stream with a <code>Content-Type</code> value of
+     * <code>text/plain</code>, a
+     * <code>javax.xml.transform.stream.StreamSource</code> object corresponding to a
+     * content stream with a <code>Content-Type</code> value of
+     * <code>text/xml</code>, a <code>java.awt.Image</code> object
+     * corresponding to a content stream with a
+     * <code>Content-Type</code> value of <code>image/gif</code> or
+     * <code>image/jpeg</code>.  For those content types that an
+     * installed <code>DataContentHandler</code> object does not understand, the
+     * <code>DataContentHandler</code> object is required to return a
+     * <code>java.io.InputStream</code> object with the raw bytes.
+     *
+     * @return a Java object with the content of this <code>AttachmentPart</code>
+     *         object
+     *
+     * @exception SOAPException if there is no content set into this
+     *            <code>AttachmentPart</code> object or if there was a data
+     *            transformation error
+     */
+    public abstract Object getContent() throws SOAPException;
+
+    /**
+     * Gets the content of this <code>AttachmentPart</code> object as an
+     * InputStream as if a call had been made to <code>getContent</code> and no
+     * <code>DataContentHandler</code> had been registered for the
+     * <code>content-type</code> of this <code>AttachmentPart</code>.
+     *<p>
+     * Note that reading from the returned InputStream would result in consuming
+     * the data in the stream. It is the responsibility of the caller to reset
+     * the InputStream appropriately before calling a Subsequent API. If a copy
+     * of the raw attachment content is required then the {@link #getRawContentBytes} API
+     * should be used instead.
+     *
+     * @return an <code>InputStream</code> from which the raw data contained by
+     *      the <code>AttachmentPart</code> can be accessed.
+     *
+     * @throws SOAPException if there is no content set into this
+     *      <code>AttachmentPart</code> object or if there was a data
+     *      transformation error.
+     *
+     * @since 1.6, SAAJ 1.3
+     * @see #getRawContentBytes
+     */
+    public abstract InputStream getRawContent() throws SOAPException;
+
+    /**
+     * Gets the content of this <code>AttachmentPart</code> object as a
+     * byte[] array as if a call had been made to <code>getContent</code> and no
+     * <code>DataContentHandler</code> had been registered for the
+     * <code>content-type</code> of this <code>AttachmentPart</code>.
+     *
+     * @return a <code>byte[]</code> array containing the raw data of the
+     *      <code>AttachmentPart</code>.
+     *
+     * @throws SOAPException if there is no content set into this
+     *      <code>AttachmentPart</code> object or if there was a data
+     *      transformation error.
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public abstract byte[] getRawContentBytes() throws SOAPException;
+
+    /**
+     * Returns an <code>InputStream</code> which can be used to obtain the
+     * content of <code>AttachmentPart</code>  as Base64 encoded
+     * character data, this method would base64 encode the raw bytes
+     * of the attachment and return.
+     *
+     * @return an <code>InputStream</code> from which the Base64 encoded
+     *       <code>AttachmentPart</code> can be read.
+     *
+     * @throws SOAPException if there is no content set into this
+     *      <code>AttachmentPart</code> object or if there was a data
+     *      transformation error.
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public abstract InputStream getBase64Content() throws SOAPException;
+
+    /**
+     * Sets the content of this attachment part to that of the given
+     * <code>Object</code> and sets the value of the <code>Content-Type</code>
+     * header to the given type. The type of the
+     * <code>Object</code> should correspond to the value given for the
+     * <code>Content-Type</code>. This depends on the particular
+     * set of <code>DataContentHandler</code> objects in use.
+     *
+     *
+     * @param object the Java object that makes up the content for
+     *               this attachment part
+     * @param contentType the MIME string that specifies the type of
+     *                  the content
+     *
+     * @exception IllegalArgumentException may be thrown if the contentType
+     *            does not match the type of the content object, or if there
+     *            was no <code>DataContentHandler</code> object for this
+     *            content object
+     *
+     * @see #getContent
+     */
+    public abstract void setContent(Object object, String contentType);
+
+    /**
+     * Sets the content of this attachment part to that contained by the
+     * <code>InputStream</code> <code>content</code> and sets the value of the
+     * <code>Content-Type</code> header to the value contained in
+     * <code>contentType</code>.
+     * <P>
+     *  A subsequent call to getSize() may not be an exact measure
+     *  of the content size.
+     *
+     * @param content the raw data to add to the attachment part
+     * @param contentType the value to set into the <code>Content-Type</code>
+     * header
+     *
+     * @exception SOAPException if an there is an error in setting the content
+     * @exception NullPointerException if <code>content</code> is null
+     * @since 1.6, SAAJ 1.3
+     */
+    public abstract void setRawContent(InputStream content, String contentType) throws SOAPException;
+
+    /**
+     * Sets the content of this attachment part to that contained by the
+     * <code>byte[]</code> array <code>content</code> and sets the value of the
+     * <code>Content-Type</code> header to the value contained in
+     * <code>contentType</code>.
+     *
+     * @param content the raw data to add to the attachment part
+     * @param contentType the value to set into the <code>Content-Type</code>
+     * header
+     * @param offset the offset in the byte array of the content
+     * @param len the number of bytes that form the content
+     *
+     * @exception SOAPException if an there is an error in setting the content
+     * or content is null
+     * @since 1.6, SAAJ 1.3
+     */
+    public abstract void setRawContentBytes(
+        byte[] content, int offset, int len,  String contentType)
+        throws SOAPException;
+
+
+    /**
+     * Sets the content of this attachment part from the Base64 source
+     * <code>InputStream</code>  and sets the value of the
+     * <code>Content-Type</code> header to the value contained in
+     * <code>contentType</code>, This method would first decode the base64
+     * input and write the resulting raw bytes to the attachment.
+     * <P>
+     *  A subsequent call to getSize() may not be an exact measure
+     *  of the content size.
+     *
+     * @param content the base64 encoded data to add to the attachment part
+     * @param contentType the value to set into the <code>Content-Type</code>
+     * header
+     *
+     * @exception SOAPException if an there is an error in setting the content
+     * @exception NullPointerException if <code>content</code> is null
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public abstract void setBase64Content(
+        InputStream content, String contentType) throws SOAPException;
+
+
+    /**
+     * Gets the <code>DataHandler</code> object for this <code>AttachmentPart</code>
+     * object.
+     *
+     * @return the <code>DataHandler</code> object associated with this
+     *         <code>AttachmentPart</code> object
+     *
+     * @exception SOAPException if there is no data in
+     * this <code>AttachmentPart</code> object
+     */
+    public abstract DataHandler getDataHandler()
+        throws SOAPException;
+
+    /**
+     * Sets the given <code>DataHandler</code> object as the data handler
+     * for this <code>AttachmentPart</code> object. Typically, on an incoming
+     * message, the data handler is automatically set. When
+     * a message is being created and populated with content, the
+     * <code>setDataHandler</code> method can be used to get data from
+     * various data sources into the message.
+     *
+     * @param dataHandler the <code>DataHandler</code> object to be set
+     *
+     * @exception IllegalArgumentException if there was a problem with
+     *            the specified <code>DataHandler</code> object
+     */
+    public abstract void setDataHandler(DataHandler dataHandler);
+
+
+    /**
+     * Gets the value of the MIME header whose name is "Content-ID".
+     *
+     * @return a <code>String</code> giving the value of the
+     *          "Content-ID" header or <code>null</code> if there
+     *          is none
+     * @see #setContentId
+     */
+    public String getContentId() {
+        String[] values = getMimeHeader("Content-ID");
+        if (values != null && values.length > 0)
+            return values[0];
+        return null;
+    }
+
+    /**
+     * Gets the value of the MIME header whose name is "Content-Location".
+     *
+     * @return a <code>String</code> giving the value of the
+     *          "Content-Location" header or <code>null</code> if there
+     *          is none
+     */
+    public String getContentLocation() {
+        String[] values = getMimeHeader("Content-Location");
+        if (values != null && values.length > 0)
+            return values[0];
+        return null;
+    }
+
+    /**
+     * Gets the value of the MIME header whose name is "Content-Type".
+     *
+     * @return a <code>String</code> giving the value of the
+     *          "Content-Type" header or <code>null</code> if there
+     *          is none
+     */
+    public String getContentType() {
+        String[] values = getMimeHeader("Content-Type");
+        if (values != null && values.length > 0)
+            return values[0];
+        return null;
+    }
+
+    /**
+     * Sets the MIME header whose name is "Content-ID" with the given value.
+     *
+     * @param contentId a <code>String</code> giving the value of the
+     *          "Content-ID" header
+     *
+     * @exception IllegalArgumentException if there was a problem with
+     *            the specified <code>contentId</code> value
+     * @see #getContentId
+     */
+    public void setContentId(String contentId)
+    {
+        setMimeHeader("Content-ID", contentId);
+    }
+
+
+    /**
+     * Sets the MIME header whose name is "Content-Location" with the given value.
+     *
+     *
+     * @param contentLocation a <code>String</code> giving the value of the
+     *          "Content-Location" header
+     * @exception IllegalArgumentException if there was a problem with
+     *            the specified content location
+     */
+    public void setContentLocation(String contentLocation)
+    {
+        setMimeHeader("Content-Location", contentLocation);
+    }
+
+    /**
+     * Sets the MIME header whose name is "Content-Type" with the given value.
+     *
+     * @param contentType a <code>String</code> giving the value of the
+     *          "Content-Type" header
+     *
+     * @exception IllegalArgumentException if there was a problem with
+     *            the specified content type
+     */
+    public void setContentType(String contentType)
+    {
+        setMimeHeader("Content-Type", contentType);
+    }
+
+    /**
+     * Removes all MIME headers that match the given name.
+     *
+     * @param header the string name of the MIME header/s to
+     *               be removed
+     */
+    public abstract void removeMimeHeader(String header);
+
+    /**
+     * Removes all the MIME header entries.
+     */
+    public abstract void removeAllMimeHeaders();
+
+
+    /**
+     * Gets all the values of the header identified by the given
+     * <code>String</code>.
+     *
+     * @param name the name of the header; example: "Content-Type"
+     * @return a <code>String</code> array giving the value for the
+     *         specified header
+     * @see #setMimeHeader
+     */
+    public abstract String[] getMimeHeader(String name);
+
+
+    /**
+     * Changes the first header entry that matches the given name
+     * to the given value, adding a new header if no existing header
+     * matches. This method also removes all matching headers but the first. <p>
+     *
+     * Note that RFC822 headers can only contain US-ASCII characters.
+     *
+     * @param   name    a <code>String</code> giving the name of the header
+     *                  for which to search
+     * @param   value   a <code>String</code> giving the value to be set for
+     *                  the header whose name matches the given name
+     *
+     * @exception IllegalArgumentException if there was a problem with
+     *            the specified mime header name or value
+     */
+    public abstract void setMimeHeader(String name, String value);
+
+
+    /**
+     * Adds a MIME header with the specified name and value to this
+     * <code>AttachmentPart</code> object.
+     * <p>
+     * Note that RFC822 headers can contain only US-ASCII characters.
+     *
+     * @param   name    a <code>String</code> giving the name of the header
+     *                  to be added
+     * @param   value   a <code>String</code> giving the value of the header
+     *                  to be added
+     *
+     * @exception IllegalArgumentException if there was a problem with
+     *            the specified mime header name or value
+     */
+    public abstract void addMimeHeader(String name, String value);
+
+    /**
+     * Retrieves all the headers for this <code>AttachmentPart</code> object
+     * as an iterator over the <code>MimeHeader</code> objects.
+     *
+     * @return  an <code>Iterator</code> object with all of the Mime
+     *          headers for this <code>AttachmentPart</code> object
+     */
+    public abstract Iterator getAllMimeHeaders();
+
+    /**
+     * Retrieves all <code>MimeHeader</code> objects that match a name in
+     * the given array.
+     *
+     * @param names a <code>String</code> array with the name(s) of the
+     *        MIME headers to be returned
+     * @return  all of the MIME headers that match one of the names in the
+     *           given array as an <code>Iterator</code> object
+     */
+    public abstract Iterator getMatchingMimeHeaders(String[] names);
+
+    /**
+     * Retrieves all <code>MimeHeader</code> objects whose name does
+     * not match a name in the given array.
+     *
+     * @param names a <code>String</code> array with the name(s) of the
+     *        MIME headers not to be returned
+     * @return  all of the MIME headers in this <code>AttachmentPart</code> object
+     *          except those that match one of the names in the
+     *           given array.  The nonmatching MIME headers are returned as an
+     *           <code>Iterator</code> object.
+     */
+    public abstract Iterator getNonMatchingMimeHeaders(String[] names);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/Detail.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
+/**
+ * A container for <code>DetailEntry</code> objects. <code>DetailEntry</code>
+ * objects give detailed error information that is application-specific and
+ * related to the <code>SOAPBody</code> object that contains it.
+ *<P>
+ * A <code>Detail</code> object, which is part of a <code>SOAPFault</code>
+ * object, can be retrieved using the method <code>SOAPFault.getDetail</code>.
+ * The <code>Detail</code> interface provides two methods. One creates a new
+ * <code>DetailEntry</code> object and also automatically adds it to
+ * the <code>Detail</code> object. The second method gets a list of the
+ * <code>DetailEntry</code> objects contained in a <code>Detail</code>
+ * object.
+ * <P>
+ * The following code fragment, in which <i>sf</i> is a <code>SOAPFault</code>
+ * object, gets its <code>Detail</code> object (<i>d</i>), adds a new
+ * <code>DetailEntry</code> object to <i>d</i>, and then gets a list of all the
+ * <code>DetailEntry</code> objects in <i>d</i>. The code also creates a
+ * <code>Name</code> object to pass to the method <code>addDetailEntry</code>.
+ * The variable <i>se</i>, used to create the <code>Name</code> object,
+ * is a <code>SOAPEnvelope</code> object.
+ * <PRE>
+ *    Detail d = sf.getDetail();
+ *    Name name = se.createName("GetLastTradePrice", "WOMBAT",
+ *                                "http://www.wombat.org/trader");
+ *    d.addDetailEntry(name);
+ *    Iterator it = d.getDetailEntries();
+ * </PRE>
+ *
+ * @since 1.6
+ */
+public interface Detail extends SOAPFaultElement {
+
+    /**
+     * Creates a new <code>DetailEntry</code> object with the given
+     * name and adds it to this <code>Detail</code> object.
+     *
+     * @param name a <code>Name</code> object identifying the
+     *         new <code>DetailEntry</code> object
+     *
+     * @exception SOAPException thrown when there is a problem in adding a
+     * DetailEntry object to this Detail object.
+     *
+     * @see Detail#addDetailEntry(QName qname)
+     */
+    public DetailEntry addDetailEntry(Name name) throws SOAPException;
+
+    /**
+     * Creates a new <code>DetailEntry</code> object with the given
+     * QName and adds it to this <code>Detail</code> object. This method
+     * is the preferred over the one using Name.
+     *
+     * @param qname a <code>QName</code> object identifying the
+     *         new <code>DetailEntry</code> object
+     *
+     * @exception SOAPException thrown when there is a problem in adding a
+     * DetailEntry object to this Detail object.
+     *
+     * @see Detail#addDetailEntry(Name name)
+     * @since 1.6, SAAJ 1.3
+     */
+    public DetailEntry addDetailEntry(QName qname) throws SOAPException;
+
+    /**
+     * Gets an Iterator over all of the <code>DetailEntry</code>s in this <code>Detail</code> object.
+     *
+     * @return an <code>Iterator</code> object over the <code>DetailEntry</code>
+     *             objects in this <code>Detail</code> object
+     */
+    public Iterator getDetailEntries();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/DetailEntry.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+/**
+ * The content for a <code>Detail</code> object, giving details for
+ * a <code>SOAPFault</code> object.  A <code>DetailEntry</code> object,
+ * which carries information about errors related to the <code>SOAPBody</code>
+ * object that contains it, is application-specific.
+ *
+ * @since 1.6
+ */
+public interface DetailEntry extends SOAPElement {
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/FactoryFinder.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,236 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+import java.io.*;
+import java.util.Properties;
+
+
+class FactoryFinder {
+
+    /**
+     * Creates an instance of the specified class using the specified
+     * <code>ClassLoader</code> object.
+     *
+     * @exception SOAPException if the given class could not be found
+     *            or could not be instantiated
+     */
+    private static Object newInstance(String className,
+                                      ClassLoader classLoader)
+            throws SOAPException
+    {
+        try {
+            Class spiClass = safeLoadClass(className, classLoader);
+            return spiClass.newInstance();
+
+        } catch (ClassNotFoundException x) {
+            throw new SOAPException("Provider " + className + " not found", x);
+        } catch (Exception x) {
+            throw new SOAPException("Provider " + className + " could not be instantiated: " + x, x);
+        }
+    }
+
+    /**
+     * Finds the implementation <code>Class</code> object for the given
+     * factory name, or null if that fails.
+     * <P>
+     * This method is package private so that this code can be shared.
+     *
+     * @return the <code>Class</code> object of the specified message factory;
+     *         or <code>null</code>
+     *
+     * @param factoryId             the name of the factory to find, which is
+     *                              a system property
+     * @exception SOAPException if there is a SOAP error
+     */
+    static Object find(String factoryId)
+            throws SOAPException
+    {
+        return find(factoryId, null, false);
+    }
+
+    /**
+     * Finds the implementation <code>Class</code> object for the given
+     * factory name, or if that fails, finds the <code>Class</code> object
+     * for the given fallback class name. The arguments supplied must be
+     * used in order. If using the first argument is successful, the second
+     * one will not be used.
+     * <P>
+     * This method is package private so that this code can be shared.
+     *
+     * @return the <code>Class</code> object of the specified message factory;
+     *         may be <code>null</code>
+     *
+     * @param factoryId             the name of the factory to find, which is
+     *                              a system property
+     * @param fallbackClassName     the implementation class name, which is
+     *                              to be used only if nothing else
+     *                              is found; <code>null</code> to indicate that
+     *                              there is no fallback class name
+     * @exception SOAPException if there is a SOAP error
+     */
+    static Object find(String factoryId, String fallbackClassName)
+            throws SOAPException
+    {
+        return find(factoryId, fallbackClassName, true);
+    }
+
+    /**
+     * Finds the implementation <code>Class</code> object for the given
+     * factory name, or if that fails, finds the <code>Class</code> object
+     * for the given default class name, but only if <code>tryFallback</code>
+     * is <code>true</code>.  The arguments supplied must be used in order
+     * If using the first argument is successful, the second one will not
+     * be used.  Note the default class name may be needed even if fallback
+     * is not to be attempted, so certain error conditions can be handled.
+     * <P>
+     * This method is package private so that this code can be shared.
+     *
+     * @return the <code>Class</code> object of the specified message factory;
+     *         may not be <code>null</code>
+     *
+     * @param factoryId             the name of the factory to find, which is
+     *                              a system property
+     * @param defaultClassName      the implementation class name, which is
+     *                              to be used only if nothing else
+     *                              is found; <code>null</code> to indicate
+     *                              that there is no default class name
+     * @param tryFallback           whether to try the default class as a
+     *                              fallback
+     * @exception SOAPException if there is a SOAP error
+     */
+    static Object find(String factoryId, String defaultClassName,
+                       boolean tryFallback) throws SOAPException {
+        ClassLoader classLoader;
+        try {
+            classLoader = Thread.currentThread().getContextClassLoader();
+        } catch (Exception x) {
+            throw new SOAPException(x.toString(), x);
+        }
+
+        // Use the system property first
+        try {
+            String systemProp =
+                    System.getProperty( factoryId );
+            if( systemProp!=null) {
+                return newInstance(systemProp, classLoader);
+            }
+        } catch (SecurityException se) {
+        }
+
+        // try to read from $java.home/lib/jaxm.properties
+        try {
+            String javah=System.getProperty( "java.home" );
+            String configFile = javah + File.separator +
+                    "lib" + File.separator + "jaxm.properties";
+            File f=new File( configFile );
+            if( f.exists()) {
+                Properties props=new Properties();
+                props.load( new FileInputStream(f));
+                String factoryClassName = props.getProperty(factoryId);
+                return newInstance(factoryClassName, classLoader);
+            }
+        } catch(Exception ex ) {
+        }
+
+        String serviceId = "META-INF/services/" + factoryId;
+        // try to find services in CLASSPATH
+        try {
+            InputStream is=null;
+            if (classLoader == null) {
+                is=ClassLoader.getSystemResourceAsStream(serviceId);
+            } else {
+                is=classLoader.getResourceAsStream(serviceId);
+            }
+
+            if( is!=null ) {
+                BufferedReader rd =
+                        new BufferedReader(new InputStreamReader(is, "UTF-8"));
+
+                String factoryClassName = rd.readLine();
+                rd.close();
+
+                if (factoryClassName != null &&
+                        ! "".equals(factoryClassName)) {
+                    return newInstance(factoryClassName, classLoader);
+                }
+            }
+        } catch( Exception ex ) {
+        }
+
+        // If not found and fallback should not be tried, return a null result.
+        if (!tryFallback)
+            return null;
+
+        // We didn't find the class through the usual means so try the default
+        // (built in) factory if specified.
+        if (defaultClassName == null) {
+            throw new SOAPException(
+                    "Provider for " + factoryId + " cannot be found", null);
+        }
+        return newInstance(defaultClassName, classLoader);
+    }
+
+    /**
+     * Loads the class, provided that the calling thread has an access to the
+     * class being loaded. If this is the specified default factory class and it
+     * is restricted by package.access we get a SecurityException and can do a
+     * Class.forName() on it so it will be loaded by the bootstrap class loader.
+     */
+    private static Class safeLoadClass(String className,
+                                       ClassLoader classLoader)
+            throws ClassNotFoundException {
+        try {
+            // make sure that the current thread has an access to the package of the given name.
+            SecurityManager s = System.getSecurityManager();
+            if (s != null) {
+                int i = className.lastIndexOf('.');
+                if (i != -1) {
+                    s.checkPackageAccess(className.substring(0, i));
+                }
+            }
+
+            if (classLoader == null)
+                return Class.forName(className);
+            else
+                return classLoader.loadClass(className);
+        } catch (SecurityException se) {
+            // (only) default implementation can be loaded
+            // using bootstrap class loader:
+            if (isDefaultImplementation(className))
+                return Class.forName(className);
+
+            throw se;
+        }
+    }
+
+    private static boolean isDefaultImplementation(String className) {
+        return MessageFactory.DEFAULT_MESSAGE_FACTORY.equals(className) ||
+                SOAPFactory.DEFAULT_SOAP_FACTORY.equals(className) ||
+                SOAPConnectionFactory.DEFAULT_SOAP_CONNECTION_FACTORY.equals(className) ||
+                SAAJMetaFactory.DEFAULT_META_FACTORY_CLASS.equals(className);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/MessageFactory.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,202 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * A factory for creating <code>SOAPMessage</code> objects.
+ * <P>
+ * A SAAJ client can create a <code>MessageFactory</code> object
+ * using the method <code>newInstance</code>, as shown in the following
+ * lines of code.
+ * <PRE>
+ *       MessageFactory mf = MessageFactory.newInstance();
+ *       MessageFactory mf12 = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
+ * </PRE>
+ * <P>
+ * All <code>MessageFactory</code> objects, regardless of how they are
+ * created, will produce <code>SOAPMessage</code> objects that
+ * have the following elements by default:
+ * <UL>
+ *  <LI>A <code>SOAPPart</code> object
+ *  <LI>A <code>SOAPEnvelope</code> object
+ *  <LI>A <code>SOAPBody</code> object
+ *  <LI>A <code>SOAPHeader</code> object
+ * </UL>
+ * In some cases, specialized MessageFactory objects may be obtained that produce messages
+ * prepopulated with additional entries in the <code>SOAPHeader</code> object and the
+ * <code>SOAPBody</code> object.
+ * The content of a new <code>SOAPMessage</code> object depends on which of the two
+ * <code>MessageFactory</code> methods is used to create it.
+ * <UL>
+ *  <LI><code>createMessage()</code> <BR>
+ *      This is the method clients would normally use to create a request message.
+ *  <LI><code>createMessage(MimeHeaders, java.io.InputStream)</code> -- message has
+ *       content from the <code>InputStream</code> object and headers from the
+ *       <code>MimeHeaders</code> object <BR>
+ *        This method can be used internally by a service implementation to
+ *        create a message that is a response to a request.
+ * </UL>
+ *
+ * @since 1.6
+ */
+public abstract class MessageFactory {
+
+    static final String DEFAULT_MESSAGE_FACTORY
+        = "com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl";
+
+    static private final String MESSAGE_FACTORY_PROPERTY
+        = "javax.xml.soap.MessageFactory";
+
+    /**
+     * Creates a new <code>MessageFactory</code> object that is an instance
+     * of the default implementation (SOAP 1.1),
+     *
+     * This method uses the following ordered lookup procedure to determine the MessageFactory implementation class to load:
+     * <UL>
+     *  <LI> Use the javax.xml.soap.MessageFactory system property.
+     *  <LI> Use the properties file "lib/jaxm.properties" in the JRE directory. This configuration file is in standard
+     * java.util.Properties format and contains the fully qualified name of the implementation class with the key being the
+     * system property defined above.
+     *  <LI> Use the Services API (as detailed in the JAR specification), if available, to determine the classname. The Services API
+     * will look for a classname in the file META-INF/services/javax.xml.soap.MessageFactory in jars available to the runtime.
+     *  <LI> Use the SAAJMetaFactory instance to locate the MessageFactory implementation class.
+     * </UL>
+
+     *
+     * @return a new instance of a <code>MessageFactory</code>
+     *
+     * @exception SOAPException if there was an error in creating the
+     *            default implementation of the
+     *            <code>MessageFactory</code>.
+     * @see SAAJMetaFactory
+     */
+
+    public static MessageFactory newInstance() throws SOAPException {
+
+
+        try {
+            MessageFactory factory = (MessageFactory) FactoryFinder.find(
+                    MESSAGE_FACTORY_PROPERTY,
+                    DEFAULT_MESSAGE_FACTORY,
+                    false);
+
+            if (factory != null) {
+                return factory;
+            }
+            return newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
+
+        } catch (Exception ex) {
+            throw new SOAPException(
+                    "Unable to create message factory for SOAP: "
+                                    +ex.getMessage());
+        }
+
+    }
+
+    /**
+     * Creates a new <code>MessageFactory</code> object that is an instance
+     * of the specified implementation.  May be a dynamic message factory,
+     * a SOAP 1.1 message factory, or a SOAP 1.2 message factory. A dynamic
+     * message factory creates messages based on the MIME headers specified
+     * as arguments to the <code>createMessage</code> method.
+     *
+     * This method uses the SAAJMetaFactory to locate the implementation class
+     * and create the MessageFactory instance.
+     *
+     * @return a new instance of a <code>MessageFactory</code>
+     *
+     * @param protocol  a string constant representing the class of the
+     *                   specified message factory implementation. May be
+     *                   either <code>DYNAMIC_SOAP_PROTOCOL</code>,
+     *                   <code>DEFAULT_SOAP_PROTOCOL</code> (which is the same
+     *                   as) <code>SOAP_1_1_PROTOCOL</code>, or
+     *                   <code>SOAP_1_2_PROTOCOL</code>.
+     *
+     * @exception SOAPException if there was an error in creating the
+     *            specified implementation of  <code>MessageFactory</code>.
+     * @see SAAJMetaFactory
+     * @since 1.6, SAAJ 1.3
+     */
+    public static MessageFactory newInstance(String protocol) throws SOAPException {
+        return SAAJMetaFactory.getInstance().newMessageFactory(protocol);
+    }
+
+    /**
+     * Creates a new <code>SOAPMessage</code> object with the default
+     * <code>SOAPPart</code>, <code>SOAPEnvelope</code>, <code>SOAPBody</code>,
+     * and <code>SOAPHeader</code> objects. Profile-specific message factories
+     * can choose to prepopulate the <code>SOAPMessage</code> object with
+     * profile-specific headers.
+     * <P>
+     * Content can be added to this message's <code>SOAPPart</code> object, and
+     * the message can be sent "as is" when a message containing only a SOAP part
+     * is sufficient. Otherwise, the <code>SOAPMessage</code> object needs
+     * to create one or more <code>AttachmentPart</code> objects and
+     * add them to itself. Any content that is not in XML format must be
+     * in an <code>AttachmentPart</code> object.
+     *
+     * @return a new <code>SOAPMessage</code> object
+     * @exception SOAPException if a SOAP error occurs
+     * @exception UnsupportedOperationException if the protocol of this
+     *      <code>MessageFactory</code> instance is <code>DYNAMIC_SOAP_PROTOCOL</code>
+     */
+    public abstract SOAPMessage createMessage()
+        throws SOAPException;
+
+    /**
+     * Internalizes the contents of the given <code>InputStream</code> object into a
+     * new <code>SOAPMessage</code> object and returns the <code>SOAPMessage</code>
+     * object.
+     *
+     * @param in the <code>InputStream</code> object that contains the data
+     *           for a message
+     * @param headers the transport-specific headers passed to the
+     *        message in a transport-independent fashion for creation of the
+     *        message
+     * @return a new <code>SOAPMessage</code> object containing the data from
+     *         the given <code>InputStream</code> object
+     *
+     * @exception IOException if there is a problem in reading data from
+     *            the input stream
+     *
+     * @exception SOAPException may be thrown if the message is invalid
+     *
+     * @exception IllegalArgumentException if the <code>MessageFactory</code>
+     *      requires one or more MIME headers to be present in the
+     *      <code>headers</code> parameter and they are missing.
+     *      <code>MessageFactory</code> implementations for
+     *      <code>SOAP_1_1_PROTOCOL</code> or
+     *      <code>SOAP_1_2_PROTOCOL</code> must not throw
+     *      <code>IllegalArgumentException</code> for this reason.
+     */
+    public abstract SOAPMessage createMessage(MimeHeaders headers,
+                                              InputStream in)
+        throws IOException, SOAPException;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/MimeHeader.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+
+/**
+ * An object that stores a MIME header name and its value. One or more
+ * <code>MimeHeader</code> objects may be contained in a <code>MimeHeaders</code>
+ * object.
+ *
+ * @see MimeHeaders
+ * @since 1.6
+ */
+public class MimeHeader {
+
+   private String name;
+   private String value;
+
+   /**
+    * Constructs a <code>MimeHeader</code> object initialized with the given
+    * name and value.
+    *
+    * @param name a <code>String</code> giving the name of the header
+    * @param value a <code>String</code> giving the value of the header
+    */
+    public MimeHeader(String name, String value) {
+        this.name = name;
+        this.value = value;
+    }
+
+    /**
+     * Returns the name of this <code>MimeHeader</code> object.
+     *
+     * @return the name of the header as a <code>String</code>
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Returns the value of this <code>MimeHeader</code> object.
+     *
+     * @return  the value of the header as a <code>String</code>
+     */
+    public String getValue() {
+        return value;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/MimeHeaders.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,270 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+import java.util.Iterator;
+import java.util.Vector;
+
+/**
+ * A container for <code>MimeHeader</code> objects, which represent
+ * the MIME headers present in a MIME part of a message.
+ *
+ * <p>This class is used primarily when an application wants to
+ * retrieve specific attachments based on certain MIME headers and
+ * values. This class will most likely be used by implementations of
+ * <code>AttachmentPart</code> and other MIME dependent parts of the SAAJ
+ * API.
+ * @see SOAPMessage#getAttachments
+ * @see AttachmentPart
+ * @since 1.6
+ */
+public class MimeHeaders {
+    private Vector headers;
+
+   /**
+    * Constructs a default <code>MimeHeaders</code> object initialized with
+    * an empty <code>Vector</code> object.
+    */
+    public MimeHeaders() {
+        headers = new Vector();
+    }
+
+    /**
+     * Returns all of the values for the specified header as an array of
+     * <code>String</code> objects.
+     *
+     * @param   name the name of the header for which values will be returned
+     * @return a <code>String</code> array with all of the values for the
+     *         specified header
+     * @see #setHeader
+     */
+    public String[] getHeader(String name) {
+        Vector values = new Vector();
+
+        for(int i = 0; i < headers.size(); i++) {
+            MimeHeader hdr = (MimeHeader) headers.elementAt(i);
+            if (hdr.getName().equalsIgnoreCase(name)
+                && hdr.getValue() != null)
+                values.addElement(hdr.getValue());
+        }
+
+        if (values.size() == 0)
+            return null;
+
+        String r[] = new String[values.size()];
+        values.copyInto(r);
+        return r;
+    }
+
+    /**
+     * Replaces the current value of the first header entry whose name matches
+     * the given name with the given value, adding a new header if no existing header
+     * name matches. This method also removes all matching headers after the first one.
+     * <P>
+     * Note that RFC822 headers can contain only US-ASCII characters.
+     *
+     * @param   name a <code>String</code> with the name of the header for
+     *          which to search
+     * @param   value a <code>String</code> with the value that will replace the
+     *          current value of the specified header
+     *
+     * @exception IllegalArgumentException if there was a problem in the
+     * mime header name or the value being set
+     * @see #getHeader
+     */
+    public void setHeader(String name, String value)
+    {
+        boolean found = false;
+
+        if ((name == null) || name.equals(""))
+            throw new IllegalArgumentException("Illegal MimeHeader name");
+
+        for(int i = 0; i < headers.size(); i++) {
+            MimeHeader hdr = (MimeHeader) headers.elementAt(i);
+            if (hdr.getName().equalsIgnoreCase(name)) {
+                if (!found) {
+                    headers.setElementAt(new MimeHeader(hdr.getName(),
+                                                        value), i);
+                    found = true;
+                }
+                else
+                    headers.removeElementAt(i--);
+            }
+        }
+
+        if (!found)
+            addHeader(name, value);
+    }
+
+    /**
+     * Adds a <code>MimeHeader</code> object with the specified name and value
+     * to this <code>MimeHeaders</code> object's list of headers.
+     * <P>
+     * Note that RFC822 headers can contain only US-ASCII characters.
+     *
+     * @param   name a <code>String</code> with the name of the header to
+     *          be added
+     * @param   value a <code>String</code> with the value of the header to
+     *          be added
+     *
+     * @exception IllegalArgumentException if there was a problem in the
+     * mime header name or value being added
+     */
+    public void addHeader(String name, String value)
+    {
+        if ((name == null) || name.equals(""))
+            throw new IllegalArgumentException("Illegal MimeHeader name");
+
+        int pos = headers.size();
+
+        for(int i = pos - 1 ; i >= 0; i--) {
+            MimeHeader hdr = (MimeHeader) headers.elementAt(i);
+            if (hdr.getName().equalsIgnoreCase(name)) {
+                headers.insertElementAt(new MimeHeader(name, value),
+                                        i+1);
+                return;
+            }
+        }
+        headers.addElement(new MimeHeader(name, value));
+    }
+
+    /**
+     * Remove all <code>MimeHeader</code> objects whose name matches the
+     * given name.
+     *
+     * @param   name a <code>String</code> with the name of the header for
+     *          which to search
+     */
+    public void removeHeader(String name) {
+        for(int i = 0; i < headers.size(); i++) {
+            MimeHeader hdr = (MimeHeader) headers.elementAt(i);
+            if (hdr.getName().equalsIgnoreCase(name))
+                headers.removeElementAt(i--);
+        }
+    }
+
+    /**
+     * Removes all the header entries from this <code>MimeHeaders</code> object.
+     */
+    public void removeAllHeaders() {
+        headers.removeAllElements();
+    }
+
+
+    /**
+     * Returns all the <code>MimeHeader</code>s in this <code>MimeHeaders</code> object.
+     *
+     * @return  an <code>Iterator</code> object over this <code>MimeHeaders</code>
+     *          object's list of <code>MimeHeader</code> objects
+     */
+    public Iterator getAllHeaders() {
+        return headers.iterator();
+    }
+
+    class MatchingIterator implements Iterator {
+        private boolean match;
+        private Iterator iterator;
+        private String[] names;
+        private Object nextHeader;
+
+        MatchingIterator(String[] names, boolean match) {
+            this.match = match;
+            this.names = names;
+            this.iterator = headers.iterator();
+        }
+
+        private Object nextMatch() {
+        next:
+            while (iterator.hasNext()) {
+                MimeHeader hdr = (MimeHeader) iterator.next();
+
+                if (names == null)
+                    return match ? null : hdr;
+
+                for(int i = 0; i < names.length; i++)
+                    if (hdr.getName().equalsIgnoreCase(names[i]))
+                        if (match)
+                            return hdr;
+                        else
+                            continue next;
+                if (!match)
+                    return hdr;
+            }
+            return null;
+        }
+
+
+        public boolean hasNext() {
+            if (nextHeader == null)
+                nextHeader = nextMatch();
+            return nextHeader != null;
+        }
+
+        public Object next() {
+            // hasNext should've prefetched the header for us,
+            // return it.
+            if (nextHeader != null) {
+                Object ret = nextHeader;
+                nextHeader = null;
+                return ret;
+            }
+            if (hasNext())
+                return nextHeader;
+            return null;
+        }
+
+        public void remove() {
+            iterator.remove();
+        }
+    }
+
+
+    /**
+     * Returns all the <code>MimeHeader</code> objects whose name matches
+     * a name in the given array of names.
+     *
+     * @param names an array of <code>String</code> objects with the names
+     *         for which to search
+     * @return  an <code>Iterator</code> object over the <code>MimeHeader</code>
+     *          objects whose name matches one of the names in the given list
+     */
+    public Iterator getMatchingHeaders(String[] names) {
+        return new MatchingIterator(names, true);
+    }
+
+    /**
+     * Returns all of the <code>MimeHeader</code> objects whose name does not
+     * match a name in the given array of names.
+     *
+     * @param names an array of <code>String</code> objects with the names
+     *         for which to search
+     * @return  an <code>Iterator</code> object over the <code>MimeHeader</code>
+     *          objects whose name does not match one of the names in the given list
+     */
+    public Iterator getNonMatchingHeaders(String[] names) {
+        return new MatchingIterator(names, false);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/Name.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+/**
+ * A representation of an XML name.  This interface provides methods for
+ * getting the local and namespace-qualified names and also for getting the
+ * prefix associated with the namespace for the name. It is also possible
+ * to get the URI of the namespace.
+ * <P>
+ * The following is an example of a namespace declaration in an element.
+ * <PRE>
+ *   &lt;wombat:GetLastTradePrice xmlns:wombat="http://www.wombat.org/trader"&gt;
+ * </PRE>
+ * ("xmlns" stands for "XML namespace".)
+ * The following
+ * shows what the methods in the <code>Name</code> interface will return.
+ * <UL>
+ *  <LI><code>getQualifiedName</code> will return "prefix:LocalName" =
+ *      "WOMBAT:GetLastTradePrice"
+ *  <LI><code>getURI</code> will return "http://www.wombat.org/trader"
+ *  <LI><code>getLocalName</code> will return "GetLastTracePrice"
+ *  <LI><code>getPrefix</code> will return "WOMBAT"
+ * </UL>
+ * <P>
+ * XML namespaces are used to disambiguate SOAP identifiers from
+ * application-specific identifiers.
+ * <P>
+ * <code>Name</code> objects are created using the method
+ * <code>SOAPEnvelope.createName</code>, which has two versions.
+ * One method creates <code>Name</code> objects with
+ * a local name, a namespace prefix, and a namespace URI.
+ *  and the second creates <code>Name</code> objects with just a local name.
+ * The following line of
+ * code, in which <i>se</i> is a <code>SOAPEnvelope</code> object, creates a new
+ * <code>Name</code> object with all three.
+ * <PRE>
+ *     Name name = se.createName("GetLastTradePrice", "WOMBAT",
+ *                                "http://www.wombat.org/trader");
+ * </PRE>
+ * The following line of code gives an example of how a <code>Name</code> object
+ * can be used. The variable <i>element</i> is a <code>SOAPElement</code> object.
+ * This code creates a new <code>SOAPElement</code> object with the given name and
+ * adds it to <i>element</i>.
+ * <PRE>
+ *     element.addChildElement(name);
+ * </PRE>
+ * <P>
+ * The <code>Name</code> interface may be deprecated in a future release of SAAJ
+ * in favor of <code>javax.xml.namespace.QName<code>
+ * @see SOAPEnvelope#createName(String, String, String) SOAPEnvelope.createName
+ * @see SOAPFactory#createName(String, String, String) SOAPFactory.createName
+ * @since 1.6
+ */
+public interface Name {
+    /**
+     * Gets the local name part of the XML name that this <code>Name</code>
+     * object represents.
+     *
+     * @return a string giving the local name
+     */
+    String getLocalName();
+
+    /**
+     * Gets the namespace-qualified name of the XML name that this
+     * <code>Name</code> object represents.
+     *
+     * @return the namespace-qualified name as a string
+     */
+    String getQualifiedName();
+
+    /**
+     * Returns the prefix that was specified when this <code>Name</code> object
+     * was initialized. This prefix is associated with the namespace for the XML
+     * name that this <code>Name</code> object represents.
+     *
+     * @return the prefix as a string
+     */
+    String getPrefix();
+
+    /**
+     * Returns the URI of the namespace for the XML
+     * name that this <code>Name</code> object represents.
+     *
+     * @return the URI as a string
+     */
+    String getURI();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/Node.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,114 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+/**
+ * A representation of a node (element) in an XML document.
+ * This interface extnends the standard DOM Node interface with methods for
+ * getting and setting the value of a node, for
+ * getting and setting the parent of a node, and for removing a node.
+ *
+ * @since 1.6
+ */
+public interface Node extends org.w3c.dom.Node {
+    /**
+     * Returns the value of this node if this is a <code>Text</code> node or the
+     * value of the immediate child of this node otherwise.
+     * If there is an immediate child of this <code>Node</code> that it is a
+     * <code>Text</code> node then it's value will be returned. If there is
+     * more than one <code>Text</code> node then the value of the first
+     * <code>Text</code> Node will be returned.
+     * Otherwise <code>null</code> is returned.
+     *
+     * @return a <code>String</code> with the text of this node if this is a
+     *          <code>Text</code> node or the text contained by the first
+     *          immediate child of this <code>Node</code> object that is a
+     *          <code>Text</code> object if such a child exists;
+     *          <code>null</code> otherwise.
+     */
+    public String getValue();
+
+    /**
+     * If this is a Text node then this method will set its value,
+     * otherwise it sets the value of  the immediate (Text) child of this node.
+     * The value of the immediate child of this node can be set only if, there is
+     * one child node and that node is a <code>Text</code> node, or if
+     * there are no children in which case a child <code>Text</code> node will be
+     * created.
+     *
+     * @exception IllegalStateException if the node is not a <code>Text</code>
+     *              node and either has more than one child node or has a child
+     *              node that is not a <code>Text</code> node.
+     *
+     * @since 1.6, SAAJ 1.2
+     */
+    public void setValue(String value);
+
+    /**
+     * Sets the parent of this <code>Node</code> object to the given
+     * <code>SOAPElement</code> object.
+     *
+     * @param parent the <code>SOAPElement</code> object to be set as
+     *       the parent of this <code>Node</code> object
+     *
+     * @exception SOAPException if there is a problem in setting the
+     *                          parent to the given element
+     * @see #getParentElement
+     */
+    public void setParentElement(SOAPElement parent) throws SOAPException;
+
+    /**
+     * Returns the parent element of this <code>Node</code> object.
+     * This method can throw an <code>UnsupportedOperationException</code>
+     * if the tree is not kept in memory.
+     *
+     * @return the <code>SOAPElement</code> object that is the parent of
+     *         this <code>Node</code> object or <code>null</code> if this
+     *         <code>Node</code> object is root
+     *
+     * @exception UnsupportedOperationException if the whole tree is not
+     *            kept in memory
+     * @see #setParentElement
+     */
+    public SOAPElement getParentElement();
+
+    /**
+     * Removes this <code>Node</code> object from the tree.
+     */
+    public void detachNode();
+
+    /**
+     * Notifies the implementation that this <code>Node</code>
+     * object is no longer being used by the application and that the
+     * implementation is free to reuse this object for nodes that may
+     * be created later.
+     * <P>
+     * Calling the method <code>recycleNode</code> implies that the method
+     * <code>detachNode</code> has been called previously.
+     */
+    public void recycleNode();
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SAAJMetaFactory.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+/**
+* The access point for the implementation classes of the factories defined in the
+* SAAJ API. All of the <code>newInstance</code> methods defined on factories in
+* SAAJ 1.3 defer to instances of this class to do the actual object creation.
+* The implementations of <code>newInstance()</code> methods (in SOAPFactory and MessageFactory)
+* that existed in SAAJ 1.2 have been updated to also delegate to the SAAJMetaFactory when the SAAJ 1.2
+* defined lookup fails to locate the Factory implementation class name.
+*
+* <p>
+* SAAJMetaFactory is a service provider interface. There are no public methods on this
+* class.
+*
+* @author SAAJ RI Development Team
+* @since 1.6, SAAJ 1.3
+*/
+
+public abstract class SAAJMetaFactory {
+    static private final String META_FACTORY_CLASS_PROPERTY =
+        "javax.xml.soap.MetaFactory";
+    static final String DEFAULT_META_FACTORY_CLASS =
+        "com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl";
+
+    /**
+     * Creates a new instance of a concrete <code>SAAJMetaFactory</code> object.
+     * The SAAJMetaFactory is an SPI, it pulls the creation of the other factories together into a
+     * single place. Changing out the SAAJMetaFactory has the effect of changing out the entire SAAJ
+     * implementation. Service providers provide the name of their <code>SAAJMetaFactory</code>
+     * implementation.
+     *
+     * This method uses the following ordered lookup procedure to determine the SAAJMetaFactory implementation class to load:
+     * <UL>
+     *  <LI> Use the javax.xml.soap.MetaFactory system property.
+     *  <LI> Use the properties file "lib/jaxm.properties" in the JRE directory. This configuration file is in standard
+     * java.util.Properties format and contains the fully qualified name of the implementation class with the key being the
+     * system property defined above.
+     *  <LI> Use the Services API (as detailed in the JAR specification), if available, to determine the classname. The Services API
+     * will look for a classname in the file META-INF/services/javax.xml.soap.MetaFactory in jars available to the runtime.
+     *  <LI> Default to com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl.
+     * </UL>
+     *
+     * @return a concrete <code>SAAJMetaFactory</code> object
+     * @exception SOAPException if there is an error in creating the <code>SAAJMetaFactory</code>
+     */
+    static SAAJMetaFactory getInstance() throws SOAPException {
+            try {
+                SAAJMetaFactory instance =
+                    (SAAJMetaFactory) FactoryFinder.find(
+                        META_FACTORY_CLASS_PROPERTY,
+                        DEFAULT_META_FACTORY_CLASS);
+                return instance;
+            } catch (Exception e) {
+                throw new SOAPException(
+                    "Unable to create SAAJ meta-factory" + e.getMessage());
+            }
+    }
+
+    protected SAAJMetaFactory() { }
+
+     /**
+      * Creates a <code>MessageFactory</code> object for
+      * the given <code>String</code> protocol.
+      *
+      * @param protocol a <code>String</code> indicating the protocol
+      * @exception SOAPException if there is an error in creating the
+      *            MessageFactory
+      * @see SOAPConstants#SOAP_1_1_PROTOCOL
+      * @see SOAPConstants#SOAP_1_2_PROTOCOL
+      * @see SOAPConstants#DYNAMIC_SOAP_PROTOCOL
+      */
+    protected abstract MessageFactory newMessageFactory(String protocol)
+        throws SOAPException;
+
+     /**
+      * Creates a <code>SOAPFactory</code> object for
+      * the given <code>String</code> protocol.
+      *
+      * @param protocol a <code>String</code> indicating the protocol
+      * @exception SOAPException if there is an error in creating the
+      *            SOAPFactory
+      * @see SOAPConstants#SOAP_1_1_PROTOCOL
+      * @see SOAPConstants#SOAP_1_2_PROTOCOL
+      * @see SOAPConstants#DYNAMIC_SOAP_PROTOCOL
+      */
+    protected abstract SOAPFactory newSOAPFactory(String protocol)
+        throws SOAPException;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SAAJResult.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,133 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+import javax.xml.transform.dom.DOMResult;
+
+/**
+ * Acts as a holder for the results of a JAXP transformation or a JAXB
+ * marshalling, in the form of a SAAJ tree. These results should be accessed
+ * by using the {@link #getResult()} method. The {@link DOMResult#getNode()}
+ * method should be avoided in almost all cases.
+ *
+ * @author XWS-Security Development Team
+ *
+ * @since 1.6, SAAJ 1.3
+ */
+public class SAAJResult extends DOMResult {
+
+    /**
+     * Creates a <code>SAAJResult</code> that will present results in the form
+     * of a SAAJ tree that supports the default (SOAP 1.1) protocol.
+     * <p>
+     * This kind of <code>SAAJResult</code> is meant for use in situations where the
+     * results will be used as a parameter to a method that takes a parameter
+     * whose type, such as <code>SOAPElement</code>, is drawn from the SAAJ
+     * API. When used in a transformation, the results are populated into the
+     * <code>SOAPPart</code> of a <code>SOAPMessage</code> that is created internally.
+     * The <code>SOAPPart</code> returned by {@link DOMResult#getNode()}
+     * is not guaranteed to be well-formed.
+     *
+     * @throws SOAPException if there is a problem creating a <code>SOAPMessage</code>
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public SAAJResult() throws SOAPException {
+        this(MessageFactory.newInstance().createMessage());
+    }
+
+    /**
+     * Creates a <code>SAAJResult</code> that will present results in the form
+     * of a SAAJ tree that supports the specified protocol. The
+     * <code>DYNAMIC_SOAP_PROTOCOL</code> is ambiguous in this context and will
+     * cause this constructor to throw an <code>UnsupportedOperationException</code>.
+     * <p>
+     * This kind of <code>SAAJResult</code> is meant for use in situations where the
+     * results will be used as a parameter to a method that takes a parameter
+     * whose type, such as <code>SOAPElement</code>, is drawn from the SAAJ
+     * API. When used in a transformation the results are populated into the
+     * <code>SOAPPart</code> of a <code>SOAPMessage</code> that is created
+     * internally. The <code>SOAPPart</code> returned by {@link DOMResult#getNode()}
+     * is not guaranteed to be well-formed.
+     *
+     * @param protocol - the name of the SOAP protocol that the resulting SAAJ
+     *                      tree should support
+     *
+     * @throws SOAPException if a <code>SOAPMessage</code> supporting the
+     *             specified protocol cannot be created
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public SAAJResult(String protocol) throws SOAPException {
+        this(MessageFactory.newInstance(protocol).createMessage());
+    }
+
+    /**
+     * Creates a <code>SAAJResult</code> that will write the results into the
+     * <code>SOAPPart</code> of the supplied <code>SOAPMessage</code>.
+     * In the normal case these results will be written using DOM APIs and,
+     * as a result, the finished <code>SOAPPart</code> will not be guaranteed
+     * to be well-formed unless the data used to create it is also well formed.
+     * When used in a transformation the validity of the <code>SOAPMessage</code>
+     * after the transformation can be guaranteed only by means outside SAAJ
+     * specification.
+     *
+     * @param message - the message whose <code>SOAPPart</code> will be
+     *                  populated as a result of some transformation or
+     *                  marshalling operation
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public SAAJResult(SOAPMessage message) {
+        super(message.getSOAPPart());
+    }
+
+    /**
+     * Creates a <code>SAAJResult</code> that will write the results as a
+     * child node of the <code>SOAPElement</code> specified. In the normal
+     * case these results will be written using DOM APIs and as a result may
+     * invalidate the structure of the SAAJ tree. This kind of
+     * <code>SAAJResult</code> should only be used when the validity of the
+     * incoming data can be guaranteed by means outside of the SAAJ
+     * specification.
+     *
+     * @param rootNode - the root to which the results will be appended
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public SAAJResult(SOAPElement rootNode) {
+        super(rootNode);
+    }
+
+
+    /**
+     * @return the resulting Tree that was created under the specified root Node.
+     * @since 1.6, SAAJ 1.3
+     */
+    public javax.xml.soap.Node getResult() {
+        return (javax.xml.soap.Node)super.getNode().getFirstChild();
+     }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPBody.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,298 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+import java.util.Locale;
+
+import org.w3c.dom.Document;
+
+import javax.xml.namespace.QName;
+
+/**
+ * An object that represents the contents of the SOAP body
+ * element in a SOAP message. A SOAP body element consists of XML data
+ * that affects the way the application-specific content is processed.
+ * <P>
+ * A <code>SOAPBody</code> object contains <code>SOAPBodyElement</code>
+ * objects, which have the content for the SOAP body.
+ * A <code>SOAPFault</code> object, which carries status and/or
+ * error information, is an example of a <code>SOAPBodyElement</code> object.
+ *
+ * @see SOAPFault
+ * @since 1.6
+ */
+public interface SOAPBody extends SOAPElement {
+
+    /**
+     * Creates a new <code>SOAPFault</code> object and adds it to
+     * this <code>SOAPBody</code> object. The new <code>SOAPFault</code> will
+     * have default values set for the mandatory child elements. The type of
+     * the <code>SOAPFault</code> will be a SOAP 1.1 or a SOAP 1.2 <code>SOAPFault</code>
+     * depending on the <code>protocol</code> specified while creating the
+     * <code>MessageFactory</code> instance.
+     * <p>
+     * A <code>SOAPBody</code> may contain at most one <code>SOAPFault</code>
+     * child element.
+     *
+     * @return the new <code>SOAPFault</code> object
+     * @exception SOAPException if there is a SOAP error
+     */
+    public SOAPFault addFault() throws SOAPException;
+
+
+    /**
+     * Creates a new <code>SOAPFault</code> object and adds it to
+     * this <code>SOAPBody</code> object. The type of the
+     * <code>SOAPFault</code> will be a SOAP 1.1  or a SOAP 1.2
+     * <code>SOAPFault</code> depending on the <code>protocol</code>
+     * specified while creating the <code>MessageFactory</code> instance.
+     * <p>
+     * For SOAP 1.2 the <code>faultCode</code> parameter is the value of the
+     * <i>Fault/Code/Value</i> element  and the <code>faultString</code> parameter
+     * is the value of the <i>Fault/Reason/Text</i> element. For SOAP 1.1
+     * the <code>faultCode</code> parameter is the value of the <code>faultcode</code>
+     * element and the <code>faultString</code> parameter is the value of the <code>faultstring</code>
+     * element.
+     * <p>
+     * A <code>SOAPBody</code> may contain at most one <code>SOAPFault</code>
+     * child element.
+     *
+     * @param faultCode a <code>Name</code> object giving the fault
+     *         code to be set; must be one of the fault codes defined in the Version
+     *         of SOAP specification in use
+     * @param faultString a <code>String</code> giving an explanation of
+     *         the fault
+     * @param locale a {@link java.util.Locale} object indicating
+     *         the native language of the <code>faultString</code>
+     * @return the new <code>SOAPFault</code> object
+     * @exception SOAPException if there is a SOAP error
+     * @see SOAPFault#setFaultCode
+     * @see SOAPFault#setFaultString
+     * @since 1.6, SAAJ 1.2
+     */
+    public SOAPFault addFault(Name faultCode, String faultString, Locale locale) throws SOAPException;
+
+    /**
+     * Creates a new <code>SOAPFault</code> object and adds it to this
+     * <code>SOAPBody</code> object. The type of the <code>SOAPFault</code>
+     * will be a SOAP 1.1 or a SOAP 1.2 <code>SOAPFault</code> depending on
+     * the <code>protocol</code> specified while creating the <code>MessageFactory</code>
+     * instance.
+     * <p>
+     * For SOAP 1.2 the <code>faultCode</code> parameter is the value of the
+     * <i>Fault/Code/Value</i> element  and the <code>faultString</code> parameter
+     * is the value of the <i>Fault/Reason/Text</i> element. For SOAP 1.1
+     * the <code>faultCode</code> parameter is the value of the <code>faultcode</code>
+     * element and the <code>faultString</code> parameter is the value of the <code>faultstring</code>
+     * element.
+     * <p>
+     * A <code>SOAPBody</code> may contain at most one <code>SOAPFault</code>
+     * child element.
+     *
+     * @param faultCode
+     *            a <code>QName</code> object giving the fault code to be
+     *            set; must be one of the fault codes defined in the version
+     *            of SOAP specification in use.
+     * @param faultString
+     *            a <code>String</code> giving an explanation of the fault
+     * @param locale
+     *            a {@link java.util.Locale Locale} object indicating the
+     *            native language of the <code>faultString</code>
+     * @return the new <code>SOAPFault</code> object
+     * @exception SOAPException
+     *                if there is a SOAP error
+     * @see SOAPFault#setFaultCode
+     * @see SOAPFault#setFaultString
+     * @see SOAPBody#addFault(Name faultCode, String faultString, Locale locale)
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public SOAPFault addFault(QName faultCode, String faultString, Locale locale)
+        throws SOAPException;
+
+    /**
+     * Creates a new  <code>SOAPFault</code> object and adds it to this
+     * <code>SOAPBody</code> object. The type of the <code>SOAPFault</code>
+     * will be a SOAP 1.1 or a SOAP 1.2 <code>SOAPFault</code> depending on
+     * the <code>protocol</code> specified while creating the <code>MessageFactory</code>
+     * instance.
+     * <p>
+     * For SOAP 1.2 the <code>faultCode</code> parameter is the value of the
+     * <i>Fault/Code/Value</i> element  and the <code>faultString</code> parameter
+     * is the value of the <i>Fault/Reason/Text</i> element. For SOAP 1.1
+     * the <code>faultCode</code> parameter is the value of the <i>faultcode</i>
+     * element and the <code>faultString</code> parameter is the value of the <i>faultstring</i>
+     * element.
+     * <p>
+     * In case of a SOAP 1.2 fault, the default value for the mandatory <code>xml:lang</code>
+     * attribute on the <i>Fault/Reason/Text</i> element will be set to
+     * <code>java.util.Locale.getDefault()</code>
+     * <p>
+     * A <code>SOAPBody</code> may contain at most one <code>SOAPFault</code>
+     * child element.
+     *
+     * @param faultCode
+     *            a <code>Name</code> object giving the fault code to be set;
+     *            must be one of the fault codes defined in the version of SOAP
+     *            specification in use
+     * @param faultString
+     *            a <code>String</code> giving an explanation of the fault
+     * @return the new <code>SOAPFault</code> object
+     * @exception SOAPException
+     *                if there is a SOAP error
+     * @see SOAPFault#setFaultCode
+     * @see SOAPFault#setFaultString
+     * @since 1.6, SAAJ 1.2
+     */
+    public SOAPFault addFault(Name faultCode, String faultString)
+        throws SOAPException;
+
+    /**
+     * Creates a new <code>SOAPFault</code> object and adds it to this <code>SOAPBody</code>
+     * object. The type of the <code>SOAPFault</code>
+     * will be a SOAP 1.1 or a SOAP 1.2 <code>SOAPFault</code> depending on
+     * the <code>protocol</code> specified while creating the <code>MessageFactory</code>
+     * instance.
+     * <p>
+     * For SOAP 1.2 the <code>faultCode</code> parameter is the value of the
+     * <i>Fault/Code/Value</i> element  and the <code>faultString</code> parameter
+     * is the value of the <i>Fault/Reason/Text</i> element. For SOAP 1.1
+     * the <code>faultCode</code> parameter is the value of the <i>faultcode</i>
+     * element and the <code>faultString</code> parameter is the value of the <i>faultstring</i>
+     * element.
+     * <p>
+     * In case of a SOAP 1.2 fault, the default value for the mandatory <code>xml:lang</code>
+     * attribute on the <i>Fault/Reason/Text</i> element will be set to
+     * <code>java.util.Locale.getDefault()</code>
+     * <p>
+     * A <code>SOAPBody</code> may contain at most one <code>SOAPFault</code>
+     * child element
+     *
+     * @param faultCode
+     *            a <code>QName</code> object giving the fault code to be
+     *            set; must be one of the fault codes defined in the version
+     *            of  SOAP specification in use
+     * @param faultString
+     *            a <code>String</code> giving an explanation of the fault
+     * @return the new <code>SOAPFault</code> object
+     * @exception SOAPException
+     *                if there is a SOAP error
+     * @see SOAPFault#setFaultCode
+     * @see SOAPFault#setFaultString
+     * @see SOAPBody#addFault(Name faultCode, String faultString)
+     * @since 1.6, SAAJ 1.3
+     */
+    public SOAPFault addFault(QName faultCode, String faultString)
+        throws SOAPException;
+
+    /**
+     * Indicates whether a <code>SOAPFault</code> object exists in this
+     * <code>SOAPBody</code> object.
+     *
+     * @return <code>true</code> if a <code>SOAPFault</code> object exists
+     *         in this <code>SOAPBody</code> object; <code>false</code>
+     *         otherwise
+     */
+    public boolean hasFault();
+
+    /**
+     * Returns the <code>SOAPFault</code> object in this <code>SOAPBody</code>
+     * object.
+     *
+     * @return the <code>SOAPFault</code> object in this <code>SOAPBody</code>
+     *         object if present, null otherwise.
+     */
+    public SOAPFault getFault();
+
+    /**
+     * Creates a new <code>SOAPBodyElement</code> object with the specified
+     * name and adds it to this <code>SOAPBody</code> object.
+     *
+     * @param name
+     *            a <code>Name</code> object with the name for the new <code>SOAPBodyElement</code>
+     *            object
+     * @return the new <code>SOAPBodyElement</code> object
+     * @exception SOAPException
+     *                if a SOAP error occurs
+     * @see SOAPBody#addBodyElement(javax.xml.namespace.QName)
+     */
+    public SOAPBodyElement addBodyElement(Name name) throws SOAPException;
+
+
+    /**
+     * Creates a new <code>SOAPBodyElement</code> object with the specified
+     * QName and adds it to this <code>SOAPBody</code> object.
+     *
+     * @param qname
+     *            a <code>QName</code> object with the qname for the new
+     *            <code>SOAPBodyElement</code> object
+     * @return the new <code>SOAPBodyElement</code> object
+     * @exception SOAPException
+     *                if a SOAP error occurs
+     * @see SOAPBody#addBodyElement(Name)
+     * @since 1.6, SAAJ 1.3
+     */
+    public SOAPBodyElement addBodyElement(QName qname) throws SOAPException;
+
+    /**
+     * Adds the root node of the DOM <code>{@link org.w3c.dom.Document}</code>
+     * to this <code>SOAPBody</code> object.
+     * <p>
+     * Calling this method invalidates the <code>document</code> parameter.
+     * The client application should discard all references to this <code>Document</code>
+     * and its contents upon calling <code>addDocument</code>. The behavior
+     * of an application that continues to use such references is undefined.
+     *
+     * @param document
+     *            the <code>Document</code> object whose root node will be
+     *            added to this <code>SOAPBody</code>.
+     * @return the <code>SOAPBodyElement</code> that represents the root node
+     *         that was added.
+     * @exception SOAPException
+     *                if the <code>Document</code> cannot be added
+     * @since 1.6, SAAJ 1.2
+     */
+    public SOAPBodyElement addDocument(org.w3c.dom.Document document)
+        throws SOAPException;
+
+    /**
+     * Creates a new DOM <code>{@link org.w3c.dom.Document}</code> and sets
+     * the first child of this <code>SOAPBody</code> as it's document
+     * element. The child <code>SOAPElement</code> is removed as part of the
+     * process.
+     *
+     * @return the <code>{@link org.w3c.dom.Document}</code> representation
+     *         of the <code>SOAPBody</code> content.
+     *
+     * @exception SOAPException
+     *                if there is not exactly one child <code>SOAPElement</code> of the <code>
+     *              <code>SOAPBody</code>.
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public org.w3c.dom.Document extractContentAsDocument()
+        throws SOAPException;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPBodyElement.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+/**
+ * A <code>SOAPBodyElement</code> object represents the contents in
+ * a <code>SOAPBody</code> object.  The <code>SOAPFault</code> interface
+ * is a <code>SOAPBodyElement</code> object that has been defined.
+ * <P>
+ * A new <code>SOAPBodyElement</code> object can be created and added
+ * to a <code>SOAPBody</code> object with the <code>SOAPBody</code>
+ * method <code>addBodyElement</code>. In the following line of code,
+ * <code>sb</code> is a <code>SOAPBody</code> object, and
+ * <code>myName</code> is a <code>Name</code> object.
+ * <PRE>
+ *    SOAPBodyElement sbe = sb.addBodyElement(myName);
+ * </PRE>
+ *
+ * @since 1.6
+ */
+public interface SOAPBodyElement extends SOAPElement {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPConnection.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+
+/**
+ * A point-to-point connection that a client can use for sending messages
+ * directly to a remote party (represented by a URL, for instance).
+ * <p>
+ * The SOAPConnection class is optional. Some implementations may
+ * not implement this interface in which case the call to
+ * <code>SOAPConnectionFactory.newInstance()</code> (see below) will
+ * throw an <code>UnsupportedOperationException</code>.
+ * <p>
+ * A client can obtain a <code>SOAPConnection</code> object using a
+ * {@link SOAPConnectionFactory} object as in the following example:
+ * <PRE>
+ *      SOAPConnectionFactory factory = SOAPConnectionFactory.newInstance();
+ *      SOAPConnection con = factory.createConnection();
+ * </PRE>
+ * A <code>SOAPConnection</code> object can be used to send messages
+ * directly to a URL following the request/response paradigm.  That is,
+ * messages are sent using the method <code>call</code>, which sends the
+ * message and then waits until it gets a reply.
+ *
+ * @since 1.6
+ */
+public abstract class SOAPConnection {
+
+    /**
+     * Sends the given message to the specified endpoint and blocks until
+     * it has returned the response.
+     *
+     * @param request the <code>SOAPMessage</code> object to be sent
+     * @param to an <code>Object</code> that identifies
+     *         where the message should be sent. It is required to
+     *         support Objects of type
+     *         <code>java.lang.String</code>,
+     *         <code>java.net.URL</code>, and when JAXM is present
+     *         <code>javax.xml.messaging.URLEndpoint</code>
+     *
+     * @return the <code>SOAPMessage</code> object that is the response to the
+     *         message that was sent
+     * @throws SOAPException if there is a SOAP error
+     */
+    public abstract SOAPMessage call(SOAPMessage request,
+                                     Object to) throws SOAPException;
+
+    /**
+     * Gets a message from a specific endpoint and blocks until it receives,
+     *
+     * @param to an <code>Object</code> that identifies where
+     *                  the request should be sent. Objects of type
+     *                 <code>java.lang.String</code> and
+     *                 <code>java.net.URL</code> must be supported.
+     *
+     * @return the <code>SOAPMessage</code> object that is the response to the
+     *                  get message request
+     * @throws SOAPException if there is a SOAP error
+     * @since 1.6, SAAJ 1.3
+     */
+    public SOAPMessage get(Object to)
+                                throws SOAPException {
+        throw new UnsupportedOperationException("All subclasses of SOAPConnection must override get()");
+    }
+
+    /**
+     * Closes this <code>SOAPConnection</code> object.
+     *
+     * @throws SOAPException if there is a SOAP error
+     */
+    public abstract void close()
+        throws SOAPException;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPConnectionFactory.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+/**
+ * A factory for creating <code>SOAPConnection</code> objects. Implementation of this class
+ * is optional. If <code>SOAPConnectionFactory.newInstance()</code> throws an
+ * UnsupportedOperationException then the implementation does not support the
+ * SAAJ communication infrastructure. Otherwise {@link SOAPConnection} objects
+ * can be created by calling <code>createConnection()</code> on the newly
+ * created <code>SOAPConnectionFactory</code> object.
+ *
+ * @since 1.6
+ */
+public abstract class SOAPConnectionFactory {
+    /**
+     * A constant representing the default value for a <code>SOAPConnection</code>
+     * object. The default is the point-to-point SOAP connection.
+     */
+    static final String DEFAULT_SOAP_CONNECTION_FACTORY
+        = "com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnectionFactory";
+
+    /**
+     * A constant representing the <code>SOAPConnection</code> class.
+     */
+    static private final String SF_PROPERTY
+        = "javax.xml.soap.SOAPConnectionFactory";
+
+    /**
+     * Creates an instance of the default
+     * <code>SOAPConnectionFactory</code> object.
+     *
+     * @return a new instance of a default
+     *         <code>SOAPConnectionFactory</code> object
+     *
+     * @exception SOAPException if there was an error creating the
+     *            <code>SOAPConnectionFactory</code>
+     *
+     * @exception UnsupportedOperationException if newInstance is not
+     * supported.
+     */
+    public static SOAPConnectionFactory newInstance()
+        throws SOAPException, UnsupportedOperationException
+    {
+        try {
+        return (SOAPConnectionFactory)
+                FactoryFinder.find(SF_PROPERTY,
+                                   DEFAULT_SOAP_CONNECTION_FACTORY);
+        } catch (Exception ex) {
+            throw new SOAPException("Unable to create SOAP connection factory: "
+                                    +ex.getMessage());
+        }
+    }
+
+    /**
+     * Create a new <code>SOAPConnection</code>.
+     *
+     * @return the new <code>SOAPConnection</code> object.
+     *
+     * @exception SOAPException if there was an exception creating the
+     * <code>SOAPConnection</code> object.
+     */
+    public abstract SOAPConnection createConnection()
+        throws SOAPException;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPConstants.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,203 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+import javax.xml.namespace.QName;
+
+/**
+ * The definition of constants pertaining to the SOAP protocol.
+ *
+ * @since 1.6
+ */
+public interface SOAPConstants {
+    /**
+     * Used to create <code>MessageFactory</code> instances that create
+     * <code>SOAPMessages</code> whose concrete type is based on the
+     * <code>Content-Type</code> MIME header passed to the
+     * <code>createMessage</code> method. If no <code>Content-Type</code>
+     * header is passed then the <code>createMessage</code> may throw an
+     * <code>IllegalArgumentException</code> or, in the case of the no
+     * argument version of <code>createMessage</code>, an
+     * <code>UnsupportedOperationException</code>.
+     *
+     * @since  1.6, SAAJ 1.3
+     */
+    public static final String DYNAMIC_SOAP_PROTOCOL = "Dynamic Protocol";
+
+    /**
+     * Used to create <code>MessageFactory</code> instances that create
+     * <code>SOAPMessages</code> whose behavior supports the SOAP 1.1  specification.
+     *
+     * @since  1.6, SAAJ 1.3
+     */
+    public static final String SOAP_1_1_PROTOCOL = "SOAP 1.1 Protocol";
+
+    /**
+     * Used to create <code>MessageFactory</code> instances that create
+     * <code>SOAPMessages</code> whose behavior supports the SOAP 1.2
+     * specification
+     *
+     * @since  1.6, SAAJ 1.3
+     */
+    public static final String SOAP_1_2_PROTOCOL = "SOAP 1.2 Protocol";
+
+    /**
+     * The default protocol: SOAP 1.1 for backwards compatibility.
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public static final String DEFAULT_SOAP_PROTOCOL = SOAP_1_1_PROTOCOL;
+
+    /**
+     * The namespace identifier for the SOAP 1.1 envelope.
+     * @since 1.6, SAAJ 1.3
+     */
+    public static final String
+                URI_NS_SOAP_1_1_ENVELOPE = "http://schemas.xmlsoap.org/soap/envelope/";
+    /**
+     * The namespace identifier for the SOAP 1.2 envelope.
+     * @since 1.6, SAAJ 1.3
+     */
+    public static final String
+                URI_NS_SOAP_1_2_ENVELOPE = "http://www.w3.org/2003/05/soap-envelope";
+
+    /**
+     * The namespace identifier for the SOAP 1.1 envelope, All SOAPElements in this
+     * namespace are defined by the SOAP 1.1 specification.
+     */
+    public static final String
+        URI_NS_SOAP_ENVELOPE = URI_NS_SOAP_1_1_ENVELOPE;
+
+    /**
+     * The namespace identifier for the SOAP 1.1 encoding.
+     * An attribute named <code>encodingStyle</code> in the
+     * <code>URI_NS_SOAP_ENVELOPE</code> namespace and set to the value
+     * <code>URI_NS_SOAP_ENCODING</code> can be added to an element to indicate
+     * that it is encoded using the rules in section 5 of the SOAP 1.1
+     * specification.
+     */
+    public static final String
+        URI_NS_SOAP_ENCODING = "http://schemas.xmlsoap.org/soap/encoding/";
+
+    /**
+     * The namespace identifier for the SOAP 1.2 encoding.
+     * @since 1.6, SAAJ 1.3
+     */
+    public static final String
+        URI_NS_SOAP_1_2_ENCODING = "http://www.w3.org/2003/05/soap-encoding";
+
+    /**
+     * The media type  of the <code>Content-Type</code> MIME header in SOAP 1.1.
+     * @since 1.6, SAAJ 1.3
+     */
+    public static final String
+        SOAP_1_1_CONTENT_TYPE = "text/xml";
+
+    /**
+     * The media type  of the <code>Content-Type</code> MIME header in SOAP 1.2.
+     * @since 1.6, SAAJ 1.3
+     */
+    public static final String
+        SOAP_1_2_CONTENT_TYPE = "application/soap+xml";
+
+    /**
+     * The URI identifying the next application processing a SOAP request as the intended
+     * actor for a SOAP 1.1 header entry (see section 4.2.2 of the SOAP 1.1 specification).
+     * <p>
+     * This value can be passed to
+     * {@link SOAPHeader#examineMustUnderstandHeaderElements(String)},
+     * {@link SOAPHeader#examineHeaderElements(String)} and
+     * {@link SOAPHeader#extractHeaderElements(String)}
+     */
+    public static final String
+        URI_SOAP_ACTOR_NEXT = "http://schemas.xmlsoap.org/soap/actor/next";
+
+    /**
+     * The URI identifying the next application processing a SOAP request as the intended
+     * role for a SOAP 1.2 header entry (see section 2.2 of part 1 of the SOAP 1.2
+     * specification).
+     * @since 1.6, SAAJ 1.3
+     */
+    public static final String
+        URI_SOAP_1_2_ROLE_NEXT = URI_NS_SOAP_1_2_ENVELOPE + "/role/next";
+
+    /**
+     * The URI specifying the role None in SOAP 1.2.
+     * @since 1.6, SAAJ 1.3
+     */
+    public static final String
+        URI_SOAP_1_2_ROLE_NONE = URI_NS_SOAP_1_2_ENVELOPE + "/role/none";
+
+    /**
+     * The URI identifying the ultimate receiver of the SOAP 1.2 message.
+     * @since 1.6, SAAJ 1.3
+     */
+    public static final String
+        URI_SOAP_1_2_ROLE_ULTIMATE_RECEIVER =
+            URI_NS_SOAP_1_2_ENVELOPE + "/role/ultimateReceiver";
+
+    /**
+     * The default namespace prefix for http://www.w3.org/2003/05/soap-envelope
+     * @since 1.6, SAAJ 1.3
+     */
+    public static final String SOAP_ENV_PREFIX = "env";
+
+    /**
+     * SOAP 1.2 VersionMismatch Fault
+     * @since 1.6, SAAJ 1.3
+     */
+    public static final QName SOAP_VERSIONMISMATCH_FAULT =
+         new QName(URI_NS_SOAP_1_2_ENVELOPE, "VersionMismatch", SOAP_ENV_PREFIX);
+
+    /**
+     * SOAP 1.2 MustUnderstand Fault
+     * @since 1.6, SAAJ 1.3
+     */
+    public static final QName SOAP_MUSTUNDERSTAND_FAULT =
+         new QName(URI_NS_SOAP_1_2_ENVELOPE, "MustUnderstand", SOAP_ENV_PREFIX);
+
+    /**
+     * SOAP 1.2 DataEncodingUnknown Fault
+     * @since 1.6, SAAJ 1.3
+     */
+    public static final QName SOAP_DATAENCODINGUNKNOWN_FAULT =
+         new QName(URI_NS_SOAP_1_2_ENVELOPE, "DataEncodingUnknown", SOAP_ENV_PREFIX);
+
+    /**
+     * SOAP 1.2 Sender Fault
+     * @since 1.6, SAAJ 1.3
+     */
+    public static final QName SOAP_SENDER_FAULT =
+         new QName(URI_NS_SOAP_1_2_ENVELOPE, "Sender", SOAP_ENV_PREFIX);
+
+    /**
+     * SOAP 1.2 Receiver Fault
+     * @since 1.6, SAAJ 1.3
+     */
+    public static final QName SOAP_RECEIVER_FAULT =
+         new QName(URI_NS_SOAP_1_2_ENVELOPE, "Receiver", SOAP_ENV_PREFIX);
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPElement.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,526 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
+/**
+ * An object representing an element of a SOAP message that is allowed but not
+ * specifically prescribed by a SOAP specification. This interface serves as the
+ * base interface for those objects that are specifically prescribed by a SOAP
+ * specification.
+ * <p>
+ * Methods in this interface that are required to return SAAJ specific objects
+ * may "silently" replace nodes in the tree as required to successfully return
+ * objects of the correct type. See {@link #getChildElements()} and
+ * {@link <a HREF="package-summary.html#package_description">javax.xml.soap<a>}
+ * for details.
+ *
+ * @since 1.6
+ */
+public interface SOAPElement extends Node, org.w3c.dom.Element {
+
+    /**
+     * Creates a new <code>SOAPElement</code> object initialized with the
+     * given <code>Name</code> object and adds the new element to this
+     * <code>SOAPElement</code> object.
+     * <P>
+     * This method may be deprecated in a future release of SAAJ in favor of
+     * addChildElement(javax.xml.namespace.QName)
+     *
+     * @param name a <code>Name</code> object with the XML name for the
+     *        new element
+     *
+     * @return the new <code>SOAPElement</code> object that was created
+     * @exception SOAPException if there is an error in creating the
+     *                          <code>SOAPElement</code> object
+     * @see SOAPElement#addChildElement(javax.xml.namespace.QName)
+     */
+    public SOAPElement addChildElement(Name name) throws SOAPException;
+
+    /**
+     * Creates a new <code>SOAPElement</code> object initialized with the given
+     * <code>QName</code> object and adds the new element to this <code>SOAPElement</code>
+     *  object. The  <i>namespace</i>, <i>localname</i> and <i>prefix</i> of the new
+     * <code>SOAPElement</code> are all taken  from the <code>qname</code> argument.
+     *
+     * @param qname a <code>QName</code> object with the XML name for the
+     *        new element
+     *
+     * @return the new <code>SOAPElement</code> object that was created
+     * @exception SOAPException if there is an error in creating the
+     *                          <code>SOAPElement</code> object
+     * @see SOAPElement#addChildElement(Name)
+     * @since 1.6, SAAJ 1.3
+     */
+    public SOAPElement addChildElement(QName qname) throws SOAPException;
+
+    /**
+     * Creates a new <code>SOAPElement</code> object initialized with the
+     * specified local name and adds the new element to this
+     * <code>SOAPElement</code> object.
+     * The new  <code>SOAPElement</code> inherits any in-scope default namespace.
+     *
+     * @param localName a <code>String</code> giving the local name for
+     *          the element
+     * @return the new <code>SOAPElement</code> object that was created
+     * @exception SOAPException if there is an error in creating the
+     *                          <code>SOAPElement</code> object
+     */
+    public SOAPElement addChildElement(String localName) throws SOAPException;
+
+    /**
+     * Creates a new <code>SOAPElement</code> object initialized with the
+     * specified local name and prefix and adds the new element to this
+     * <code>SOAPElement</code> object.
+     *
+     * @param localName a <code>String</code> giving the local name for
+     *        the new element
+     * @param prefix a <code>String</code> giving the namespace prefix for
+     *        the new element
+     *
+     * @return the new <code>SOAPElement</code> object that was created
+     * @exception SOAPException if the <code>prefix</code> is not valid in the
+     *         context of this <code>SOAPElement</code> or  if there is an error in creating the
+     *                          <code>SOAPElement</code> object
+     */
+    public SOAPElement addChildElement(String localName, String prefix)
+        throws SOAPException;
+
+    /**
+     * Creates a new <code>SOAPElement</code> object initialized with the
+     * specified local name, prefix, and URI and adds the new element to this
+     * <code>SOAPElement</code> object.
+     *
+     * @param localName a <code>String</code> giving the local name for
+     *        the new element
+     * @param prefix a <code>String</code> giving the namespace prefix for
+     *        the new element
+     * @param uri a <code>String</code> giving the URI of the namespace
+     *        to which the new element belongs
+     *
+     * @return the new <code>SOAPElement</code> object that was created
+     * @exception SOAPException if there is an error in creating the
+     *                          <code>SOAPElement</code> object
+     */
+    public SOAPElement addChildElement(String localName, String prefix,
+                                       String uri)
+        throws SOAPException;
+
+    /**
+     * Add a <code>SOAPElement</code> as a child of this
+     * <code>SOAPElement</code> instance. The <code>SOAPElement</code>
+     * is expected to be created by a
+     * <code>SOAPFactory</code>. Callers should not rely on the
+     * element instance being added as is into the XML
+     * tree. Implementations could end up copying the content
+     * of the <code>SOAPElement</code> passed into an instance of
+     * a different <code>SOAPElement</code> implementation. For
+     * instance if <code>addChildElement()</code> is called on a
+     * <code>SOAPHeader</code>, <code>element</code> will be copied
+     * into an instance of a <code>SOAPHeaderElement</code>.
+     *
+     * <P>The fragment rooted in <code>element</code> is either added
+     * as a whole or not at all, if there was an error.
+     *
+     * <P>The fragment rooted in <code>element</code> cannot contain
+     * elements named "Envelope", "Header" or "Body" and in the SOAP
+     * namespace. Any namespace prefixes present in the fragment
+     * should be fully resolved using appropriate namespace
+     * declarations within the fragment itself.
+     *
+     * @param element the <code>SOAPElement</code> to be added as a
+     *                new child
+     *
+     * @exception SOAPException if there was an error in adding this
+     *                          element as a child
+     *
+     * @return an instance representing the new SOAP element that was
+     *         actually added to the tree.
+     */
+    public SOAPElement addChildElement(SOAPElement element)
+        throws SOAPException;
+
+    /**
+     * Detaches all children of this <code>SOAPElement</code>.
+     * <p>
+     * This method is useful for rolling back the construction of partially
+     * completed <code>SOAPHeaders</code> and <code>SOAPBodys</code> in
+     * preparation for sending a fault when an error condition is detected. It
+     * is also useful for recycling portions of a document within a SOAP
+     * message.
+     *
+     * @since 1.6, SAAJ 1.2
+     */
+    public abstract void removeContents();
+
+    /**
+     * Creates a new <code>Text</code> object initialized with the given
+     * <code>String</code> and adds it to this <code>SOAPElement</code> object.
+     *
+     * @param text a <code>String</code> object with the textual content to be added
+     *
+     * @return the <code>SOAPElement</code> object into which
+     *         the new <code>Text</code> object was inserted
+     * @exception SOAPException if there is an error in creating the
+     *                    new <code>Text</code> object or if it is not legal to
+     *                      attach it as a child to this
+     *                      <code>SOAPElement</code>
+     */
+    public SOAPElement addTextNode(String text) throws SOAPException;
+
+    /**
+     * Adds an attribute with the specified name and value to this
+     * <code>SOAPElement</code> object.
+     *
+     * @param name a <code>Name</code> object with the name of the attribute
+     * @param value a <code>String</code> giving the value of the attribute
+     * @return the <code>SOAPElement</code> object into which the attribute was
+     *         inserted
+     *
+     * @exception SOAPException if there is an error in creating the
+     *                          Attribute, or it is invalid to set
+                                an attribute with <code>Name</code>
+                                 <code>name</code> on this SOAPElement.
+     * @see SOAPElement#addAttribute(javax.xml.namespace.QName, String)
+     */
+    public SOAPElement addAttribute(Name name, String value)
+        throws SOAPException;
+
+    /**
+     * Adds an attribute with the specified name and value to this
+     * <code>SOAPElement</code> object.
+     *
+     * @param qname a <code>QName</code> object with the name of the attribute
+     * @param value a <code>String</code> giving the value of the attribute
+     * @return the <code>SOAPElement</code> object into which the attribute was
+     *         inserted
+     *
+     * @exception SOAPException if there is an error in creating the
+     *                          Attribute, or it is invalid to set
+                                an attribute with <code>QName</code>
+                                <code>qname</code> on this SOAPElement.
+     * @see SOAPElement#addAttribute(Name, String)
+     * @since 1.6, SAAJ 1.3
+     */
+    public SOAPElement addAttribute(QName qname, String value)
+        throws SOAPException;
+
+    /**
+     * Adds a namespace declaration with the specified prefix and URI to this
+     * <code>SOAPElement</code> object.
+     *
+     * @param prefix a <code>String</code> giving the prefix of the namespace
+     * @param uri a <code>String</code> giving the uri of the namespace
+     * @return the <code>SOAPElement</code> object into which this
+     *          namespace declaration was inserted.
+     *
+     * @exception SOAPException if there is an error in creating the
+     *                          namespace
+     */
+    public SOAPElement addNamespaceDeclaration(String prefix, String uri)
+        throws SOAPException;
+
+    /**
+     * Returns the value of the attribute with the specified name.
+     *
+     * @param name a <code>Name</code> object with the name of the attribute
+     * @return a <code>String</code> giving the value of the specified
+     *         attribute, Null if there is no such attribute
+     * @see SOAPElement#getAttributeValue(javax.xml.namespace.QName)
+     */
+    public String getAttributeValue(Name name);
+
+    /**
+     * Returns the value of the attribute with the specified qname.
+     *
+     * @param qname a <code>QName</code> object with the qname of the attribute
+     * @return a <code>String</code> giving the value of the specified
+     *         attribute, Null if there is no such attribute
+     * @see SOAPElement#getAttributeValue(Name)
+     * @since 1.6, SAAJ 1.3
+     */
+    public String getAttributeValue(QName qname);
+
+    /**
+     * Returns an <code>Iterator</code> over all of the attribute
+     * <code>Name</code> objects in this
+     * <code>SOAPElement</code> object. The iterator can be used to get
+     * the attribute names, which can then be passed to the method
+     * <code>getAttributeValue</code> to retrieve the value of each
+     * attribute.
+     *
+     * @see SOAPElement#getAllAttributesAsQNames()
+     * @return an iterator over the names of the attributes
+     */
+    public Iterator getAllAttributes();
+
+    /**
+     * Returns an <code>Iterator</code> over all of the attributes
+     * in this <code>SOAPElement</code>  as <code>QName</code> objects.
+     * The iterator can be used to get the attribute QName, which can then
+     * be passed to the method <code>getAttributeValue</code> to retrieve
+     * the value of each attribute.
+     *
+     * @return an iterator over the QNames of the attributes
+     * @see SOAPElement#getAllAttributes()
+     * @since 1.6, SAAJ 1.3
+     */
+    public Iterator getAllAttributesAsQNames();
+
+
+    /**
+     * Returns the URI of the namespace that has the given prefix.
+     *
+     * @param prefix a <code>String</code> giving the prefix of the namespace
+     *        for which to search
+     * @return a <code>String</code> with the uri of the namespace that has
+     *        the given prefix
+     */
+    public String getNamespaceURI(String prefix);
+
+    /**
+     * Returns an <code>Iterator</code> over the namespace prefix
+     * <code>String</code>s declared by this element. The prefixes returned by
+     * this iterator can be passed to the method
+     * <code>getNamespaceURI</code> to retrieve the URI of each namespace.
+     *
+     * @return an iterator over the namespace prefixes in this
+     *         <code>SOAPElement</code> object
+     */
+    public Iterator getNamespacePrefixes();
+
+    /**
+     * Returns an <code>Iterator</code> over the namespace prefix
+     * <code>String</code>s visible to this element. The prefixes returned by
+     * this iterator can be passed to the method
+     * <code>getNamespaceURI</code> to retrieve the URI of each namespace.
+     *
+     * @return an iterator over the namespace prefixes are within scope of this
+     *         <code>SOAPElement</code> object
+     *
+     * @since 1.6, SAAJ 1.2
+     */
+    public Iterator getVisibleNamespacePrefixes();
+
+    /**
+     * Creates a <code>QName</code> whose namespace URI is the one associated
+     * with the parameter, <code>prefix</code>, in the context of this
+     * <code>SOAPElement</code>. The remaining elements of the new
+     * <code>QName</code> are taken directly from the parameters,
+     * <code>localName</code> and <code>prefix</code>.
+     *
+     * @param localName
+     *          a <code>String</code> containing the local part of the name.
+     * @param prefix
+     *          a <code>String</code> containing the prefix for the name.
+     *
+     * @return a <code>QName</code> with the specified <code>localName</code>
+     *          and <code>prefix</code>, and with a namespace that is associated
+     *          with the <code>prefix</code> in the context of this
+     *          <code>SOAPElement</code>. This namespace will be the same as
+     *          the one that would be returned by
+     *          <code>{@link #getNamespaceURI(String)}</code> if it were given
+     *          <code>prefix</code> as it's parameter.
+     *
+     * @exception SOAPException if the <code>QName</code> cannot be created.
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public QName createQName(String localName, String prefix)
+        throws SOAPException;
+    /**
+     * Returns the name of this <code>SOAPElement</code> object.
+     *
+     * @return a <code>Name</code> object with the name of this
+     *         <code>SOAPElement</code> object
+     */
+    public Name getElementName();
+
+    /**
+     * Returns the qname of this <code>SOAPElement</code> object.
+     *
+     * @return a <code>QName</code> object with the qname of this
+     *         <code>SOAPElement</code> object
+     * @see SOAPElement#getElementName()
+     * @since 1.6, SAAJ 1.3
+     */
+    public QName getElementQName();
+
+    /**
+    * Changes the name of this <code>Element</code> to <code>newName</code> if
+    * possible. SOAP Defined elements such as SOAPEnvelope, SOAPHeader, SOAPBody
+    * etc. cannot have their names changed using this method. Any attempt to do
+    * so will result in a  SOAPException being thrown.
+    *<P>
+    * Callers should not rely on the element instance being renamed as is.
+    * Implementations could end up copying the content of the
+    * <code>SOAPElement</code> to a renamed instance.
+    *
+    * @param newName the new name for the <code>Element</code>.
+    *
+    * @exception SOAPException if changing the name of this <code>Element</code>
+    *                          is not allowed.
+    * @return The renamed Node
+    *
+    * @since 1.6, SAAJ 1.3
+    */
+   public SOAPElement setElementQName(QName newName) throws SOAPException;
+
+   /**
+     * Removes the attribute with the specified name.
+     *
+     * @param name the <code>Name</code> object with the name of the
+     *        attribute to be removed
+     * @return <code>true</code> if the attribute was
+     *         removed successfully; <code>false</code> if it was not
+     * @see SOAPElement#removeAttribute(javax.xml.namespace.QName)
+     */
+    public boolean removeAttribute(Name name);
+
+    /**
+     * Removes the attribute with the specified qname.
+     *
+     * @param qname the <code>QName</code> object with the qname of the
+     *        attribute to be removed
+     * @return <code>true</code> if the attribute was
+     *         removed successfully; <code>false</code> if it was not
+     * @see SOAPElement#removeAttribute(Name)
+     * @since 1.6, SAAJ 1.3
+     */
+    public boolean removeAttribute(QName qname);
+
+    /**
+     * Removes the namespace declaration corresponding to the given prefix.
+     *
+     * @param prefix a <code>String</code> giving the prefix for which
+     *        to search
+     * @return <code>true</code> if the namespace declaration was
+     *         removed successfully; <code>false</code> if it was not
+     */
+    public boolean removeNamespaceDeclaration(String prefix);
+
+    /**
+     * Returns an <code>Iterator</code> over all the immediate child
+     * {@link Node}s of this element. This includes <code>javax.xml.soap.Text</code>
+     * objects as well as <code>SOAPElement</code> objects.
+     * <p>
+     * Calling this method may cause child <code>Element</code>,
+     * <code>SOAPElement</code> and <code>org.w3c.dom.Text</code> nodes to be
+     * replaced by <code>SOAPElement</code>, <code>SOAPHeaderElement</code>,
+     * <code>SOAPBodyElement</code> or <code>javax.xml.soap.Text</code> nodes as
+     * appropriate for the type of this parent node. As a result the calling
+     * application must treat any existing references to these child nodes that
+     * have been obtained through DOM APIs as invalid and either discard them or
+     * refresh them with the values returned by this <code>Iterator</code>. This
+     * behavior can be avoided by calling the equivalent DOM APIs. See
+     * {@link <a HREF="package-summary.html#package_description">javax.xml.soap<a>}
+     * for more details.
+     *
+     * @return an iterator with the content of this <code>SOAPElement</code>
+     *         object
+     */
+    public Iterator getChildElements();
+
+    /**
+     * Returns an <code>Iterator</code> over all the immediate child
+     * {@link Node}s of this element with the specified name. All of these
+     * children will be <code>SOAPElement</code> nodes.
+     * <p>
+     * Calling this method may cause child <code>Element</code>,
+     * <code>SOAPElement</code> and <code>org.w3c.dom.Text</code> nodes to be
+     * replaced by <code>SOAPElement</code>, <code>SOAPHeaderElement</code>,
+     * <code>SOAPBodyElement</code> or <code>javax.xml.soap.Text</code> nodes as
+     * appropriate for the type of this parent node. As a result the calling
+     * application must treat any existing references to these child nodes that
+     * have been obtained through DOM APIs as invalid and either discard them or
+     * refresh them with the values returned by this <code>Iterator</code>. This
+     * behavior can be avoided by calling the equivalent DOM APIs. See
+     * {@link <a HREF="package-summary.html#package_description">javax.xml.soap<a>}
+     * for more details.
+     *
+     * @param name a <code>Name</code> object with the name of the child
+     *        elements to be returned
+     *
+     * @return an <code>Iterator</code> object over all the elements
+     *         in this <code>SOAPElement</code> object with the
+     *         specified name
+     * @see SOAPElement#getChildElements(javax.xml.namespace.QName)
+     */
+    public Iterator getChildElements(Name name);
+
+    /**
+     * Returns an <code>Iterator</code> over all the immediate child
+     * {@link Node}s of this element with the specified qname. All of these
+     * children will be <code>SOAPElement</code> nodes.
+     * <p>
+     * Calling this method may cause child <code>Element</code>,
+     * <code>SOAPElement</code> and <code>org.w3c.dom.Text</code> nodes to be
+     * replaced by <code>SOAPElement</code>, <code>SOAPHeaderElement</code>,
+     * <code>SOAPBodyElement</code> or <code>javax.xml.soap.Text</code> nodes as
+     * appropriate for the type of this parent node. As a result the calling
+     * application must treat any existing references to these child nodes that
+     * have been obtained through DOM APIs as invalid and either discard them or
+     * refresh them with the values returned by this <code>Iterator</code>. This
+     * behavior can be avoided by calling the equivalent DOM APIs. See
+     * {@link <a HREF="package-summary.html#package_description">javax.xml.soap<a>}
+     * for more details.
+     *
+     * @param qname a <code>QName</code> object with the qname of the child
+     *        elements to be returned
+     *
+     * @return an <code>Iterator</code> object over all the elements
+     *         in this <code>SOAPElement</code> object with the
+     *         specified qname
+     * @see SOAPElement#getChildElements(Name)
+     * @since 1.6, SAAJ 1.3
+     */
+    public Iterator getChildElements(QName qname);
+
+    /**
+     * Sets the encoding style for this <code>SOAPElement</code> object
+     * to one specified.
+     *
+     * @param encodingStyle a <code>String</code> giving the encoding style
+     *
+     * @exception IllegalArgumentException if there was a problem in the
+     *            encoding style being set.
+     * @exception SOAPException if setting the encodingStyle is invalid for this SOAPElement.
+     * @see #getEncodingStyle
+     */
+    public void setEncodingStyle(String encodingStyle)
+        throws SOAPException;
+    /**
+     * Returns the encoding style for this <code>SOAPElement</code> object.
+     *
+     * @return a <code>String</code> giving the encoding style
+     *
+     * @see #setEncodingStyle
+     */
+    public String getEncodingStyle();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPElementFactory.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,138 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+/**
+ * <code>SOAPElementFactory</code> is a factory for XML fragments that
+ * will eventually end up in the SOAP part. These fragments
+ * can be inserted as children of the <code>SOAPHeader</code> or
+ * <code>SOAPBody</code> or <code>SOAPEnvelope</code>.
+ *
+ * <p>Elements created using this factory do not have the properties
+ * of an element that lives inside a SOAP header document. These
+ * elements are copied into the XML document tree when they are
+ * inserted.
+ * @deprecated - Use <code>javax.xml.soap.SOAPFactory</code> for creating SOAPElements.
+ * @see javax.xml.soap.SOAPFactory
+ * @since 1.6
+ */
+public class SOAPElementFactory {
+
+    private SOAPFactory soapFactory;
+
+    private SOAPElementFactory(SOAPFactory soapFactory) {
+        this.soapFactory = soapFactory;
+    }
+
+    /**
+     * Create a <code>SOAPElement</code> object initialized with the
+     * given <code>Name</code> object.
+     *
+     * @param name a <code>Name</code> object with the XML name for
+     *             the new element
+     *
+     * @return the new <code>SOAPElement</code> object that was
+     *         created
+     *
+     * @exception SOAPException if there is an error in creating the
+     *            <code>SOAPElement</code> object
+     *
+     * @deprecated Use
+     * javax.xml.soap.SOAPFactory.createElement(javax.xml.soap.Name)
+     * instead
+     *
+     * @see javax.xml.soap.SOAPFactory#createElement(javax.xml.soap.Name)
+     * @see javax.xml.soap.SOAPFactory#createElement(javax.xml.namespace.QName)
+     */
+    public SOAPElement create(Name name) throws SOAPException {
+        return soapFactory.createElement(name);
+    }
+
+    /**
+     * Create a <code>SOAPElement</code> object initialized with the
+     * given local name.
+     *
+     * @param localName a <code>String</code> giving the local name for
+     *             the new element
+     *
+     * @return the new <code>SOAPElement</code> object that was
+     *         created
+     *
+     * @exception SOAPException if there is an error in creating the
+     *            <code>SOAPElement</code> object
+     *
+     * @deprecated Use
+     * javax.xml.soap.SOAPFactory.createElement(String localName) instead
+     *
+     * @see javax.xml.soap.SOAPFactory#createElement(java.lang.String)
+     */
+    public SOAPElement create(String localName) throws SOAPException {
+        return soapFactory.createElement(localName);
+    }
+
+    /**
+     * Create a new <code>SOAPElement</code> object with the given
+     * local name, prefix and uri.
+     *
+     * @param localName a <code>String</code> giving the local name
+     *                  for the new element
+     * @param prefix the prefix for this <code>SOAPElement</code>
+     * @param uri a <code>String</code> giving the URI of the
+     *            namespace to which the new element belongs
+     *
+     * @exception SOAPException if there is an error in creating the
+     *            <code>SOAPElement</code> object
+     *
+     * @deprecated Use
+     * javax.xml.soap.SOAPFactory.createElement(String localName,
+     *                      String prefix,
+     *                      String uri)
+     * instead
+     *
+     * @see javax.xml.soap.SOAPFactory#createElement(java.lang.String, java.lang.String, java.lang.String)
+     */
+    public SOAPElement create(String localName, String prefix, String uri)
+        throws SOAPException {
+        return soapFactory.createElement(localName, prefix, uri);
+    }
+
+    /**
+     * Creates a new instance of <code>SOAPElementFactory</code>.
+     *
+     * @return a new instance of a <code>SOAPElementFactory</code>
+     *
+     * @exception SOAPException if there was an error creating the
+     *            default <code>SOAPElementFactory</code>
+     */
+    public static SOAPElementFactory newInstance() throws SOAPException {
+        try {
+            return new SOAPElementFactory(SOAPFactory.newInstance());
+        } catch (Exception ex) {
+            throw new SOAPException(
+                "Unable to create SOAP Element Factory: " + ex.getMessage());
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPEnvelope.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,202 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+
+/**
+ * The container for the SOAPHeader and SOAPBody portions of a
+ * <code>SOAPPart</code> object. By default, a <code>SOAPMessage</code>
+ * object is created with a <code>SOAPPart</code> object that has a
+ * <code>SOAPEnvelope</code> object. The <code>SOAPEnvelope</code> object
+ * by default has an empty <code>SOAPBody</code> object and an empty
+ * <code>SOAPHeader</code> object.  The <code>SOAPBody</code> object is
+ * required, and the <code>SOAPHeader</code> object, though
+ * optional, is used in the majority of cases. If the
+ * <code>SOAPHeader</code> object is not needed, it can be deleted,
+ * which is shown later.
+ * <P>
+ * A client can access the <code>SOAPHeader</code> and <code>SOAPBody</code>
+ * objects by calling the methods <code>SOAPEnvelope.getHeader</code> and
+ * <code>SOAPEnvelope.getBody</code>. The
+ * following  lines of code use these two methods after starting with
+ * the <code>SOAPMessage</code>
+ * object <i>message</i> to get the <code>SOAPPart</code> object <i>sp</i>,
+ * which is then used to get the <code>SOAPEnvelope</code> object <i>se</i>.
+ *
+ * <PRE>
+ *     SOAPPart sp = message.getSOAPPart();
+ *     SOAPEnvelope se = sp.getEnvelope();
+ *     SOAPHeader sh = se.getHeader();
+ *     SOAPBody sb = se.getBody();
+ * </PRE>
+ * <P>
+ * It is possible to change the body or header of a <code>SOAPEnvelope</code>
+ * object by retrieving the current one, deleting it, and then adding
+ * a new body or header. The <code>javax.xml.soap.Node</code> method
+ * <code>deleteNode</code> deletes the XML element (node) on which it is
+ * called.  For example, the following line of code deletes the
+ * <code>SOAPBody</code> object that is retrieved by the method <code>getBody</code>.
+ * <PRE>
+ *      se.getBody().detachNode();
+ * </PRE>
+ * To create a <code>SOAPHeader</code> object to replace the one that was removed,
+ * a client uses
+ * the method <code>SOAPEnvelope.addHeader</code>, which creates a new header and
+ * adds it to the <code>SOAPEnvelope</code> object. Similarly, the method
+ * <code>addBody</code> creates a new <code>SOAPBody</code> object and adds
+ * it to the <code>SOAPEnvelope</code> object. The following code fragment
+ * retrieves the current header, removes it, and adds a new one. Then
+ * it retrieves the current body, removes it, and adds a new one.
+ *
+ * <PRE>
+ *     SOAPPart sp = message.getSOAPPart();
+ *     SOAPEnvelope se = sp.getEnvelope();
+ *     se.getHeader().detachNode();
+ *     SOAPHeader sh = se.addHeader();
+ *     se.getBody().detachNode();
+ *     SOAPBody sb = se.addBody();
+ * </PRE>
+ * It is an error to add a <code>SOAPBody</code> or <code>SOAPHeader</code>
+ * object if one already exists.
+ * <P>
+ * The <code>SOAPEnvelope</code> interface provides three methods for creating
+ * <code>Name</code> objects. One method creates <code>Name</code> objects with
+ * a local name, a namespace prefix, and a namesapce URI. The second method creates
+ * <code>Name</code> objects with a local name and a namespace prefix, and the third
+ * creates <code>Name</code> objects with just a local name.  The following line of
+ * code, in which <i>se</i> is a <code>SOAPEnvelope</code> object, creates a new
+ * <code>Name</code> object with all three.
+ * <PRE>
+ *     Name name = se.createName("GetLastTradePrice", "WOMBAT",
+ *                                "http://www.wombat.org/trader");
+ * </PRE>
+ *
+ * @since 1.6
+ */
+public interface SOAPEnvelope extends SOAPElement {
+
+    /**
+     * Creates a new <code>Name</code> object initialized with the
+     * given local name, namespace prefix, and namespace URI.
+     * <P>
+     * This factory method creates <code>Name</code> objects for use in
+     * the SOAP/XML document.
+     *
+     * @param localName a <code>String</code> giving the local name
+     * @param prefix a <code>String</code> giving the prefix of the namespace
+     * @param uri a <code>String</code> giving the URI of the namespace
+     * @return a <code>Name</code> object initialized with the given
+     *         local name, namespace prefix, and namespace URI
+     * @throws SOAPException if there is a SOAP error
+     */
+    public abstract Name createName(String localName, String prefix,
+                                    String uri)
+        throws SOAPException;
+
+    /**
+     * Creates a new <code>Name</code> object initialized with the
+     * given local name.
+     * <P>
+     * This factory method creates <code>Name</code> objects for use in
+     * the SOAP/XML document.
+     *
+     * @param localName a <code>String</code> giving the local name
+     * @return a <code>Name</code> object initialized with the given
+     *         local name
+     * @throws SOAPException if there is a SOAP error
+     */
+    public abstract Name createName(String localName)
+        throws SOAPException;
+
+    /**
+     * Returns the <code>SOAPHeader</code> object for
+     * this <code>SOAPEnvelope</code> object.
+     * <P>
+     * A new <code>SOAPMessage</code> object is by default created with a
+     * <code>SOAPEnvelope</code> object that contains an empty
+     * <code>SOAPHeader</code> object.  As a result, the method
+     * <code>getHeader</code> will always return a <code>SOAPHeader</code>
+     * object unless the header has been removed and a new one has not
+     * been added.
+     *
+     * @return the <code>SOAPHeader</code> object or <code>null</code> if
+     *         there is none
+     * @exception SOAPException if there is a problem obtaining the
+     *            <code>SOAPHeader</code> object
+     */
+    public SOAPHeader getHeader() throws SOAPException;
+
+    /**
+     * Returns the <code>SOAPBody</code> object associated with this
+     * <code>SOAPEnvelope</code> object.
+     * <P>
+     * A new <code>SOAPMessage</code> object is by default created with a
+     * <code>SOAPEnvelope</code> object that contains an empty
+     * <code>SOAPBody</code> object.  As a result, the method
+     * <code>getBody</code> will always return a <code>SOAPBody</code>
+     * object unless the body has been removed and a new one has not
+     * been added.
+     *
+     * @return the <code>SOAPBody</code> object for this
+     *         <code>SOAPEnvelope</code> object or <code>null</code>
+     *         if there is none
+     * @exception SOAPException if there is a problem obtaining the
+     *            <code>SOAPBody</code> object
+     */
+    public SOAPBody getBody() throws SOAPException;
+    /**
+     * Creates a <code>SOAPHeader</code> object and sets it as the
+     * <code>SOAPHeader</code> object for this <code>SOAPEnvelope</code>
+     * object.
+     * <P>
+     * It is illegal to add a header when the envelope already
+     * contains a header.  Therefore, this method should be called
+     * only after the existing header has been removed.
+     *
+     * @return the new <code>SOAPHeader</code> object
+     *
+     * @exception SOAPException if this
+     *            <code>SOAPEnvelope</code> object already contains a
+     *            valid <code>SOAPHeader</code> object
+     */
+    public SOAPHeader addHeader() throws SOAPException;
+    /**
+     * Creates a <code>SOAPBody</code> object and sets it as the
+     * <code>SOAPBody</code> object for this <code>SOAPEnvelope</code>
+     * object.
+     * <P>
+     * It is illegal to add a body when the envelope already
+     * contains a body. Therefore, this method should be called
+     * only after the existing body has been removed.
+     *
+     * @return the new <code>SOAPBody</code> object
+     *
+     * @exception SOAPException if this
+     *            <code>SOAPEnvelope</code> object already contains a
+     *            valid <code>SOAPBody</code> object
+     */
+    public SOAPBody addBody() throws SOAPException;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPException.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,165 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+/**
+ * An exception that signals that a SOAP exception has occurred. A
+ * <code>SOAPException</code> object may contain a <code>String</code>
+ * that gives the reason for the exception, an embedded
+ * <code>Throwable</code> object, or both. This class provides methods
+ * for retrieving reason messages and for retrieving the embedded
+ * <code>Throwable</code> object.
+ *
+ * <P> Typical reasons for throwing a <code>SOAPException</code>
+ * object are problems such as difficulty setting a header, not being
+ * able to send a message, and not being able to get a connection with
+ * the provider.  Reasons for embedding a <code>Throwable</code>
+ * object include problems such as input/output errors or a parsing
+ * problem, such as an error in parsing a header.
+ *
+ * @since 1.6
+ */
+public class SOAPException extends Exception {
+    private Throwable cause;
+
+    /**
+     * Constructs a <code>SOAPException</code> object with no
+     * reason or embedded <code>Throwable</code> object.
+     */
+    public SOAPException() {
+        super();
+        this.cause = null;
+    }
+
+    /**
+     * Constructs a <code>SOAPException</code> object with the given
+     * <code>String</code> as the reason for the exception being thrown.
+     *
+     * @param reason a description of what caused the exception
+     */
+    public SOAPException(String reason) {
+        super(reason);
+        this.cause = null;
+    }
+
+    /**
+     * Constructs a <code>SOAPException</code> object with the given
+     * <code>String</code> as the reason for the exception being thrown
+     * and the given <code>Throwable</code> object as an embedded
+     * exception.
+     *
+     * @param reason a description of what caused the exception
+     * @param cause a <code>Throwable</code> object that is to
+     *        be embedded in this <code>SOAPException</code> object
+     */
+    public SOAPException(String reason, Throwable cause) {
+        super(reason);
+        initCause(cause);
+    }
+
+    /**
+     * Constructs a <code>SOAPException</code> object initialized
+     * with the given <code>Throwable</code> object.
+     */
+    public SOAPException(Throwable cause) {
+        super(cause.toString());
+        initCause(cause);
+    }
+
+    /**
+     * Returns the detail message for this <code>SOAPException</code>
+     * object.
+     * <P>
+     * If there is an embedded <code>Throwable</code> object, and if the
+     * <code>SOAPException</code> object has no detail message of its
+     * own, this method will return the detail message from the embedded
+     * <code>Throwable</code> object.
+     *
+     * @return the error or warning message for this
+     *         <code>SOAPException</code> or, if it has none, the
+     *         message of the embedded <code>Throwable</code> object,
+     *         if there is one
+     */
+    public String getMessage() {
+        String message = super.getMessage();
+        if (message == null && cause != null) {
+            return cause.getMessage();
+        } else {
+            return message;
+        }
+    }
+
+    /**
+     * Returns the <code>Throwable</code> object embedded in this
+     * <code>SOAPException</code> if there is one. Otherwise, this method
+     * returns <code>null</code>.
+     *
+     * @return the embedded <code>Throwable</code> object or <code>null</code>
+     *         if there is none
+     */
+
+    public Throwable getCause() {
+        return cause;
+    }
+
+    /**
+     * Initializes the <code>cause</code> field of this <code>SOAPException</code>
+     * object with the given <code>Throwable</code> object.
+     * <P>
+     * This method can be called at most once.  It is generally called from
+     * within the constructor or immediately after the constructor has
+     * returned a new <code>SOAPException</code> object.
+     * If this <code>SOAPException</code> object was created with the
+     * constructor {@link #SOAPException(Throwable)} or
+     * {@link #SOAPException(String,Throwable)}, meaning that its
+     * <code>cause</code> field already has a value, this method cannot be
+     * called even once.
+     *
+     * @param  cause the <code>Throwable</code> object that caused this
+     *         <code>SOAPException</code> object to be thrown.  The value of this
+     *         parameter is saved for later retrieval by the
+     *         {@link #getCause()} method.  A <tt>null</tt> value is
+     *         permitted and indicates that the cause is nonexistent or
+     *         unknown.
+     * @return  a reference to this <code>SOAPException</code> instance
+     * @throws IllegalArgumentException if <code>cause</code> is this
+     *         <code>Throwable</code> object.  (A <code>Throwable</code> object
+     *         cannot be its own cause.)
+     * @throws IllegalStateException if the cause for this <code>SOAPException</code> object
+     *         has already been initialized
+     */
+    public synchronized Throwable initCause(Throwable cause) {
+        if (this.cause != null) {
+            throw new IllegalStateException("Can't override cause");
+        }
+        if (cause == this) {
+            throw new IllegalArgumentException("Self-causation not permitted");
+        }
+        this.cause = cause;
+
+        return this;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPFactory.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,300 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+import javax.xml.namespace.QName;
+
+import org.w3c.dom.Element;
+
+/**
+ * <code>SOAPFactory</code> is a factory for creating various objects
+ * that exist in the SOAP XML tree.
+
+ * <code>SOAPFactory</code> can be
+ * used to create XML fragments that will eventually end up in the
+ * SOAP part. These fragments can be inserted as children of the
+ * {@link SOAPHeaderElement} or {@link SOAPBodyElement} or
+ * {@link SOAPEnvelope} or other {@link SOAPElement} objects.
+ *
+ * <code>SOAPFactory</code> also has methods to create
+ * <code>javax.xml.soap.Detail</code> objects as well as
+ * <code>java.xml.soap.Name</code> objects.
+ *
+ * @since 1.6
+ */
+public abstract class SOAPFactory {
+
+    /**
+     * A constant representing the property used to lookup the name of
+     * a <code>SOAPFactory</code> implementation class.
+     */
+    static private final String SOAP_FACTORY_PROPERTY =
+        "javax.xml.soap.SOAPFactory";
+
+    /**
+     * Class name of default <code>SOAPFactory</code> implementation.
+     */
+    static final String DEFAULT_SOAP_FACTORY
+        = "com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl";
+
+    /**
+     * Creates a <code>SOAPElement</code> object from an existing DOM
+     * <code>Element</code>. If the DOM <code>Element</code> that is passed in
+     * as an argument is already a <code>SOAPElement</code> then this method
+     * must return it unmodified without any further work. Otherwise, a new
+     * <code>SOAPElement</code> is created and a deep copy is made of the
+     * <code>domElement</code> argument. The concrete type of the return value
+     * will depend on the name of the <code>domElement</code> argument. If any
+     * part of the tree rooted in <code>domElement</code> violates SOAP rules, a
+     * <code>SOAPException</code> will be thrown.
+     *
+     * @param domElement - the <code>Element</code> to be copied.
+     *
+     * @return a new <code>SOAPElement</code> that is a copy of <code>domElement</code>.
+     *
+     * @exception SOAPException if there is an error in creating the
+     *            <code>SOAPElement</code> object
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public SOAPElement createElement(Element domElement) throws SOAPException {
+        throw new UnsupportedOperationException("createElement(org.w3c.dom.Element) must be overridden by all subclasses of SOAPFactory.");
+    }
+
+    /**
+     * Creates a <code>SOAPElement</code> object initialized with the
+     * given <code>Name</code> object. The concrete type of the return value
+     * will depend on the name given to the new <code>SOAPElement</code>. For
+     * instance, a new <code>SOAPElement</code> with the name
+     * "{http://www.w3.org/2003/05/soap-envelope}Envelope" would cause a
+     * <code>SOAPEnvelope</code> that supports SOAP 1.2 behavior to be created.
+     *
+     * @param name a <code>Name</code> object with the XML name for
+     *             the new element
+     *
+     * @return the new <code>SOAPElement</code> object that was
+     *         created
+     *
+     * @exception SOAPException if there is an error in creating the
+     *            <code>SOAPElement</code> object
+     * @see SOAPFactory#createElement(javax.xml.namespace.QName)
+     */
+    public abstract SOAPElement createElement(Name name) throws SOAPException;
+
+    /**
+     * Creates a <code>SOAPElement</code> object initialized with the
+     * given <code>QName</code> object. The concrete type of the return value
+     * will depend on the name given to the new <code>SOAPElement</code>. For
+     * instance, a new <code>SOAPElement</code> with the name
+     * "{http://www.w3.org/2003/05/soap-envelope}Envelope" would cause a
+     * <code>SOAPEnvelope</code> that supports SOAP 1.2 behavior to be created.
+     *
+     * @param qname a <code>QName</code> object with the XML name for
+     *             the new element
+     *
+     * @return the new <code>SOAPElement</code> object that was
+     *         created
+     *
+     * @exception SOAPException if there is an error in creating the
+     *            <code>SOAPElement</code> object
+     * @see SOAPFactory#createElement(Name)
+     * @since 1.6, SAAJ 1.3
+     */
+    public  SOAPElement createElement(QName qname) throws SOAPException {
+        throw new UnsupportedOperationException("createElement(QName) must be overridden by all subclasses of SOAPFactory.");
+    }
+
+    /**
+     * Creates a <code>SOAPElement</code> object initialized with the
+     * given local name.
+     *
+     * @param localName a <code>String</code> giving the local name for
+     *             the new element
+     *
+     * @return the new <code>SOAPElement</code> object that was
+     *         created
+     *
+     * @exception SOAPException if there is an error in creating the
+     *            <code>SOAPElement</code> object
+     */
+    public abstract SOAPElement createElement(String localName)
+        throws SOAPException;
+
+
+    /**
+     * Creates a new <code>SOAPElement</code> object with the given
+     * local name, prefix and uri. The concrete type of the return value
+     * will depend on the name given to the new <code>SOAPElement</code>. For
+     * instance, a new <code>SOAPElement</code> with the name
+     * "{http://www.w3.org/2003/05/soap-envelope}Envelope" would cause a
+     * <code>SOAPEnvelope</code> that supports SOAP 1.2 behavior to be created.
+     *
+     * @param localName a <code>String</code> giving the local name
+     *                  for the new element
+     * @param prefix the prefix for this <code>SOAPElement</code>
+     * @param uri a <code>String</code> giving the URI of the
+     *            namespace to which the new element belongs
+     *
+     * @exception SOAPException if there is an error in creating the
+     *            <code>SOAPElement</code> object
+     */
+    public abstract SOAPElement createElement(
+        String localName,
+        String prefix,
+        String uri)
+        throws SOAPException;
+
+    /**
+     * Creates a new <code>Detail</code> object which serves as a container
+     * for <code>DetailEntry</code> objects.
+     * <P>
+     * This factory method creates <code>Detail</code> objects for use in
+     * situations where it is not practical to use the <code>SOAPFault</code>
+     * abstraction.
+     *
+     * @return a <code>Detail</code> object
+     * @throws SOAPException if there is a SOAP error
+     * @throws UnsupportedOperationException if the protocol specified
+     *         for the SOAPFactory was <code>DYNAMIC_SOAP_PROTOCOL</code>
+     */
+    public abstract Detail createDetail() throws SOAPException;
+
+    /**
+     *Creates a new <code>SOAPFault</code> object initialized with the given <code>reasonText</code>
+     *  and <code>faultCode</code>
+     *@param reasonText the ReasonText/FaultString for the fault
+     *@param faultCode the FaultCode for the fault
+     *@return a <code>SOAPFault</code> object
+     *@throws SOAPException if there is a SOAP error
+     *@since 1.6, SAAJ 1.3
+     */
+    public abstract SOAPFault createFault(String reasonText, QName faultCode) throws SOAPException;
+
+    /**
+     *Creates a new default <code>SOAPFault</code> object
+     *@return a <code>SOAPFault</code> object
+     *@throws SOAPException if there is a SOAP error
+     *@since 1.6, SAAJ 1.3
+     */
+    public abstract SOAPFault createFault() throws SOAPException;
+
+    /**
+     * Creates a new <code>Name</code> object initialized with the
+     * given local name, namespace prefix, and namespace URI.
+     * <P>
+     * This factory method creates <code>Name</code> objects for use in
+     * situations where it is not practical to use the <code>SOAPEnvelope</code>
+     * abstraction.
+     *
+     * @param localName a <code>String</code> giving the local name
+     * @param prefix a <code>String</code> giving the prefix of the namespace
+     * @param uri a <code>String</code> giving the URI of the namespace
+     * @return a <code>Name</code> object initialized with the given
+     *         local name, namespace prefix, and namespace URI
+     * @throws SOAPException if there is a SOAP error
+     */
+    public abstract Name createName(
+        String localName,
+        String prefix,
+        String uri)
+        throws SOAPException;
+
+    /**
+     * Creates a new <code>Name</code> object initialized with the
+     * given local name.
+     * <P>
+     * This factory method creates <code>Name</code> objects for use in
+     * situations where it is not practical to use the <code>SOAPEnvelope</code>
+     * abstraction.
+     *
+     * @param localName a <code>String</code> giving the local name
+     * @return a <code>Name</code> object initialized with the given
+     *         local name
+     * @throws SOAPException if there is a SOAP error
+     */
+    public abstract Name createName(String localName) throws SOAPException;
+
+    /**
+     * Creates a new <code>SOAPFactory</code> object that is an instance of
+     * the default implementation (SOAP 1.1),
+     *
+     * This method uses the following ordered lookup procedure to determine the SOAPFactory implementation class to load:
+     * <UL>
+     *  <LI> Use the javax.xml.soap.SOAPFactory system property.
+     *  <LI> Use the properties file "lib/jaxm.properties" in the JRE directory. This configuration file is in standard
+     * java.util.Properties format and contains the fully qualified name of the implementation class with the key being the
+     * system property defined above.
+     *  <LI> Use the Services API (as detailed in the JAR specification), if available, to determine the classname. The Services API
+     * will look for a classname in the file META-INF/services/javax.xml.soap.SOAPFactory in jars available to the runtime.
+     *  <LI> Use the SAAJMetaFactory instance to locate the SOAPFactory implementation class.
+     * </UL>
+     *
+     * @return a new instance of a <code>SOAPFactory</code>
+     *
+     * @exception SOAPException if there was an error creating the
+     *            default <code>SOAPFactory</code>
+     * @see SAAJMetaFactory
+     */
+    public static SOAPFactory newInstance()
+        throws SOAPException
+    {
+        try {
+            SOAPFactory factory = (SOAPFactory) FactoryFinder.find(
+                    SOAP_FACTORY_PROPERTY, DEFAULT_SOAP_FACTORY, false);
+            if (factory != null)
+                return factory;
+            return newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
+        } catch (Exception ex) {
+            throw new SOAPException(
+                "Unable to create SOAP Factory: " + ex.getMessage());
+        }
+
+    }
+
+    /**
+     * Creates a new <code>SOAPFactory</code> object that is an instance of
+     * the specified implementation, this method uses the SAAJMetaFactory to
+     * locate the implementation class and create the SOAPFactory instance.
+     *
+     * @return a new instance of a <code>SOAPFactory</code>
+     *
+     * @param protocol  a string constant representing the protocol of the
+     *                   specified SOAP factory implementation. May be
+     *                   either <code>DYNAMIC_SOAP_PROTOCOL</code>,
+     *                   <code>DEFAULT_SOAP_PROTOCOL</code> (which is the same
+     *                   as) <code>SOAP_1_1_PROTOCOL</code>, or
+     *                   <code>SOAP_1_2_PROTOCOL</code>.
+     *
+     * @exception SOAPException if there was an error creating the
+     *            specified <code>SOAPFactory</code>
+     * @see SAAJMetaFactory
+     * @since 1.6, SAAJ 1.3
+     */
+    public static SOAPFactory newInstance(String protocol)
+        throws SOAPException {
+            return SAAJMetaFactory.getInstance().newSOAPFactory(protocol);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPFault.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,513 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+import java.util.Iterator;
+import java.util.Locale;
+
+import javax.xml.namespace.QName;
+
+/**
+ * An element in the <code>SOAPBody</code> object that contains
+ * error and/or status information. This information may relate to
+ * errors in the <code>SOAPMessage</code> object or to problems
+ * that are not related to the content in the message itself. Problems
+ * not related to the message itself are generally errors in
+ * processing, such as the inability to communicate with an upstream
+ * server.
+ * <P>
+ * Depending on the <code>protocol</code> specified while creating the
+ * <code>MessageFactory</code> instance,  a <code>SOAPFault</code> has
+ * sub-elements as defined in the SOAP 1.1/SOAP 1.2 specification.
+ *
+ * @since 1.6
+ */
+public interface SOAPFault extends SOAPBodyElement {
+
+    /**
+     * Sets this <code>SOAPFault</code> object with the given fault code.
+     *
+     * <P> Fault codes, which give information about the fault, are defined
+     * in the SOAP 1.1 specification. A fault code is mandatory and must
+     * be of type <code>Name</code>. This method provides a convenient
+     * way to set a fault code. For example,
+     *
+     * <PRE>
+     * SOAPEnvelope se = ...;
+     * // Create a qualified name in the SOAP namespace with a localName
+     * // of "Client". Note that prefix parameter is optional and is null
+     * // here which causes the implementation to use an appropriate prefix.
+     * Name qname = se.createName("Client", null,
+     *                            SOAPConstants.URI_NS_SOAP_ENVELOPE);
+     * SOAPFault fault = ...;
+     * fault.setFaultCode(qname);
+     * </PRE>
+     * It is preferable to use this method over {@link #setFaultCode(String)}.
+     *
+     * @param faultCodeQName a <code>Name</code> object giving the fault
+     * code to be set. It must be namespace qualified.
+     * @see #getFaultCodeAsName
+     *
+     * @exception SOAPException if there was an error in adding the
+     *            <i>faultcode</i> element to the underlying XML tree.
+     *
+     * @since 1.6, SAAJ 1.2
+     */
+    public void setFaultCode(Name faultCodeQName) throws SOAPException;
+
+    /**
+     * Sets this <code>SOAPFault</code> object with the given fault code.
+     *
+     * It is preferable to use this method over {@link #setFaultCode(Name)}.
+     *
+     * @param faultCodeQName a <code>QName</code> object giving the fault
+     * code to be set. It must be namespace qualified.
+     * @see #getFaultCodeAsQName
+     *
+     * @exception SOAPException if there was an error in adding the
+     *            <code>faultcode</code> element to the underlying XML tree.
+     *
+     * @see #setFaultCode(Name)
+     * @see #getFaultCodeAsQName()
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public void setFaultCode(QName faultCodeQName) throws SOAPException;
+
+    /**
+     * Sets this <code>SOAPFault</code> object with the give fault code.
+     * <P>
+     * Fault codes, which given information about the fault, are defined in
+     * the SOAP 1.1 specification. This element is mandatory in SOAP 1.1.
+     * Because the fault code is required to be a QName it is preferable to
+     * use the {@link #setFaultCode(Name)} form of this method.
+     *
+     * @param faultCode a <code>String</code> giving the fault code to be set.
+     *         It must be of the form "prefix:localName" where the prefix has
+     *         been defined in a namespace declaration.
+     * @see #setFaultCode(Name)
+     * @see #getFaultCode
+     * @see SOAPElement#addNamespaceDeclaration
+     *
+     * @exception SOAPException if there was an error in adding the
+     *            <code>faultCode</code> to the underlying XML tree.
+     */
+    public void setFaultCode(String faultCode) throws SOAPException;
+
+    /**
+     * Gets the mandatory SOAP 1.1 fault code for this
+     * <code>SOAPFault</code> object as a SAAJ <code>Name</code> object.
+     * The SOAP 1.1 specification requires the value of the "faultcode"
+     * element to be of type QName. This method returns the content of the
+     * element as a QName in the form of a SAAJ Name object. This method
+     * should be used instead of the <code>getFaultCode</code> method since
+     * it allows applications to easily access the namespace name without
+     * additional parsing.
+     *
+     * @return a <code>Name</code> representing the faultcode
+     * @see #setFaultCode(Name)
+     *
+     * @since 1.6, SAAJ 1.2
+     */
+    public Name getFaultCodeAsName();
+
+
+    /**
+     * Gets the fault code for this
+     * <code>SOAPFault</code> object as a <code>QName</code> object.
+     *
+     * @return a <code>QName</code> representing the faultcode
+     *
+     * @see #setFaultCode(QName)
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public QName getFaultCodeAsQName();
+
+    /**
+     * Gets the Subcodes for this <code>SOAPFault</code> as an iterator over
+     * <code>QNames</code>.
+     *
+     * @return an <code>Iterator</code> that accesses a sequence of
+     *      <code>QNames</code>. This <code>Iterator</code> should not support
+     *      the optional <code>remove</code> method. The order in which the
+     *      Subcodes are returned reflects the hierarchy of Subcodes present
+     *      in the fault from top to bottom.
+     *
+     * @exception UnsupportedOperationException if this message does not
+     *      support the SOAP 1.2 concept of Subcode.
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public Iterator getFaultSubcodes();
+
+    /**
+     * Removes any Subcodes that may be contained by this
+     * <code>SOAPFault</code>. Subsequent calls to
+     * <code>getFaultSubcodes</code> will return an empty iterator until a call
+     * to <code>appendFaultSubcode</code> is made.
+     *
+     * @exception UnsupportedOperationException if this message does not
+     *      support the SOAP 1.2 concept of Subcode.
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public void removeAllFaultSubcodes();
+
+    /**
+     * Adds a Subcode to the end of the sequence of Subcodes contained by this
+     * <code>SOAPFault</code>. Subcodes, which were introduced in SOAP 1.2, are
+     * represented by a recursive sequence of subelements rooted in the
+     * mandatory Code subelement of a SOAP Fault.
+     *
+     * @param subcode a QName containing the Value of the Subcode.
+     *
+     * @exception SOAPException if there was an error in setting the Subcode
+     * @exception UnsupportedOperationException if this message does not
+     *      support the SOAP 1.2 concept of Subcode.
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public void appendFaultSubcode(QName subcode) throws SOAPException;
+
+    /**
+     * Gets the fault code for this <code>SOAPFault</code> object.
+     *
+     * @return a <code>String</code> with the fault code
+     * @see #getFaultCodeAsName
+     * @see #setFaultCode
+     */
+    public String getFaultCode();
+
+    /**
+     * Sets this <code>SOAPFault</code> object with the given fault actor.
+     * <P>
+     * The fault actor is the recipient in the message path who caused the
+     * fault to happen.
+     * <P>
+     * If this <code>SOAPFault</code> supports SOAP 1.2 then this call is
+     * equivalent to {@link #setFaultRole(String)}
+     *
+     * @param faultActor a <code>String</code> identifying the actor that
+     *        caused this <code>SOAPFault</code> object
+     * @see #getFaultActor
+     *
+     * @exception SOAPException if there was an error in adding the
+     *            <code>faultActor</code> to the underlying XML tree.
+     */
+    public void setFaultActor(String faultActor) throws SOAPException;
+
+    /**
+     * Gets the fault actor for this <code>SOAPFault</code> object.
+     * <P>
+     * If this <code>SOAPFault</code> supports SOAP 1.2 then this call is
+     * equivalent to {@link #getFaultRole()}
+     *
+     * @return a <code>String</code> giving the actor in the message path
+     *         that caused this <code>SOAPFault</code> object
+     * @see #setFaultActor
+     */
+    public String getFaultActor();
+
+    /**
+     * Sets the fault string for this <code>SOAPFault</code> object
+     * to the given string.
+     * <P>
+     * If this
+     * <code>SOAPFault</code> is part of a message that supports SOAP 1.2 then
+     * this call is equivalent to:
+     * <pre>
+     *      addFaultReasonText(faultString, Locale.getDefault());
+     * </pre>
+     *
+     * @param faultString a <code>String</code> giving an explanation of
+     *        the fault
+     * @see #getFaultString
+     *
+     * @exception SOAPException if there was an error in adding the
+     *            <code>faultString</code> to the underlying XML tree.
+     */
+    public void setFaultString(String faultString) throws SOAPException;
+
+    /**
+     * Sets the fault string for this <code>SOAPFault</code> object
+     * to the given string and localized to the given locale.
+     * <P>
+     * If this
+     * <code>SOAPFault</code> is part of a message that supports SOAP 1.2 then
+     * this call is equivalent to:
+     * <pre>
+     *      addFaultReasonText(faultString, locale);
+     * </pre>
+     *
+     * @param faultString a <code>String</code> giving an explanation of
+     *         the fault
+     * @param locale a {@link java.util.Locale Locale} object indicating
+     *         the native language of the <code>faultString</code>
+     * @see #getFaultString
+     *
+     * @exception SOAPException if there was an error in adding the
+     *            <code>faultString</code> to the underlying XML tree.
+     *
+     * @since 1.6, SAAJ 1.2
+     */
+    public void setFaultString(String faultString, Locale locale)
+        throws SOAPException;
+
+    /**
+     * Gets the fault string for this <code>SOAPFault</code> object.
+     * <P>
+     * If this
+     * <code>SOAPFault</code> is part of a message that supports SOAP 1.2 then
+     * this call is equivalent to:
+     * <pre>
+     *    String reason = null;
+     *    try {
+     *        reason = (String) getFaultReasonTexts().next();
+     *    } catch (SOAPException e) {}
+     *    return reason;
+     * </pre>
+     *
+     * @return a <code>String</code> giving an explanation of
+     *        the fault
+     * @see #setFaultString(String)
+     * @see #setFaultString(String, Locale)
+     */
+    public String getFaultString();
+
+    /**
+     * Gets the locale of the fault string for this <code>SOAPFault</code>
+     * object.
+     * <P>
+     * If this
+     * <code>SOAPFault</code> is part of a message that supports SOAP 1.2 then
+     * this call is equivalent to:
+     * <pre>
+     *    Locale locale = null;
+     *    try {
+     *        locale = (Locale) getFaultReasonLocales().next();
+     *    } catch (SOAPException e) {}
+     *    return locale;
+     * </pre>
+     *
+     * @return a <code>Locale</code> object indicating the native language of
+     *          the fault string or <code>null</code> if no locale was specified
+     * @see #setFaultString(String, Locale)
+     *
+     * @since 1.6, SAAJ 1.2
+     */
+    public Locale getFaultStringLocale();
+
+    /**
+     * Returns true if this <code>SOAPFault</code> has a <code>Detail</code>
+     * subelement and false otherwise. Equivalent to
+     * <code>(getDetail()!=null)</code>.
+     *
+     * @return true if this <code>SOAPFault</code> has a <code>Detail</code>
+     * subelement and false otherwise.
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public boolean hasDetail();
+
+    /**
+     * Returns the optional detail element for this <code>SOAPFault</code>
+     * object.
+     * <P>
+     * A <code>Detail</code> object carries application-specific error
+     * information, the scope of the error information is restricted to
+     * faults in the <code>SOAPBodyElement</code> objects if this is a
+     * SOAP 1.1 Fault.
+     *
+     * @return a <code>Detail</code> object with application-specific
+     *         error information if present, null otherwise
+     */
+    public Detail getDetail();
+
+    /**
+     * Creates an optional <code>Detail</code> object and sets it as the
+     * <code>Detail</code> object for this <code>SOAPFault</code>
+     * object.
+     * <P>
+     * It is illegal to add a detail when the fault already
+     * contains a detail. Therefore, this method should be called
+     * only after the existing detail has been removed.
+     *
+     * @return the new <code>Detail</code> object
+     *
+     * @exception SOAPException if this
+     *            <code>SOAPFault</code> object already contains a
+     *            valid <code>Detail</code> object
+     */
+    public Detail addDetail() throws SOAPException;
+
+    /**
+     * Returns an <code>Iterator</code> over a distinct sequence of
+     * <code>Locale</code>s for which there are associated Reason Text items.
+     * Any of these <code>Locale</code>s can be used in a call to
+     * <code>getFaultReasonText</code> in order to obtain a localized version
+     * of the Reason Text string.
+     *
+     * @return an <code>Iterator</code> over a sequence of <code>Locale</code>
+     *      objects for which there are associated Reason Text items.
+     *
+     * @exception SOAPException if there was an error in retrieving
+     * the  fault Reason locales.
+     * @exception UnsupportedOperationException if this message does not
+     *      support the SOAP 1.2 concept of Fault Reason.
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public Iterator getFaultReasonLocales() throws SOAPException;
+
+    /**
+     * Returns an <code>Iterator</code> over a sequence of
+     * <code>String</code> objects containing all of the Reason Text items for
+     * this <code>SOAPFault</code>.
+     *
+     * @return an <code>Iterator</code> over env:Fault/env:Reason/env:Text items.
+     *
+     * @exception SOAPException if there was an error in retrieving
+     * the  fault Reason texts.
+     * @exception UnsupportedOperationException if this message does not
+     *      support the SOAP 1.2 concept of Fault Reason.
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public Iterator getFaultReasonTexts() throws SOAPException;
+
+    /**
+     * Returns the Reason Text associated with the given <code>Locale</code>.
+     * If more than one such Reason Text exists the first matching Text is
+     * returned
+     *
+     * @param locale -- the <code>Locale</code> for which a localized
+     *      Reason Text is desired
+     *
+     * @return the Reason Text associated with <code>locale</code>
+     *
+     * @see #getFaultString
+     *
+     * @exception SOAPException if there was an error in retrieving
+     * the  fault Reason text for the specified locale .
+     * @exception UnsupportedOperationException if this message does not
+     *      support the SOAP 1.2 concept of Fault Reason.
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public String getFaultReasonText(Locale locale) throws SOAPException;
+
+    /**
+     * Appends or replaces a Reason Text item containing the specified
+     * text message and an <i>xml:lang</i> derived from
+     * <code>locale</code>. If a Reason Text item with this
+     * <i>xml:lang</i> already exists its text value will be replaced
+     * with <code>text</code>.
+     * The <code>locale</code> parameter should not be <code>null</code>
+     * <P>
+     * Code sample:
+     *
+     * <PRE>
+     * SOAPFault fault = ...;
+     * fault.addFaultReasonText("Version Mismatch", Locale.ENGLISH);
+     * </PRE>
+     *
+     * @param text -- reason message string
+     * @param locale -- Locale object representing the locale of the message
+     *
+     * @exception SOAPException if there was an error in adding the Reason text
+     * or the <code>locale</code> passed was <code>null</code>.
+     * @exception UnsupportedOperationException if this message does not
+     *      support the SOAP 1.2 concept of Fault Reason.
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public void addFaultReasonText(String text, java.util.Locale locale)
+        throws SOAPException;
+
+    /**
+     * Returns the optional Node element value for this
+     * <code>SOAPFault</code> object. The Node element is
+     * optional in SOAP 1.2.
+     *
+     * @return Content of the env:Fault/env:Node element as a String
+     * or <code>null</code> if none
+     *
+     * @exception UnsupportedOperationException if this message does not
+     *      support the SOAP 1.2 concept of Fault Node.
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public String getFaultNode();
+
+    /**
+     * Creates or replaces any existing Node element value for
+     * this <code>SOAPFault</code> object. The Node element
+     * is optional in SOAP 1.2.
+     *
+     * @exception SOAPException  if there was an error in setting the
+     *            Node for this  <code>SOAPFault</code> object.
+     * @exception UnsupportedOperationException if this message does not
+     *      support the SOAP 1.2 concept of Fault Node.
+     *
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public void setFaultNode(String uri) throws SOAPException;
+
+    /**
+     * Returns the optional Role element value for this
+     * <code>SOAPFault</code> object. The Role element is
+     * optional in SOAP 1.2.
+     *
+     * @return Content of the env:Fault/env:Role element as a String
+     * or <code>null</code> if none
+     *
+     * @exception UnsupportedOperationException if this message does not
+     *      support the SOAP 1.2 concept of Fault Role.
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public String getFaultRole();
+
+    /**
+     * Creates or replaces any existing Role element value for
+     * this <code>SOAPFault</code> object. The Role element
+     * is optional in SOAP 1.2.
+     *
+     * @param uri - the URI of the Role
+     *
+     * @exception SOAPException  if there was an error in setting the
+     *            Role for this  <code>SOAPFault</code> object.
+     *
+     * @exception UnsupportedOperationException if this message does not
+     *      support the SOAP 1.2 concept of Fault Role.
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public void setFaultRole(String uri) throws SOAPException;
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPFaultElement.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+/**
+ * A representation of the contents in
+ * a <code>SOAPFault</code> object.  The <code>Detail</code> interface
+ * is a <code>SOAPFaultElement</code>.
+ * <P>
+ * Content is added to a <code>SOAPFaultElement</code> using the
+ * <code>SOAPElement</code> method <code>addTextNode</code>.
+ *
+ * @since 1.6
+ */
+public interface SOAPFaultElement extends SOAPElement {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPHeader.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,263 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
+/**
+ * A representation of the SOAP header
+ * element. A SOAP header element consists of XML data that affects
+ * the way the application-specific content is processed by the message
+ * provider. For example, transaction semantics, authentication information,
+ * and so on, can be specified as the content of a <code>SOAPHeader</code>
+ * object.
+ * <P>
+ * A <code>SOAPEnvelope</code> object contains an empty
+ * <code>SOAPHeader</code> object by default. If the <code>SOAPHeader</code>
+ * object, which is optional, is not needed, it can be retrieved and deleted
+ * with the following line of code. The variable <i>se</i> is a
+ * <code>SOAPEnvelope</code> object.
+ * <PRE>
+ *      se.getHeader().detachNode();
+ * </PRE>
+ *
+ * A <code>SOAPHeader</code> object is created with the <code>SOAPEnvelope</code>
+ * method <code>addHeader</code>. This method, which creates a new header and adds it
+ * to the envelope, may be called only after the existing header has been removed.
+ *
+ * <PRE>
+ *      se.getHeader().detachNode();
+ *      SOAPHeader sh = se.addHeader();
+ * </PRE>
+ * <P>
+ * A <code>SOAPHeader</code> object can have only <code>SOAPHeaderElement</code>
+ * objects as its immediate children. The method <code>addHeaderElement</code>
+ * creates a new <code>HeaderElement</code> object and adds it to the
+ * <code>SOAPHeader</code> object. In the following line of code, the
+ * argument to the method <code>addHeaderElement</code> is a <code>Name</code>
+ * object that is the name for the new <code>HeaderElement</code> object.
+ * <PRE>
+ *      SOAPHeaderElement shElement = sh.addHeaderElement(name);
+ * </PRE>
+ *
+ * @see SOAPHeaderElement
+ * @since 1.6
+ */
+public interface SOAPHeader extends SOAPElement {
+    /**
+     * Creates a new <code>SOAPHeaderElement</code> object initialized with the
+     * specified name and adds it to this <code>SOAPHeader</code> object.
+     *
+     * @param name a <code>Name</code> object with the name of the new
+     *        <code>SOAPHeaderElement</code> object
+     * @return the new <code>SOAPHeaderElement</code> object that was
+     *          inserted into this <code>SOAPHeader</code> object
+     * @exception SOAPException if a SOAP error occurs
+     * @see SOAPHeader#addHeaderElement(javax.xml.namespace.QName)
+     */
+    public SOAPHeaderElement addHeaderElement(Name name)
+        throws SOAPException;
+
+    /**
+     * Creates a new <code>SOAPHeaderElement</code> object initialized with the
+     * specified qname and adds it to this <code>SOAPHeader</code> object.
+     *
+     * @param qname a <code>QName</code> object with the qname of the new
+     *        <code>SOAPHeaderElement</code> object
+     * @return the new <code>SOAPHeaderElement</code> object that was
+     *          inserted into this <code>SOAPHeader</code> object
+     * @exception SOAPException if a SOAP error occurs
+     * @see SOAPHeader#addHeaderElement(Name)
+     * @since 1.6, SAAJ 1.3
+     */
+    public SOAPHeaderElement addHeaderElement(QName qname)
+        throws SOAPException;
+
+    /**
+     * Returns an <code>Iterator</code> over all the <code>SOAPHeaderElement</code> objects
+     * in this <code>SOAPHeader</code> object
+     * that have the specified <i>actor</i> and that have a MustUnderstand attribute
+     * whose value is equivalent to <code>true</code>.
+     * <p>
+     * In SOAP 1.2 the <i>env:actor</i> attribute is replaced by the <i>env:role</i>
+     * attribute, but with essentially the same semantics.
+     *
+     * @param actor a <code>String</code> giving the URI of the <code>actor</code> / <code>role</code>
+     *        for which to search
+     * @return an <code>Iterator</code> object over all the
+     *         <code>SOAPHeaderElement</code> objects that contain the specified
+     *          <code>actor</code> / <code>role</code> and are marked as MustUnderstand
+     * @see #examineHeaderElements
+     * @see #extractHeaderElements
+     * @see SOAPConstants#URI_SOAP_ACTOR_NEXT
+     *
+     * @since 1.6, SAAJ 1.2
+     */
+    public Iterator examineMustUnderstandHeaderElements(String actor);
+
+    /**
+     * Returns an <code>Iterator</code> over all the <code>SOAPHeaderElement</code> objects
+     * in this <code>SOAPHeader</code> object
+     * that have the specified <i>actor</i>.
+     *
+     * An <i>actor</i> is a global attribute that indicates the intermediate
+     * parties that should process a message before it reaches its ultimate
+     * receiver. An actor receives the message and processes it before sending
+     * it on to the next actor. The default actor is the ultimate intended
+     * recipient for the message, so if no actor attribute is included in a
+     * <code>SOAPHeader</code> object, it is sent to the ultimate receiver
+     * along with the message body.
+     * <p>
+     * In SOAP 1.2 the <i>env:actor</i> attribute is replaced by the <i>env:role</i>
+     * attribute, but with essentially the same semantics.
+     *
+     * @param actor a <code>String</code> giving the URI of the <code>actor</code> / <code>role</code>
+     *        for which to search
+     * @return an <code>Iterator</code> object over all the
+     *         <code>SOAPHeaderElement</code> objects that contain the specified
+     *          <code>actor</code> / <code>role</code>
+     * @see #extractHeaderElements
+     * @see SOAPConstants#URI_SOAP_ACTOR_NEXT
+     */
+    public Iterator examineHeaderElements(String actor);
+
+    /**
+     * Returns an <code>Iterator</code> over all the <code>SOAPHeaderElement</code> objects
+     * in this <code>SOAPHeader</code> object
+     * that have the specified <i>actor</i> and detaches them
+     * from this <code>SOAPHeader</code> object.
+     * <P>
+     * This method allows an actor to process the parts of the
+     * <code>SOAPHeader</code> object that apply to it and to remove
+     * them before passing the message on to the next actor.
+     * <p>
+     * In SOAP 1.2 the <i>env:actor</i> attribute is replaced by the <i>env:role</i>
+     * attribute, but with essentially the same semantics.
+     *
+     * @param actor a <code>String</code> giving the URI of the <code>actor</code> / <code>role</code>
+     *        for which to search
+     * @return an <code>Iterator</code> object over all the
+     *         <code>SOAPHeaderElement</code> objects that contain the specified
+     *          <code>actor</code> / <code>role</code>
+     *
+     * @see #examineHeaderElements
+     * @see SOAPConstants#URI_SOAP_ACTOR_NEXT
+     */
+    public Iterator extractHeaderElements(String actor);
+
+    /**
+     * Creates a new NotUnderstood <code>SOAPHeaderElement</code> object initialized
+     * with the specified name and adds it to this <code>SOAPHeader</code> object.
+     * This operation is supported only by SOAP 1.2.
+     *
+     * @param name a <code>QName</code> object with the name of the
+     *        <code>SOAPHeaderElement</code> object that was not understood.
+     * @return the new <code>SOAPHeaderElement</code> object that was
+     *          inserted into this <code>SOAPHeader</code> object
+     * @exception SOAPException if a SOAP error occurs.
+     * @exception UnsupportedOperationException if this is a SOAP 1.1 Header.
+     * @since 1.6, SAAJ 1.3
+     */
+    public SOAPHeaderElement addNotUnderstoodHeaderElement(QName name)
+        throws SOAPException;
+
+    /**
+     * Creates a new Upgrade <code>SOAPHeaderElement</code> object initialized
+     * with the specified List of supported SOAP URIs and adds it to this
+     * <code>SOAPHeader</code> object.
+     * This operation is supported on both SOAP 1.1 and SOAP 1.2 header.
+     *
+     * @param supportedSOAPURIs an <code>Iterator</code> object with the URIs of SOAP
+     *          versions supported.
+     * @return the new <code>SOAPHeaderElement</code> object that was
+     *          inserted into this <code>SOAPHeader</code> object
+     * @exception SOAPException if a SOAP error occurs.
+     * @since 1.6, SAAJ 1.3
+     */
+    public SOAPHeaderElement addUpgradeHeaderElement(Iterator supportedSOAPURIs)
+        throws SOAPException;
+
+    /**
+     * Creates a new Upgrade <code>SOAPHeaderElement</code> object initialized
+     * with the specified array of supported SOAP URIs and adds it to this
+     * <code>SOAPHeader</code> object.
+     * This operation is supported on both SOAP 1.1 and SOAP 1.2 header.
+     *
+     * @param  supportedSoapUris an array of the URIs of SOAP versions supported.
+     * @return the new <code>SOAPHeaderElement</code> object that was
+     *          inserted into this <code>SOAPHeader</code> object
+     * @exception SOAPException if a SOAP error occurs.
+     * @since 1.6, SAAJ 1.3
+     */
+    public SOAPHeaderElement addUpgradeHeaderElement(String[] supportedSoapUris)
+        throws SOAPException;
+
+    /**
+     * Creates a new Upgrade <code>SOAPHeaderElement</code> object initialized
+     * with the specified supported SOAP URI and adds it to this
+     * <code>SOAPHeader</code> object.
+     * This operation is supported on both SOAP 1.1 and SOAP 1.2 header.
+     *
+     * @param supportedSoapUri the URI of SOAP the version that is supported.
+     * @return the new <code>SOAPHeaderElement</code> object that was
+     *          inserted into this <code>SOAPHeader</code> object
+     * @exception SOAPException if a SOAP error occurs.
+     * @since 1.6, SAAJ 1.3
+     */
+    public SOAPHeaderElement addUpgradeHeaderElement(String supportedSoapUri)
+        throws SOAPException;
+
+    /**
+     * Returns an <code>Iterator</code> over all the <code>SOAPHeaderElement</code> objects
+     * in this <code>SOAPHeader</code> object.
+     *
+     * @return an <code>Iterator</code> object over all the
+     *          <code>SOAPHeaderElement</code> objects contained by this
+     *          <code>SOAPHeader</code>
+     * @see #extractAllHeaderElements
+     *
+     * @since 1.6, SAAJ 1.2
+     */
+    public Iterator examineAllHeaderElements();
+
+    /**
+     * Returns an <code>Iterator</code> over all the <code>SOAPHeaderElement</code> objects
+     * in this <code>SOAPHeader</code> object and detaches them
+     * from this <code>SOAPHeader</code> object.
+     *
+     * @return an <code>Iterator</code> object over all the
+     *          <code>SOAPHeaderElement</code> objects contained by this
+     *          <code>SOAPHeader</code>
+     *
+     * @see #examineAllHeaderElements
+     *
+     * @since 1.6, SAAJ 1.2
+     */
+    public Iterator extractAllHeaderElements();
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPHeaderElement.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,168 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+/**
+ * An object representing the contents in the SOAP header part of the
+ * SOAP envelope.
+ * The immediate children of a <code>SOAPHeader</code> object can
+ * be represented only as <code>SOAPHeaderElement</code> objects.
+ * <P>
+ * A <code>SOAPHeaderElement</code> object can have other
+ * <code>SOAPElement</code> objects as its children.
+ *
+ * @since 1.6
+ */
+public interface SOAPHeaderElement extends SOAPElement {
+
+    /**
+     * Sets the actor associated with this <code>SOAPHeaderElement</code>
+     * object to the specified actor. The default value of an actor is:
+     *          <code>SOAPConstants.URI_SOAP_ACTOR_NEXT</code>
+     * <P>
+     * If this <code>SOAPHeaderElement</code> supports SOAP 1.2 then this call is
+     * equivalent to {@link #setRole(String)}
+     *
+     * @param  actorURI a <code>String</code> giving the URI of the actor
+     *           to set
+     *
+     * @exception IllegalArgumentException if there is a problem in
+     * setting the actor.
+     *
+     * @see #getActor
+     */
+    public void setActor(String actorURI);
+
+    /**
+     * Sets the <code>Role</code> associated with this <code>SOAPHeaderElement</code>
+     * object to the specified <code>Role</code>.
+     *
+     * @param uri - the URI of the <code>Role</code>
+     *
+     * @throws SOAPException if there is an error in setting the role
+     *
+     * @exception UnsupportedOperationException if this message does not
+     *      support the SOAP 1.2 concept of Fault Role.
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public void setRole(String uri) throws SOAPException;
+
+    /**
+     * Returns the uri of the <i>actor</i> attribute of this
+     * <code>SOAPHeaderElement</code>.
+     *<P>
+     * If this <code>SOAPHeaderElement</code> supports SOAP 1.2 then this call is
+     * equivalent to {@link #getRole()}
+     * @return  a <code>String</code> giving the URI of the actor
+     * @see #setActor
+     */
+    public String getActor();
+
+    /**
+     * Returns the value of the <i>Role</i> attribute of this
+     * <code>SOAPHeaderElement</code>.
+     *
+     * @return a <code>String</code> giving the URI of the <code>Role</code>
+     *
+     * @exception UnsupportedOperationException if this message does not
+     *      support the SOAP 1.2 concept of Fault Role.
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public String getRole();
+
+    /**
+     * Sets the mustUnderstand attribute for this <code>SOAPHeaderElement</code>
+     * object to be either true or false.
+     * <P>
+     * If the mustUnderstand attribute is on, the actor who receives the
+     * <code>SOAPHeaderElement</code> must process it correctly. This
+     * ensures, for example, that if the <code>SOAPHeaderElement</code>
+     * object modifies the message, that the message is being modified correctly.
+     *
+     * @param mustUnderstand <code>true</code> to set the mustUnderstand
+     *        attribute to true; <code>false</code> to set it to false
+     *
+     * @exception IllegalArgumentException if there is a problem in
+     * setting the mustUnderstand attribute
+     * @see #getMustUnderstand
+     * @see #setRelay
+     */
+    public void setMustUnderstand(boolean mustUnderstand);
+
+    /**
+     * Returns the boolean value of the mustUnderstand attribute for this
+     * <code>SOAPHeaderElement</code>.
+     *
+     * @return <code>true</code> if the mustUnderstand attribute of this
+     *        <code>SOAPHeaderElement</code> object is turned on; <code>false</code>
+     *         otherwise
+     */
+    public boolean getMustUnderstand();
+
+    /**
+     * Sets the <i>relay</i> attribute for this <code>SOAPHeaderElement</code> to be
+     * either true or false.
+     * <P>
+     * The SOAP relay attribute is set to true to indicate that the SOAP header
+     * block must be relayed by any node that is targeted by the header block
+     * but not actually process it. This attribute is ignored on header blocks
+     * whose mustUnderstand attribute is set to true or that are targeted at
+     * the ultimate reciever (which is the default). The default value of this
+     * attribute is <code>false</code>.
+     *
+     * @param relay the new value of the <i>relay</i> attribute
+     *
+     * @exception SOAPException if there is a problem in setting the
+     * relay attribute.
+     * @exception UnsupportedOperationException if this message does not
+     *      support the SOAP 1.2 concept of Relay attribute.
+     *
+     * @see #setMustUnderstand
+     * @see #getRelay
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public void setRelay(boolean relay) throws SOAPException;
+
+    /**
+     * Returns the boolean value of the <i>relay</i> attribute for this
+     * <code>SOAPHeaderElement</code>
+     *
+     * @return <code>true</code> if the relay attribute is turned on;
+     * <code>false</code> otherwise
+     *
+     * @exception UnsupportedOperationException if this message does not
+     *      support the SOAP 1.2 concept of Relay attribute.
+     *
+     * @see #getMustUnderstand
+     * @see #setRelay
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public boolean getRelay();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPMessage.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,457 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+import java.io.OutputStream;
+import java.io.IOException;
+
+import java.util.Iterator;
+
+import javax.activation.DataHandler;
+
+/**
+ * The root class for all SOAP messages. As transmitted on the "wire", a SOAP
+ * message is an XML document or a MIME message whose first body part is an
+ * XML/SOAP document.
+ * <P>
+ * A <code>SOAPMessage</code> object consists of a SOAP part and optionally
+ * one or more attachment parts. The SOAP part for a <code>SOAPMessage</code>
+ * object is a <code>SOAPPart</code> object, which contains information used
+ * for message routing and identification, and which can contain
+ * application-specific content. All data in the SOAP Part of a message must be
+ * in XML format.
+ * <P>
+ * A new <code>SOAPMessage</code> object contains the following by default:
+ * <UL>
+ *   <LI>A <code>SOAPPart</code> object
+ *   <LI>A <code>SOAPEnvelope</code> object
+ *   <LI>A <code>SOAPBody</code> object
+ *   <LI>A <code>SOAPHeader</code> object
+ * </UL>
+ * The SOAP part of a message can be retrieved by calling the method <code>SOAPMessage.getSOAPPart()</code>.
+ * The <code>SOAPEnvelope</code> object is retrieved from the <code>SOAPPart</code>
+ * object, and the <code>SOAPEnvelope</code> object is used to retrieve the
+ * <code>SOAPBody</code> and <code>SOAPHeader</code> objects.
+ *
+ * <PRE>
+ *     SOAPPart sp = message.getSOAPPart();
+ *     SOAPEnvelope se = sp.getEnvelope();
+ *     SOAPBody sb = se.getBody();
+ *     SOAPHeader sh = se.getHeader();
+ * </PRE>
+ *
+ * <P>
+ * In addition to the mandatory <code>SOAPPart</code> object, a <code>SOAPMessage</code>
+ * object may contain zero or more <code>AttachmentPart</code> objects, each
+ * of which contains application-specific data. The <code>SOAPMessage</code>
+ * interface provides methods for creating <code>AttachmentPart</code>
+ * objects and also for adding them to a <code>SOAPMessage</code> object. A
+ * party that has received a <code>SOAPMessage</code> object can examine its
+ * contents by retrieving individual attachment parts.
+ * <P>
+ * Unlike the rest of a SOAP message, an attachment is not required to be in
+ * XML format and can therefore be anything from simple text to an image file.
+ * Consequently, any message content that is not in XML format must be in an
+ * <code>AttachmentPart</code> object.
+ * <P>
+ * A <code>MessageFactory</code> object may create <code>SOAPMessage</code>
+ * objects with behavior that is specialized to a particular implementation or
+ * application of SAAJ. For instance, a <code>MessageFactory</code> object
+ * may produce <code>SOAPMessage</code> objects that conform to a particular
+ * Profile such as ebXML. In this case a <code>MessageFactory</code> object
+ * might produce <code>SOAPMessage</code> objects that are initialized with
+ * ebXML headers.
+ * <P>
+ * In order to ensure backward source compatibility, methods that are added to
+ * this class after version 1.1 of the SAAJ specification are all concrete
+ * instead of abstract and they all have default implementations. Unless
+ * otherwise noted in the JavaDocs for those methods the default
+ * implementations simply throw an <code>UnsupportedOperationException</code>
+ * and the SAAJ implementation code must override them with methods that
+ * provide the specified behavior. Legacy client code does not have this
+ * restriction, however, so long as there is no claim made that it conforms to
+ * some later version of the specification than it was originally written for.
+ * A legacy class that extends the SOAPMessage class can be compiled and/or run
+ * against succeeding versions of the SAAJ API without modification. If such a
+ * class was correctly implemented then it will continue to behave correctly
+ * relative to the version of the specification against which it was written.
+ *
+ * @see MessageFactory
+ * @see AttachmentPart
+ * @since 1.6
+ */
+public abstract class SOAPMessage {
+    /**
+         * Specifies the character type encoding for the SOAP Message. Valid values
+         * include "utf-8" and "utf-16". See vendor documentation for additional
+         * supported values. The default is "utf-8".
+         *
+         * @see SOAPMessage#setProperty(String, Object) SOAPMessage.setProperty
+         * @since 1.6, SAAJ 1.2
+         */
+    public static final String CHARACTER_SET_ENCODING =
+        "javax.xml.soap.character-set-encoding";
+
+    /**
+     * Specifies whether the SOAP Message will contain an XML declaration when
+     * it is sent. The only valid values are "true" and "false". The default is
+     * "false".
+     *
+     * @see SOAPMessage#setProperty(String, Object) SOAPMessage.setProperty
+     * @since 1.6, SAAJ 1.2
+     */
+    public static final String WRITE_XML_DECLARATION =
+        "javax.xml.soap.write-xml-declaration";
+
+    /**
+     * Sets the description of this <code>SOAPMessage</code> object's
+     * content with the given description.
+     *
+     * @param description a <code>String</code> describing the content of this
+     *         message
+     * @see #getContentDescription
+     */
+    public abstract void setContentDescription(String description);
+
+    /**
+     * Retrieves a description of this <code>SOAPMessage</code> object's
+     * content.
+     *
+     * @return a <code>String</code> describing the content of this
+     *         message or <code>null</code> if no description has been set
+     * @see #setContentDescription
+     */
+    public abstract String getContentDescription();
+
+    /**
+         * Gets the SOAP part of this <code>SOAPMessage</code> object.
+         * <P>
+         * <code>SOAPMessage</code> object contains one or more attachments, the
+         * SOAP Part must be the first MIME body part in the message.
+         *
+         * @return the <code>SOAPPart</code> object for this <code>SOAPMessage</code>
+         *         object
+         */
+    public abstract SOAPPart getSOAPPart();
+
+    /**
+         * Gets the SOAP Body contained in this <code>SOAPMessage</code> object.
+         * <p>
+         *
+         * @return the <code>SOAPBody</code> object contained by this <code>SOAPMessage</code>
+         *         object
+         * @exception SOAPException
+         *               if the SOAP Body does not exist or cannot be retrieved
+         * @since 1.6, SAAJ 1.2
+         */
+    public SOAPBody getSOAPBody() throws SOAPException {
+        throw new UnsupportedOperationException("getSOAPBody must be overridden by all subclasses of SOAPMessage");
+    }
+
+    /**
+         * Gets the SOAP Header contained in this <code>SOAPMessage</code>
+         * object.
+         * <p>
+         *
+         * @return the <code>SOAPHeader</code> object contained by this <code>SOAPMessage</code>
+         *         object
+         * @exception SOAPException
+         *               if the SOAP Header does not exist or cannot be retrieved
+         * @since 1.6, SAAJ 1.2
+         */
+    public SOAPHeader getSOAPHeader() throws SOAPException {
+        throw new UnsupportedOperationException("getSOAPHeader must be overridden by all subclasses of SOAPMessage");
+    }
+
+    /**
+         * Removes all <code>AttachmentPart</code> objects that have been added
+         * to this <code>SOAPMessage</code> object.
+         * <P>
+         * This method does not touch the SOAP part.
+         */
+    public abstract void removeAllAttachments();
+
+    /**
+         * Gets a count of the number of attachments in this message. This count
+         * does not include the SOAP part.
+         *
+         * @return the number of <code>AttachmentPart</code> objects that are
+         *         part of this <code>SOAPMessage</code> object
+         */
+    public abstract int countAttachments();
+
+    /**
+         * Retrieves all the <code>AttachmentPart</code> objects that are part of
+         * this <code>SOAPMessage</code> object.
+         *
+         * @return an iterator over all the attachments in this message
+         */
+    public abstract Iterator getAttachments();
+
+    /**
+         * Retrieves all the <code>AttachmentPart</code> objects that have header
+         * entries that match the specified headers. Note that a returned
+         * attachment could have headers in addition to those specified.
+         *
+         * @param headers
+         *           a <code>MimeHeaders</code> object containing the MIME
+         *           headers for which to search
+         * @return an iterator over all attachments that have a header that matches
+         *         one of the given headers
+         */
+    public abstract Iterator getAttachments(MimeHeaders headers);
+
+    /**
+     * Removes all the <code>AttachmentPart</code> objects that have header
+     * entries that match the specified headers. Note that the removed
+     * attachment could have headers in addition to those specified.
+     *
+     * @param headers
+     *           a <code>MimeHeaders</code> object containing the MIME
+     *           headers for which to search
+     * @since 1.6, SAAJ 1.3
+     */
+    public abstract void removeAttachments(MimeHeaders headers);
+
+
+    /**
+     * Returns an <code>AttachmentPart</code> object that is associated with an
+     * attachment that is referenced by this <code>SOAPElement</code> or
+     * <code>null</code> if no such attachment exists. References can be made
+     * via an <code>href</code> attribute as described in
+     * {@link <a href="http://www.w3.org/TR/SOAP-attachments#SOAPReferenceToAttachements">SOAP Messages with Attachments</a>},
+     * or via a single <code>Text</code> child node containing a URI as
+     * described in the WS-I Attachments Profile 1.0 for elements of schema
+     * type {@link <a href="http://www.ws-i.org/Profiles/AttachmentsProfile-1.0-2004-08-24.html">ref:swaRef</a>}.  These two mechanisms must be supported.
+     * The support for references via <code>href</code> attribute also implies that
+     * this method should also be supported on an element that is an
+     * <i>xop:Include</i> element (
+     * {@link <a  href="http://www.w3.org/2000/xp/Group/3/06/Attachments/XOP.html">XOP</a>}).
+     * other reference mechanisms may be supported by individual
+     * implementations of this standard. Contact your vendor for details.
+     *
+     * @param  element The <code>SOAPElement</code> containing the reference to an Attachment
+     * @return the referenced <code>AttachmentPart</code> or null if no such
+     *          <code>AttachmentPart</code> exists or no reference can be
+     *          found in this <code>SOAPElement</code>.
+     * @throws SOAPException if there is an error in the attempt to access the
+     *          attachment
+     *
+     * @since 1.6, SAAJ 1.3
+     */
+    public abstract AttachmentPart getAttachment(SOAPElement element) throws SOAPException;
+
+
+    /**
+     * Adds the given <code>AttachmentPart</code> object to this <code>SOAPMessage</code>
+     * object. An <code>AttachmentPart</code> object must be created before
+     * it can be added to a message.
+     *
+     * @param AttachmentPart
+     *           an <code>AttachmentPart</code> object that is to become part
+     *           of this <code>SOAPMessage</code> object
+     * @exception IllegalArgumentException
+     */
+    public abstract void addAttachmentPart(AttachmentPart AttachmentPart);
+
+    /**
+     * Creates a new empty <code>AttachmentPart</code> object. Note that the
+     * method <code>addAttachmentPart</code> must be called with this new
+     * <code>AttachmentPart</code> object as the parameter in order for it to
+     * become an attachment to this <code>SOAPMessage</code> object.
+     *
+     * @return a new <code>AttachmentPart</code> object that can be populated
+     *         and added to this <code>SOAPMessage</code> object
+     */
+    public abstract AttachmentPart createAttachmentPart();
+
+    /**
+     * Creates an <code>AttachmentPart</code> object and populates it using
+     * the given <code>DataHandler</code> object.
+     *
+     * @param dataHandler
+     *           the <code>javax.activation.DataHandler</code> object that
+     *           will generate the content for this <code>SOAPMessage</code>
+     *           object
+     * @return a new <code>AttachmentPart</code> object that contains data
+     *         generated by the given <code>DataHandler</code> object
+     * @exception IllegalArgumentException
+     *               if there was a problem with the specified <code>DataHandler</code>
+     *               object
+     * @see javax.activation.DataHandler
+     * @see javax.activation.DataContentHandler
+     */
+    public AttachmentPart createAttachmentPart(DataHandler dataHandler) {
+        AttachmentPart attachment = createAttachmentPart();
+        attachment.setDataHandler(dataHandler);
+        return attachment;
+    }
+
+    /**
+     * Returns all the transport-specific MIME headers for this <code>SOAPMessage</code>
+     * object in a transport-independent fashion.
+     *
+     * @return a <code>MimeHeaders</code> object containing the <code>MimeHeader</code>
+     *         objects
+     */
+    public abstract MimeHeaders getMimeHeaders();
+
+    /**
+     * Creates an <code>AttachmentPart</code> object and populates it with
+     * the specified data of the specified content type. The type of the
+     * <code>Object</code> should correspond to the value given for the
+     * <code>Content-Type</code>.
+     *
+     * @param content
+     *           an <code>Object</code> containing the content for the
+     *           <code>AttachmentPart</code> object to be created
+     * @param contentType
+     *           a <code>String</code> object giving the type of content;
+     *           examples are "text/xml", "text/plain", and "image/jpeg"
+     * @return a new <code>AttachmentPart</code> object that contains the
+     *         given data
+     * @exception IllegalArgumentException
+     *               may be thrown if the contentType does not match the type
+     *               of the content object, or if there was no
+     *               <code>DataContentHandler</code> object for the given
+     *               content object
+     * @see javax.activation.DataHandler
+     * @see javax.activation.DataContentHandler
+     */
+    public AttachmentPart createAttachmentPart(
+        Object content,
+        String contentType) {
+        AttachmentPart attachment = createAttachmentPart();
+        attachment.setContent(content, contentType);
+        return attachment;
+    }
+
+    /**
+     * Updates this <code>SOAPMessage</code> object with all the changes that
+     * have been made to it. This method is called automatically when
+     * {@link SOAPMessage#writeTo(OutputStream)} is  called. However, if
+     * changes are made to a message that was received or to one that has
+     * already been sent, the method <code>saveChanges</code> needs to be
+     * called explicitly in order to save the changes. The method <code>saveChanges</code>
+     * also generates any changes that can be read back (for example, a
+     * MessageId in profiles that support a message id). All MIME headers in a
+     * message that is created for sending purposes are guaranteed to have
+     * valid values only after <code>saveChanges</code> has been called.
+     * <P>
+     * In addition, this method marks the point at which the data from all
+     * constituent <code>AttachmentPart</code> objects are pulled into the
+     * message.
+     * <P>
+     *
+     * @exception <code>SOAPException</code> if there was a problem saving
+     *               changes to this message.
+     */
+    public abstract void saveChanges() throws SOAPException;
+
+    /**
+     * Indicates whether this <code>SOAPMessage</code> object needs to have
+     * the method <code>saveChanges</code> called on it.
+     *
+     * @return <code>true</code> if <code>saveChanges</code> needs to be
+     *         called; <code>false</code> otherwise.
+     */
+    public abstract boolean saveRequired();
+
+    /**
+     * Writes this <code>SOAPMessage</code> object to the given output
+     * stream. The externalization format is as defined by the SOAP 1.1 with
+     * Attachments specification.
+     * <P>
+     * If there are no attachments, just an XML stream is written out. For
+     * those messages that have attachments, <code>writeTo</code> writes a
+     * MIME-encoded byte stream.
+     * <P>
+     * Note that this method does not write the transport-specific MIME Headers
+     * of the Message
+     *
+     * @param out
+     *           the <code>OutputStream</code> object to which this <code>SOAPMessage</code>
+     *           object will be written
+     * @exception IOException
+     *               if an I/O error occurs
+     * @exception SOAPException
+     *               if there was a problem in externalizing this SOAP message
+     */
+    public abstract void writeTo(OutputStream out)
+        throws SOAPException, IOException;
+
+    /**
+     * Associates the specified value with the specified property. If there was
+     * already a value associated with this property, the old value is
+     * replaced.
+     * <p>
+     * The valid property names include
+     * {@link SOAPMessage#WRITE_XML_DECLARATION}  and
+     * {@link SOAPMessage#CHARACTER_SET_ENCODING}. All of these standard SAAJ
+     * properties are prefixed by "javax.xml.soap". Vendors may also add
+     * implementation specific properties. These properties must be prefixed
+     * with package names that are unique to the vendor.
+     * <p>
+     * Setting the property <code>WRITE_XML_DECLARATION</code> to <code>"true"</code>
+     * will cause an XML Declaration to be written out at the start of the SOAP
+     * message. The default value of "false" suppresses this declaration.
+     * <p>
+     * The property <code>CHARACTER_SET_ENCODING</code> defaults to the value
+     * <code>"utf-8"</code> which causes the SOAP message to be encoded using
+     * UTF-8. Setting <code>CHARACTER_SET_ENCODING</code> to <code>"utf-16"</code>
+     * causes the SOAP message to be encoded using UTF-16.
+     * <p>
+     * Some implementations may allow encodings in addition to UTF-8 and
+     * UTF-16. Refer to your vendor's documentation for details.
+     *
+     * @param property
+     *           the property with which the specified value is to be
+     *           associated.
+     * @param value
+     *           the value to be associated with the specified property
+     * @exception SOAPException
+     *               if the property name is not recognized.
+     * @since 1.6, SAAJ 1.2
+     */
+    public void setProperty(String property, Object value)
+        throws SOAPException {
+            throw new UnsupportedOperationException("setProperty must be overridden by all subclasses of SOAPMessage");
+    }
+
+    /**
+     * Retrieves value of the specified property.
+     *
+     * @param property
+     *           the name of the property to retrieve
+     * @return the value associated with the named property or <code>null</code>
+     *         if no such property exists.
+     * @exception SOAPException
+     *               if the property name is not recognized.
+     * @since 1.6, SAAJ 1.2
+     */
+    public Object getProperty(String property) throws SOAPException {
+        throw new UnsupportedOperationException("getProperty must be overridden by all subclasses of SOAPMessage");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPPart.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,267 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+import java.util.Iterator;
+
+import javax.xml.transform.Source;
+
+/**
+ * The container for the SOAP-specific portion of a <code>SOAPMessage</code>
+ * object. All messages are required to have a SOAP part, so when a
+ * <code>SOAPMessage</code> object is created, it will automatically
+ * have a <code>SOAPPart</code> object.
+ *<P>
+ * A <code>SOAPPart</code> object is a MIME part and has the MIME headers
+ * Content-Id, Content-Location, and Content-Type.  Because the value of
+ * Content-Type must be "text/xml", a <code>SOAPPart</code> object automatically
+ * has a MIME header of Content-Type with its value set to "text/xml".
+ * The value must be "text/xml" because content in the SOAP part of a
+ * message must be in XML format.  Content that is not of type "text/xml"
+ * must be in an <code>AttachmentPart</code> object rather than in the
+ * <code>SOAPPart</code> object.
+ * <P>
+ * When a message is sent, its SOAP part must have the MIME header Content-Type
+ * set to "text/xml". Or, from the other perspective, the SOAP part of any
+ * message that is received must have the MIME header Content-Type with a
+ * value of "text/xml".
+ * <P>
+ * A client can access the <code>SOAPPart</code> object of a
+ * <code>SOAPMessage</code> object by
+ * calling the method <code>SOAPMessage.getSOAPPart</code>. The
+ * following  line of code, in which <code>message</code> is a
+ * <code>SOAPMessage</code> object, retrieves the SOAP part of a message.
+ * <PRE>
+ *   SOAPPart soapPart = message.getSOAPPart();
+ * </PRE>
+ * <P>
+ * A <code>SOAPPart</code> object contains a <code>SOAPEnvelope</code> object,
+ * which in turn contains a <code>SOAPBody</code> object and a
+ * <code>SOAPHeader</code> object.
+ * The <code>SOAPPart</code> method <code>getEnvelope</code> can be used
+ * to retrieve the <code>SOAPEnvelope</code> object.
+ * <P>
+ *
+ * @since 1.6
+ */
+public abstract class SOAPPart implements org.w3c.dom.Document, Node {
+
+    /**
+     * Gets the <code>SOAPEnvelope</code> object associated with this
+     * <code>SOAPPart</code> object. Once the SOAP envelope is obtained, it
+     * can be used to get its contents.
+     *
+     * @return the <code>SOAPEnvelope</code> object for this
+     *           <code>SOAPPart</code> object
+     * @exception SOAPException if there is a SOAP error
+     */
+    public abstract SOAPEnvelope getEnvelope() throws SOAPException;
+
+    /**
+     * Retrieves the value of the MIME header whose name is "Content-Id".
+     *
+     * @return a <code>String</code> giving the value of the MIME header
+     *         named "Content-Id"
+     * @see #setContentId
+     */
+    public String getContentId() {
+        String[] values = getMimeHeader("Content-Id");
+        if (values != null && values.length > 0)
+            return values[0];
+        return null;
+    }
+
+    /**
+     * Retrieves the value of the MIME header whose name is "Content-Location".
+     *
+     * @return a <code>String</code> giving the value of the MIME header whose
+     *          name is "Content-Location"
+     * @see #setContentLocation
+     */
+    public String getContentLocation() {
+        String[] values = getMimeHeader("Content-Location");
+        if (values != null && values.length > 0)
+            return values[0];
+        return null;
+    }
+
+    /**
+     * Sets the value of the MIME header named "Content-Id"
+     * to the given <code>String</code>.
+     *
+     * @param contentId a <code>String</code> giving the value of the MIME
+     *        header "Content-Id"
+     *
+     * @exception IllegalArgumentException if there is a problem in
+     * setting the content id
+     * @see #getContentId
+     */
+    public void setContentId(String contentId)
+    {
+        setMimeHeader("Content-Id", contentId);
+    }
+    /**
+     * Sets the value of the MIME header "Content-Location"
+     * to the given <code>String</code>.
+     *
+     * @param contentLocation a <code>String</code> giving the value
+     *        of the MIME
+     *        header "Content-Location"
+     * @exception IllegalArgumentException if there is a problem in
+     *            setting the content location.
+     * @see #getContentLocation
+     */
+    public void setContentLocation(String contentLocation)
+    {
+        setMimeHeader("Content-Location", contentLocation);
+    }
+    /**
+     * Removes all MIME headers that match the given name.
+     *
+     * @param header a <code>String</code> giving the name of the MIME header(s) to
+     *               be removed
+     */
+    public abstract void removeMimeHeader(String header);
+
+    /**
+     * Removes all the <code>MimeHeader</code> objects for this
+     * <code>SOAPEnvelope</code> object.
+     */
+    public abstract void removeAllMimeHeaders();
+
+    /**
+     * Gets all the values of the <code>MimeHeader</code> object
+     * in this <code>SOAPPart</code> object that
+     * is identified by the given <code>String</code>.
+     *
+     * @param name the name of the header; example: "Content-Type"
+     * @return a <code>String</code> array giving all the values for the
+     *         specified header
+     * @see #setMimeHeader
+     */
+    public abstract String[] getMimeHeader(String name);
+
+    /**
+     * Changes the first header entry that matches the given header name
+     * so that its value is the given value, adding a new header with the
+     * given name and value if no
+     * existing header is a match. If there is a match, this method clears
+     * all existing values for the first header that matches and sets the
+     * given value instead. If more than one header has
+     * the given name, this method removes all of the matching headers after
+     * the first one.
+     * <P>
+     * Note that RFC822 headers can contain only US-ASCII characters.
+     *
+     * @param   name    a <code>String</code> giving the header name
+     *                  for which to search
+     * @param   value   a <code>String</code> giving the value to be set.
+     *                  This value will be substituted for the current value(s)
+     *                  of the first header that is a match if there is one.
+     *                  If there is no match, this value will be the value for
+     *                  a new <code>MimeHeader</code> object.
+     *
+     * @exception IllegalArgumentException if there was a problem with
+     *            the specified mime header name or value
+     * @see #getMimeHeader
+     */
+    public abstract void setMimeHeader(String name, String value);
+
+    /**
+     * Creates a <code>MimeHeader</code> object with the specified
+     * name and value and adds it to this <code>SOAPPart</code> object.
+     * If a <code>MimeHeader</code> with the specified name already
+     * exists, this method adds the specified value to the already
+     * existing value(s).
+     * <P>
+     * Note that RFC822 headers can contain only US-ASCII characters.
+     *
+     * @param   name    a <code>String</code> giving the header name
+     * @param   value   a <code>String</code> giving the value to be set
+     *                  or added
+     * @exception IllegalArgumentException if there was a problem with
+     *            the specified mime header name or value
+     */
+    public abstract void addMimeHeader(String name, String value);
+
+    /**
+     * Retrieves all the headers for this <code>SOAPPart</code> object
+     * as an iterator over the <code>MimeHeader</code> objects.
+     *
+     * @return  an <code>Iterator</code> object with all of the Mime
+     *          headers for this <code>SOAPPart</code> object
+     */
+    public abstract Iterator getAllMimeHeaders();
+
+    /**
+     * Retrieves all <code>MimeHeader</code> objects that match a name in
+     * the given array.
+     *
+     * @param names a <code>String</code> array with the name(s) of the
+     *        MIME headers to be returned
+     * @return  all of the MIME headers that match one of the names in the
+     *           given array, returned as an <code>Iterator</code> object
+     */
+    public abstract Iterator getMatchingMimeHeaders(String[] names);
+
+    /**
+     * Retrieves all <code>MimeHeader</code> objects whose name does
+     * not match a name in the given array.
+     *
+     * @param names a <code>String</code> array with the name(s) of the
+     *        MIME headers not to be returned
+     * @return  all of the MIME headers in this <code>SOAPPart</code> object
+     *          except those that match one of the names in the
+     *           given array.  The nonmatching MIME headers are returned as an
+     *           <code>Iterator</code> object.
+     */
+    public abstract Iterator getNonMatchingMimeHeaders(String[] names);
+
+    /**
+     * Sets the content of the <code>SOAPEnvelope</code> object with the data
+     * from the given <code>Source</code> object. This <code>Source</code>
+     * must contain a valid SOAP document.
+     *
+     * @param source the <code>javax.xml.transform.Source</code> object with the
+     *        data to be set
+     *
+     * @exception SOAPException if there is a problem in setting the source
+     * @see #getContent
+     */
+    public abstract void setContent(Source source) throws SOAPException;
+
+    /**
+     * Returns the content of the SOAPEnvelope as a JAXP <code>Source</code>
+     * object.
+     *
+     * @return the content as a <code>javax.xml.transform.Source</code> object
+     *
+     * @exception SOAPException if the implementation cannot convert
+     *                          the specified <code>Source</code> object
+     * @see #setContent
+     */
+    public abstract Source getContent() throws SOAPException;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/Text.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.xml.soap;
+
+/**
+ * A representation of a node whose value is text.  A <code>Text</code> object
+ * may represent text that is content or text that is a comment.
+ *
+ * @since 1.6
+ */
+public interface Text extends Node, org.w3c.dom.Text {
+
+    /**
+     * Retrieves whether this <code>Text</code> object represents a comment.
+     *
+     * @return <code>true</code> if this <code>Text</code> object is a
+     *         comment; <code>false</code> otherwise
+     */
+    public boolean isComment();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/package.html	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,92 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<!--
+ Copyright (c) 1993, 2012, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.  Oracle designates this
+ particular file as subject to the "Classpath" exception as provided
+ by Oracle in the LICENSE file that accompanied this code.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
+<html>
+<head>
+   
+  <title></title>
+
+</head>
+   <body bgcolor="white">
+    Provides the API for creating and building SOAP messages. This package
+ is defined in the <i>SOAP with Attachments API for Java<sup><font
+ size="-2">TM</font></sup> (SAAJ) 1.3</i> specification.
+<p> The API in the <code>javax.xml.soap</code> package allows you to do the
+ following: </p>
+
+<ul>
+     <li>create a point-to-point connection to a specified endpoint   </li>
+    <li>create a SOAP message   </li>
+    <li>create an XML fragment   </li>
+    <li>add content to the header of a SOAP message   </li>
+    <li>add content to the body of a SOAP message   </li>
+    <li>create attachment parts and add content to them   </li>
+    <li>access/add/modify parts of a SOAP message   </li>
+    <li>create/add/modify SOAP fault information   </li>
+    <li>extract content from a SOAP message   </li>
+    <li>send a SOAP request-response message   </li>
+
+</ul>
+
+<p>   <!-- <h2>Package Specification</h2> -->  <!-- The SAAJ 1.1 specification gives an overview of the  -->
+ <!-- <code>javax.xml.soap</code> package and --> <!-- explains how its classes and interfaces work. -->
+ <!-- <ul> --> <!--   <li><a href="http://java.sun.com/xml/downloads/jaxm.html"> -->
+ <!-- 	SAAJ 1.1 Specification</a> --> <!-- </ul> -->  <!-- <h2>Related Documentation</h2> -->
+ <!-- 	For overviews, tutorials, examples, guides, and tool documentation, please see: -->
+ <!-- 	<ul> --> <!-- 	  <li><a href="../../../../tutorial/doc/JAXM.html">JAXM Tutorial</a> -->
+ <!-- 	  <li><a href="../../../../jaxm/index.html">JAXM Reference Implementation (RI) -->
+ <!-- 			  Documentation</a> --> <!-- 	</ul> -->  </p>
+In addition the APIs in the <code>javax.xml.soap</code> package extend
+their  counterparts in the <code>org.w3c.dom</code> package. This means that
+the  <code>SOAPPart</code> of a <code>SOAPMessage</code> is also a DOM Level
+2 <code>Document</code>, and can be manipulated as such by applications,
+tools and libraries that use DOM (see http://www.w3.org/DOM/ for more information).
+It is important to note that, while it is possible to use DOM APIs to add
+ordinary DOM nodes to a SAAJ tree, the SAAJ APIs are still required to return
+SAAJ types when examining or manipulating the tree. In order to accomplish
+this the SAAJ APIs (specifically {@link javax.xml.soap.SOAPElement#getChildElements()})
+are allowed to silently replace objects that are incorrectly typed relative
+to SAAJ requirements with equivalent objects of the required type. These
+replacements must never cause the logical structure of the tree to change,
+so from the perspective of the DOM APIs the tree will remain unchanged. However,
+the physical composition of the tree will have changed so that references
+to the nodes that were replaced will refer to nodes that are no longer a
+part of the tree. The SAAJ APIs are not allowed to make these replacements
+if they are not required so the replacement objects will never subsequently
+be silently replaced by future calls to the SAAJ API.
+<p>
+What this means in
+practical terms is that an application that starts to use SAAJ APIs on a
+tree after manipulating it using DOM APIs must assume that the tree has been
+translated into an all SAAJ tree and that any references to objects within
+the tree that were obtained using DOM APIs are no longer valid. Switching
+from SAAJ APIs to DOM APIs is not allowed to cause invalid references and
+neither is using SAAJ APIs exclusively. It is only switching from using DOM
+APIs on a particular SAAJ tree to using SAAJ APIs that causes the risk of
+invalid references.<br>
+
+</body>
+</html>
--- a/jdk/.hgtags	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/.hgtags	Mon Jan 19 11:35:45 2015 +0000
@@ -287,3 +287,4 @@
 6b2314173433467245261364a52fb8e347fe6342 jdk9-b42
 8c6ad41974f9ab6c33d544b088648314963f2a50 jdk9-b43
 8cc4dc300041eb70a7a40e4b2431a8f4d4965ea4 jdk9-b44
+9acaa4f57b0b9e3757a7b4576ca9418a75ea8287 jdk9-b45
--- a/jdk/make/lib/LibCommon.gmk	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/make/lib/LibCommon.gmk	Mon Jan 19 11:35:45 2015 +0000
@@ -53,24 +53,21 @@
 # Find the default set of src dirs for a native library.
 # Param 1 - module name
 # Param 2 - library name
-define FindSrcDirsForLib 
+FindSrcDirsForLib = \
   $(call uniq, $(wildcard \
       $(JDK_TOPDIR)/src/$(strip $1)/$(OPENJDK_TARGET_OS)/native/lib$(strip $2) \
       $(JDK_TOPDIR)/src/$(strip $1)/$(OPENJDK_TARGET_OS_TYPE)/native/lib$(strip $2) \
       $(JDK_TOPDIR)/src/$(strip $1)/share/native/lib$(strip $2)))
-endef
 
 ################################################################################
 # Find lib dir for module
 # Param 1 - module name
 ifeq ($(OPENJDK_TARGET_OS_TYPE), unix)
-  define FindLibDirForModule
-    $(SUPPORT_OUTPUTDIR)/modules_libs/$(strip $1)$(OPENJDK_TARGET_CPU_LIBDIR)
-  endef
+  FindLibDirForModule = \
+      $(SUPPORT_OUTPUTDIR)/modules_libs/$(strip $1)$(OPENJDK_TARGET_CPU_LIBDIR)
 else
-  define FindLibDirForModule
-    $(SUPPORT_OUTPUTDIR)/modules_libs/$(strip $1)
-  endef
+  FindLibDirForModule = \
+      $(SUPPORT_OUTPUTDIR)/modules_libs/$(strip $1)
 endif
 
 ################################################################################
@@ -78,11 +75,10 @@
 # Param 1 - module name
 # Param 2 - library name
 # Param 3 - subdir for library
-define FindLib
-$(strip \
-  $(call FindLibDirForModule, $(strip $1))$(strip $3)/$(LIBRARY_PREFIX)$(strip $2)$(SHARED_LIBRARY_SUFFIX) \
-)
-endef
+FindLib = \
+    $(call FindLibDirForModule, \
+        $(strip $1))$(strip $3)/$(LIBRARY_PREFIX)$(strip $2)$(SHARED_LIBRARY_SUFFIX)
+
 
 ################################################################################
 # Define the header include flags needed to compile against it.
--- a/jdk/make/src/classes/build/tools/module/boot.modules	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/make/src/classes/build/tools/module/boot.modules	Mon Jan 19 11:35:45 2015 +0000
@@ -17,10 +17,10 @@
 java.smartcardio
 java.sql
 java.sql.rowset
+java.transaction
 java.xml
 java.xml.bind
 java.xml.crypto
-java.xml.soap
 java.xml.ws
 jdk.charsets
 jdk.deploy
--- a/jdk/src/java.base/share/classes/java/io/FilterOutputStream.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/src/java.base/share/classes/java/io/FilterOutputStream.java	Mon Jan 19 11:35:45 2015 +0000
@@ -48,6 +48,8 @@
      */
     protected OutputStream out;
 
+    private boolean closed;
+
     /**
      * Creates an output stream filter built on top of the specified
      * underlying output stream.
@@ -144,9 +146,9 @@
      * Closes this output stream and releases any system resources
      * associated with the stream.
      * <p>
-     * The <code>close</code> method of <code>FilterOutputStream</code>
-     * calls its <code>flush</code> method, and then calls the
-     * <code>close</code> method of its underlying output stream.
+     * When not already closed, the {@code close} method of {@code
+     * FilterOutputStream} calls its {@code flush} method, and then
+     * calls the {@code close} method of its underlying output stream.
      *
      * @exception  IOException  if an I/O error occurs.
      * @see        java.io.FilterOutputStream#flush()
@@ -154,6 +156,9 @@
      */
     @SuppressWarnings("try")
     public void close() throws IOException {
+        if (closed)
+            return;
+        closed = true;
         try (OutputStream ostream = out) {
             flush();
         }
--- a/jdk/src/java.base/share/classes/java/lang/Deprecated.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/src/java.base/share/classes/java/lang/Deprecated.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -34,9 +34,13 @@
  * or because a better alternative exists.  Compilers warn when a
  * deprecated program element is used or overridden in non-deprecated code.
  *
+ * <p>Use of the &#64;Deprecated annotation on a local variable
+ * declaration or on a parameter declaration or a package declaration
+ * has no effect.
+ *
  * @author  Neal Gafter
  * @since 1.5
- * @jls 9.6.3.6 @Deprecated
+ * @jls 9.6.4.6 @Deprecated
  */
 @Documented
 @Retention(RetentionPolicy.RUNTIME)
--- a/jdk/src/java.base/share/classes/java/math/BigInteger.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/src/java.base/share/classes/java/math/BigInteger.java	Mon Jan 19 11:35:45 2015 +0000
@@ -265,24 +265,41 @@
     // Constructors
 
     /**
-     * Translates a byte array containing the two's-complement binary
-     * representation of a BigInteger into a BigInteger.  The input array is
+     * Translates a byte sub-array containing the two's-complement binary
+     * representation of a BigInteger into a BigInteger.  The sub-array is
+     * specified via an offset into the array and a length.  The sub-array is
      * assumed to be in <i>big-endian</i> byte-order: the most significant
-     * byte is in the zeroth element.
+     * byte is the element at index {@code off}.  The {@code val} array is
+     * assumed to be unchanged for the duration of the constructor call.
      *
-     * @param  val big-endian two's-complement binary representation of
-     *         BigInteger.
+     * An {@code IndexOutOfBoundsException} is thrown if the length of the array
+     * {@code val} is non-zero and either {@code off} is negative, {@code len}
+     * is negative, or {@code off+len} is greater than the length of
+     * {@code val}.
+     *
+     * @param  val byte array containing a sub-array which is the big-endian
+     *         two's-complement binary representation of a BigInteger.
+     * @param  off the start offset of the binary representation.
+     * @param  len the number of bytes to use.
      * @throws NumberFormatException {@code val} is zero bytes long.
+     * @throws IndexOutOfBoundsException if the provided array offset and
+     *         length would cause an index into the byte array to be
+     *         negative or greater than or equal to the array length.
+     * @since 1.9
      */
-    public BigInteger(byte[] val) {
-        if (val.length == 0)
+    public BigInteger(byte[] val, int off, int len) {
+        if (val.length == 0) {
             throw new NumberFormatException("Zero length BigInteger");
-
-        if (val[0] < 0) {
-            mag = makePositive(val);
+        } else if ((off < 0) || (off >= val.length) || (len < 0) ||
+                   (len > val.length - off)) { // 0 <= off < val.length
+            throw new IndexOutOfBoundsException();
+        }
+
+        if (val[off] < 0) {
+            mag = makePositive(val, off, len);
             signum = -1;
         } else {
-            mag = stripLeadingZeroBytes(val);
+            mag = stripLeadingZeroBytes(val, off, len);
             signum = (mag.length == 0 ? 0 : 1);
         }
         if (mag.length >= MAX_MAG_LENGTH) {
@@ -291,10 +308,27 @@
     }
 
     /**
+     * Translates a byte array containing the two's-complement binary
+     * representation of a BigInteger into a BigInteger.  The input array is
+     * assumed to be in <i>big-endian</i> byte-order: the most significant
+     * byte is in the zeroth element.  The {@code val} array is assumed to be
+     * unchanged for the duration of the constructor call.
+     *
+     * @param  val big-endian two's-complement binary representation of a
+     *         BigInteger.
+     * @throws NumberFormatException {@code val} is zero bytes long.
+     */
+    public BigInteger(byte[] val) {
+        this(val, 0, val.length);
+    }
+
+    /**
      * This private constructor translates an int array containing the
      * two's-complement binary representation of a BigInteger into a
      * BigInteger. The input array is assumed to be in <i>big-endian</i>
-     * int-order: the most significant int is in the zeroth element.
+     * int-order: the most significant int is in the zeroth element.  The
+     * {@code val} array is assumed to be unchanged for the duration of
+     * the constructor call.
      */
     private BigInteger(int[] val) {
         if (val.length == 0)
@@ -315,24 +349,44 @@
     /**
      * Translates the sign-magnitude representation of a BigInteger into a
      * BigInteger.  The sign is represented as an integer signum value: -1 for
-     * negative, 0 for zero, or 1 for positive.  The magnitude is a byte array
-     * in <i>big-endian</i> byte-order: the most significant byte is in the
-     * zeroth element.  A zero-length magnitude array is permissible, and will
-     * result in a BigInteger value of 0, whether signum is -1, 0 or 1.
+     * negative, 0 for zero, or 1 for positive.  The magnitude is a sub-array of
+     * a byte array in <i>big-endian</i> byte-order: the most significant byte
+     * is the element at index {@code off}.  A zero value of the length
+     * {@code len} is permissible, and will result in a BigInteger value of 0,
+     * whether signum is -1, 0 or 1.  The {@code magnitude} array is assumed to
+     * be unchanged for the duration of the constructor call.
+     *
+     * An {@code IndexOutOfBoundsException} is thrown if the length of the array
+     * {@code magnitude} is non-zero and either {@code off} is negative,
+     * {@code len} is negative, or {@code off+len} is greater than the length of
+     * {@code magnitude}.
      *
      * @param  signum signum of the number (-1 for negative, 0 for zero, 1
      *         for positive).
      * @param  magnitude big-endian binary representation of the magnitude of
      *         the number.
+     * @param  off the start offset of the binary representation.
+     * @param  len the number of bytes to use.
      * @throws NumberFormatException {@code signum} is not one of the three
      *         legal values (-1, 0, and 1), or {@code signum} is 0 and
      *         {@code magnitude} contains one or more non-zero bytes.
+     * @throws IndexOutOfBoundsException if the provided array offset and
+     *         length would cause an index into the byte array to be
+     *         negative or greater than or equal to the array length.
+     * @since 1.9
      */
-    public BigInteger(int signum, byte[] magnitude) {
-        this.mag = stripLeadingZeroBytes(magnitude);
-
-        if (signum < -1 || signum > 1)
+    public BigInteger(int signum, byte[] magnitude, int off, int len) {
+        if (signum < -1 || signum > 1) {
             throw(new NumberFormatException("Invalid signum value"));
+        } else if ((off < 0) || (len < 0) ||
+            (len > 0 &&
+                ((off >= magnitude.length) ||
+                 (len > magnitude.length - off)))) { // 0 <= off < magnitude.length
+            throw new IndexOutOfBoundsException();
+        }
+
+        // stripLeadingZeroBytes() returns a zero length array if len == 0
+        this.mag = stripLeadingZeroBytes(magnitude, off, len);
 
         if (this.mag.length == 0) {
             this.signum = 0;
@@ -347,10 +401,33 @@
     }
 
     /**
+     * Translates the sign-magnitude representation of a BigInteger into a
+     * BigInteger.  The sign is represented as an integer signum value: -1 for
+     * negative, 0 for zero, or 1 for positive.  The magnitude is a byte array
+     * in <i>big-endian</i> byte-order: the most significant byte is the
+     * zeroth element.  A zero-length magnitude array is permissible, and will
+     * result in a BigInteger value of 0, whether signum is -1, 0 or 1.  The
+     * {@code magnitude} array is assumed to be unchanged for the duration of
+     * the constructor call.
+     *
+     * @param  signum signum of the number (-1 for negative, 0 for zero, 1
+     *         for positive).
+     * @param  magnitude big-endian binary representation of the magnitude of
+     *         the number.
+     * @throws NumberFormatException {@code signum} is not one of the three
+     *         legal values (-1, 0, and 1), or {@code signum} is 0 and
+     *         {@code magnitude} contains one or more non-zero bytes.
+     */
+    public BigInteger(int signum, byte[] magnitude) {
+         this(signum, magnitude, 0, magnitude.length);
+    }
+
+    /**
      * A constructor for internal use that translates the sign-magnitude
      * representation of a BigInteger into a BigInteger. It checks the
      * arguments and copies the magnitude so this constructor would be
-     * safe for external use.
+     * safe for external use.  The {@code magnitude} array is assumed to be
+     * unchanged for the duration of the constructor call.
      */
     private BigInteger(int signum, int[] magnitude) {
         this.mag = stripLeadingZeroInts(magnitude);
@@ -467,7 +544,9 @@
 
     /*
      * Constructs a new BigInteger using a char array with radix=10.
-     * Sign is precalculated outside and not allowed in the val.
+     * Sign is precalculated outside and not allowed in the val. The {@code val}
+     * array is assumed to be unchanged for the duration of the constructor
+     * call.
      */
     BigInteger(char[] val, int sign, int len) {
         int cursor = 0, numDigits;
@@ -1035,11 +1114,12 @@
 
     /**
      * This private constructor is for internal use and assumes that its
-     * arguments are correct.
+     * arguments are correct.  The {@code magnitude} array is assumed to be
+     * unchanged for the duration of the constructor call.
      */
     private BigInteger(byte[] magnitude, int signum) {
         this.signum = (magnitude.length == 0 ? 0 : signum);
-        this.mag = stripLeadingZeroBytes(magnitude);
+        this.mag = stripLeadingZeroBytes(magnitude, 0, magnitude.length);
         if (mag.length >= MAX_MAG_LENGTH) {
             checkRange();
         }
@@ -3977,18 +4057,18 @@
     /**
      * Returns a copy of the input array stripped of any leading zero bytes.
      */
-    private static int[] stripLeadingZeroBytes(byte a[]) {
-        int byteLength = a.length;
+    private static int[] stripLeadingZeroBytes(byte a[], int off, int len) {
+        int indexBound = off + len;
         int keep;
 
         // Find first nonzero byte
-        for (keep = 0; keep < byteLength && a[keep] == 0; keep++)
+        for (keep = off; keep < indexBound && a[keep] == 0; keep++)
             ;
 
         // Allocate new array and copy relevant part of input array
-        int intLength = ((byteLength - keep) + 3) >>> 2;
+        int intLength = ((indexBound - keep) + 3) >>> 2;
         int[] result = new int[intLength];
-        int b = byteLength - 1;
+        int b = indexBound - 1;
         for (int i = intLength-1; i >= 0; i--) {
             result[i] = a[b--] & 0xff;
             int bytesRemaining = b - keep + 1;
@@ -4003,27 +4083,27 @@
      * Takes an array a representing a negative 2's-complement number and
      * returns the minimal (no leading zero bytes) unsigned whose value is -a.
      */
-    private static int[] makePositive(byte a[]) {
+    private static int[] makePositive(byte a[], int off, int len) {
         int keep, k;
-        int byteLength = a.length;
+        int indexBound = off + len;
 
         // Find first non-sign (0xff) byte of input
-        for (keep=0; keep < byteLength && a[keep] == -1; keep++)
+        for (keep=off; keep < indexBound && a[keep] == -1; keep++)
             ;
 
 
         /* Allocate output array.  If all non-sign bytes are 0x00, we must
          * allocate space for one extra output byte. */
-        for (k=keep; k < byteLength && a[k] == 0; k++)
+        for (k=keep; k < indexBound && a[k] == 0; k++)
             ;
 
-        int extraByte = (k == byteLength) ? 1 : 0;
-        int intLength = ((byteLength - keep + extraByte) + 3) >>> 2;
+        int extraByte = (k == indexBound) ? 1 : 0;
+        int intLength = ((indexBound - keep + extraByte) + 3) >>> 2;
         int result[] = new int[intLength];
 
         /* Copy one's complement of input into output, leaving extra
          * byte (if it exists) == 0x00 */
-        int b = byteLength - 1;
+        int b = indexBound - 1;
         for (int i = intLength-1; i >= 0; i--) {
             result[i] = a[b--] & 0xff;
             int numBytesToTransfer = Math.min(3, b-keep+1);
@@ -4248,7 +4328,7 @@
                 message = "BigInteger: Signum not present in stream";
             throw new java.io.StreamCorruptedException(message);
         }
-        int[] mag = stripLeadingZeroBytes(magnitude);
+        int[] mag = stripLeadingZeroBytes(magnitude, 0, magnitude.length);
         if ((mag.length == 0) != (sign == 0)) {
             String message = "BigInteger: signum-magnitude mismatch";
             if (fields.defaulted("magnitude"))
--- a/jdk/src/java.base/share/classes/java/util/Formatter.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/src/java.base/share/classes/java/util/Formatter.java	Mon Jan 19 11:35:45 2015 +0000
@@ -3727,29 +3727,29 @@
                             exp = new StringBuilder("+00");
                         }
                     }
-                    return;
-                }
-                long adjusted = -(long) scale + (len - 1);
-                if (form == BigDecimalLayoutForm.DECIMAL_FLOAT) {
+                } else if (form == BigDecimalLayoutForm.DECIMAL_FLOAT) {
                     // count of padding zeros
-                    int pad = scale - len;
-                    if (pad >= 0) {
+
+                    if (scale >= len) {
                         // 0.xxx form
                         mant.append("0.");
                         dot = true;
-                        trailingZeros(mant, pad);
+                        trailingZeros(mant, scale - len);
                         mant.append(coeff);
                     } else {
-                        if (-pad < len) {
+                        if (scale > 0) {
                             // xx.xx form
-                            mant.append(coeff, 0, -pad);
+                            int pad = len - scale;
+                            mant.append(coeff, 0, pad);
                             mant.append('.');
                             dot = true;
-                            mant.append(coeff, -pad, -pad + scale);
-                        } else {
+                            mant.append(coeff, pad, len);
+                        } else { // scale < 0
                             // xx form
                             mant.append(coeff, 0, len);
-                            trailingZeros(mant, -scale);
+                            if (intVal.signum() != 0) {
+                                trailingZeros(mant, -scale);
+                            }
                             this.scale = 0;
                         }
                     }
@@ -3762,6 +3762,7 @@
                         mant.append(coeff, 1, len);
                     }
                     exp = new StringBuilder();
+                    long adjusted = -(long) scale + (len - 1);
                     if (adjusted != 0) {
                         long abs = Math.abs(adjusted);
                         // require sign
--- a/jdk/src/java.base/share/classes/javax/crypto/spec/RC5ParameterSpec.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/src/java.base/share/classes/javax/crypto/spec/RC5ParameterSpec.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,7 +29,7 @@
 
 /**
  * This class specifies the parameters used with the
- * <a href="http://www.ietf.org/rfc/rfc2040.txt"><i>RC5</i></a>
+ * <a href="http://tools.ietf.org/html/rfc2040"><i>RC5</i></a>
  * algorithm.
  *
  * <p> The parameters consist of a version number, a rounds count, a word
@@ -37,7 +37,7 @@
  *
  * <p> This class can be used to initialize a <code>Cipher</code> object that
  * implements the <i>RC5</i> algorithm as supplied by
- * <a href="http://www.rsasecurity.com">RSA Security Inc.</a>,
+ * <a href="http://www.rsa.com">RSA Security LLC</a>,
  * or any parties authorized by RSA Security.
  *
  * @author Jan Luehe
--- a/jdk/src/java.base/windows/classes/sun/nio/ch/FileDispatcherImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/src/java.base/windows/classes/sun/nio/ch/FileDispatcherImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -123,7 +123,7 @@
             new PrivilegedAction<String>() {
                 @Override
                 public String run() {
-                    return System.getProperty("jdk.net.enableFastFileTransfer");
+                    return System.getProperty("jdk.nio.enableFastFileTransfer");
                 }
             });
         boolean enable;
--- a/jdk/src/java.base/windows/native/libnet/NetworkInterface_winXP.c	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/src/java.base/windows/native/libnet/NetworkInterface_winXP.c	Mon Jan 19 11:35:45 2015 +0000
@@ -81,9 +81,17 @@
     DWORD ret, flags;
     IP_ADAPTER_ADDRESSES *adapterInfo;
     ULONG len;
+    char *error_msg_buf = NULL;
+    size_t error_msg_buf_size =
+            strlen("IP Helper Library GetAdaptersAddresses function failed"
+                   " with error == ") + 10;
+    int _ret = 0;
+
+
     adapterInfo = (IP_ADAPTER_ADDRESSES *)malloc (bufsize);
     if (adapterInfo == NULL) {
-        JNU_ThrowByName(env, "java/lang/OutOfMemoryError", "Native heap allocation failure");
+        JNU_ThrowByName(env, "java/lang/OutOfMemoryError",
+            "Native heap allocation failure");
         return -1;
     }
 
@@ -94,10 +102,12 @@
     ret = GetAdaptersAddresses(AF_UNSPEC, flags, NULL, adapterInfo, &len);
 
     if (ret == ERROR_BUFFER_OVERFLOW) {
-        IP_ADAPTER_ADDRESSES * newAdapterInfo = (IP_ADAPTER_ADDRESSES *) realloc (adapterInfo, len);
+        IP_ADAPTER_ADDRESSES * newAdapterInfo =
+            (IP_ADAPTER_ADDRESSES *) realloc (adapterInfo, len);
         if (newAdapterInfo == NULL) {
             free(adapterInfo);
-            JNU_ThrowByName(env, "java/lang/OutOfMemoryError", "Native heap allocation failure");
+            JNU_ThrowByName(env, "java/lang/OutOfMemoryError",
+                "Native heap allocation failure");
             return -1;
         }
 
@@ -109,8 +119,32 @@
 
     if (ret != ERROR_SUCCESS) {
         free (adapterInfo);
-        JNU_ThrowByName(env, "java/lang/Error",
-                "IP Helper Library GetAdaptersAddresses function failed");
+        if (ret == ERROR_INSUFFICIENT_BUFFER) {
+            JNU_ThrowByName(env, "java/lang/Error",
+                "IP Helper Library GetAdaptersAddresses function failed "
+                "with ERROR_INSUFFICIENT_BUFFER");
+        } else if (ret == ERROR_ADDRESS_NOT_ASSOCIATED ) {
+            JNU_ThrowByName(env, "java/lang/Error",
+                "IP Helper Library GetAdaptersAddresses function failed "
+                "with ERROR_ADDRESS_NOT_ASSOCIATED");
+        } else {
+            error_msg_buf = (char *)malloc(error_msg_buf_size);
+            if (error_msg_buf != NULL) {
+                memset(error_msg_buf, 0, error_msg_buf_size);
+                _ret = _snprintf_s(error_msg_buf, error_msg_buf_size,
+                    _TRUNCATE, "IP Helper Library GetAdaptersAddresses "
+                                "function failed with error == %d", ret);
+                if (_ret != -1) {
+                    JNU_ThrowByName(env, "java/lang/Error", error_msg_buf);
+                } else {
+                    JNU_ThrowByName(env, "java/lang/Error",
+                        "IP Helper Library GetAdaptersAddresses function failure");
+                }
+            } else {
+                JNU_ThrowByName(env, "java/lang/Error",
+                    "IP Helper Library GetAdaptersAddresses function failed");
+            }
+        }
         return -1;
     }
     *adapters = adapterInfo;
@@ -126,9 +160,14 @@
     DWORD flags, val;
     IP_ADAPTER_ADDRESSES *adapterInfo, *ptr, *ret;
     ULONG len;
+    char *error_msg_buf = NULL;
+    size_t error_msg_buf_size =
+        strlen("IP Helper Library GetAdaptersAddresses function failed with error == ") + 10;
+    int _ret = 0;
     adapterInfo = (IP_ADAPTER_ADDRESSES *)malloc (bufsize);
     if (adapterInfo == NULL) {
-        JNU_ThrowByName(env, "java/lang/OutOfMemoryError", "Native heap allocation failure");
+        JNU_ThrowByName(env, "java/lang/OutOfMemoryError",
+            "Native heap allocation failure");
         return NULL;
     }
     len = bufsize;
@@ -137,10 +176,12 @@
     flags |= GAA_FLAG_INCLUDE_PREFIX;
     val = GetAdaptersAddresses(AF_UNSPEC, flags, NULL, adapterInfo, &len);
     if (val == ERROR_BUFFER_OVERFLOW) {
-        IP_ADAPTER_ADDRESSES * newAdapterInfo = (IP_ADAPTER_ADDRESSES *) realloc (adapterInfo, len);
+        IP_ADAPTER_ADDRESSES * newAdapterInfo =
+                (IP_ADAPTER_ADDRESSES *) realloc (adapterInfo, len);
         if (newAdapterInfo == NULL) {
             free(adapterInfo);
-            JNU_ThrowByName(env, "java/lang/OutOfMemoryError", "Native heap allocation failure");
+            JNU_ThrowByName(env, "java/lang/OutOfMemoryError",
+                "Native heap allocation failure");
             return NULL;
         }
 
@@ -152,10 +193,35 @@
 
     if (val != ERROR_SUCCESS) {
         free (adapterInfo);
-        JNU_ThrowByName(env, "java/lang/Error",
-                "IP Helper Library GetAdaptersAddresses function failed");
+        if (val == ERROR_INSUFFICIENT_BUFFER) {
+            JNU_ThrowByName(env, "java/lang/Error",
+                "IP Helper Library GetAdaptersAddresses function failed "
+                "with ERROR_INSUFFICIENT_BUFFER");
+        } else if (val == ERROR_ADDRESS_NOT_ASSOCIATED ) {
+            JNU_ThrowByName(env, "java/lang/Error",
+                "IP Helper Library GetAdaptersAddresses function failed "
+                "with ERROR_ADDRESS_NOT_ASSOCIATED");
+        } else {
+            error_msg_buf = (char *)malloc(error_msg_buf_size);
+            if (error_msg_buf != NULL) {
+                memset(error_msg_buf, 0, error_msg_buf_size);
+                _ret = _snprintf_s(error_msg_buf, error_msg_buf_size,
+                    _TRUNCATE, "IP Helper Library GetAdaptersAddresses function failed "
+                               "with error == %d", val);
+                if (_ret != -1) {
+                    JNU_ThrowByName(env, "java/lang/Error", error_msg_buf);
+                } else {
+                    JNU_ThrowByName(env, "java/lang/Error",
+                        "IP Helper Library GetAdaptersAddresses function failure");
+                }
+            } else {
+                JNU_ThrowByName(env, "java/lang/Error",
+                    "IP Helper Library GetAdaptersAddresses function failed");
+            }
+        }
         return NULL;
     }
+
     ptr = adapterInfo;
     ret = NULL;
     while (ptr != NULL) {
@@ -168,7 +234,8 @@
         ret = (IP_ADAPTER_ADDRESSES *) malloc(sizeof(IP_ADAPTER_ADDRESSES));
         if (ret == NULL) {
             free(adapterInfo);
-            JNU_ThrowByName(env, "java/lang/OutOfMemoryError", "Native heap allocation failure");
+            JNU_ThrowByName(env, "java/lang/OutOfMemoryError",
+                "Native heap allocation failure");
             return NULL;
         }
 
--- a/jdk/src/java.scripting/share/classes/javax/script/ScriptEngineFactory.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/src/java.scripting/share/classes/javax/script/ScriptEngineFactory.java	Mon Jan 19 11:35:45 2015 +0000
@@ -85,7 +85,7 @@
     public List<String> getNames();
 
     /**
-     * Returns the name of the scripting langauge supported by this
+     * Returns the name of the scripting language supported by this
      * <code>ScriptEngine</code>.
      * @return The name of the supported language.
      */
@@ -104,14 +104,15 @@
      * <ul>
      * <li>ScriptEngine.ENGINE</li>
      * <li>ScriptEngine.ENGINE_VERSION</li>
-     * <li>ScriptEngine.NAME</li>
      * <li>ScriptEngine.LANGUAGE</li>
      * <li>ScriptEngine.LANGUAGE_VERSION</li>
+     * <li>ScriptEngine.NAME</li>
      * </ul>
      * <p>
      * The values for these keys are the Strings returned by <code>getEngineName</code>,
-     * <code>getEngineVersion</code>, <code>getName</code>, <code>getLanguageName</code> and
-     * <code>getLanguageVersion</code> respectively.<br><br>
+     * <code>getEngineVersion</code>, <code>getLanguageName</code>,
+     * <code>getLanguageVersion</code> for the first four keys respectively. For NAME, one of the Strings
+     * returned by <code>getNames</code> is returned.<br><br>
      * A reserved key, <code><b>THREADING</b></code>, whose value describes the behavior of the engine
      * with respect to concurrent execution of scripts and maintenance of state is also defined.
      * These values for the <code><b>THREADING</b></code> key are:<br><br>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.sql/share/classes/javax/transaction/xa/XAException.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,196 @@
+/*
+ * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.transaction.xa;
+
+/**
+ * The XAException is thrown by the Resource Manager (RM) to inform the
+ * Transaction Manager of an error encountered by the involved transaction.
+ *
+ */
+public class XAException extends Exception {
+    //private static final long serialVersionUID = -8249683284832867751L;
+
+    /**
+     * The error code with which to create the SystemException.
+     *
+     * @serial The error code for the exception
+     */
+    public int errorCode;
+
+    /**
+     * Create an XAException.
+     */
+    public XAException() {
+        super();
+    }
+
+    /**
+     * Create an XAException with a given string.
+     *
+     * @param s The <code>String</code> object containing the exception
+     *          message.
+     */
+    public XAException(String s) {
+        super(s);
+    }
+
+    /**
+     * Create an XAException with a given error code.
+     *
+     * @param errcode The error code identifying the exception.
+     */
+    public XAException(int errcode) {
+        super();
+        errorCode = errcode;
+    }
+
+    /**
+     * The inclusive lower bound of the rollback codes.
+     */
+    public final static int XA_RBBASE = 100;
+
+    /**
+     * Indicates that the rollback was caused by an unspecified reason.
+     */
+    public final static int XA_RBROLLBACK = XA_RBBASE;
+
+    /**
+     * Indicates that the rollback was caused by a communication failure.
+     */
+    public final static int XA_RBCOMMFAIL = XA_RBBASE + 1;
+
+    /**
+     * A deadlock was detected.
+     */
+    public final static int XA_RBDEADLOCK = XA_RBBASE + 2;
+
+    /**
+     * A condition that violates the integrity of the resource was detected.
+     */
+    public final static int XA_RBINTEGRITY = XA_RBBASE + 3;
+
+    /**
+     * The resource manager rolled back the transaction branch for a reason
+     * not on this list.
+     */
+    public final static int XA_RBOTHER = XA_RBBASE + 4;
+
+    /**
+     * A protocol error occurred in the resource manager.
+     */
+    public final static int XA_RBPROTO = XA_RBBASE + 5;
+
+    /**
+     * A transaction branch took too long.
+     */
+    public final static int XA_RBTIMEOUT = XA_RBBASE + 6;
+
+    /**
+     * May retry the transaction branch.
+     */
+    public final static int XA_RBTRANSIENT = XA_RBBASE + 7;
+
+    /**
+     * The inclusive upper bound of the rollback error code.
+     */
+    public final static int XA_RBEND = XA_RBTRANSIENT;
+
+    /**
+     * Resumption must occur where the suspension occurred.
+     */
+    public final static int XA_NOMIGRATE = 9;
+
+    /**
+     * The transaction branch may have been heuristically completed.
+     */
+    public final static int XA_HEURHAZ = 8;
+
+    /**
+     * The transaction branch has been heuristically committed.
+     */
+    public final static int XA_HEURCOM = 7;
+
+    /**
+     * The transaction branch has been heuristically rolled back.
+     */
+    public final static int XA_HEURRB = 6;
+
+    /**
+     * The transaction branch has been heuristically committed and
+     * rolled back.
+     */
+    public final static int XA_HEURMIX = 5;
+
+    /**
+     * Routine returned with no effect and may be reissued.
+     */
+    public final static int XA_RETRY = 4;
+
+    /**
+     * The transaction branch was read-only and has been committed.
+     */
+    public final static int XA_RDONLY = 3;
+
+    /**
+     * There is an asynchronous operation already outstanding.
+     */
+    public final static int XAER_ASYNC = -2;
+
+    /**
+     * A resource manager error has occurred in the transaction branch.
+     */
+    public final static int XAER_RMERR = -3;
+
+    /**
+     * The XID is not valid.
+     */
+    public final static int XAER_NOTA = -4;
+
+    /**
+     * Invalid arguments were given.
+     */
+    public final static int XAER_INVAL = -5;
+
+    /**
+     * Routine was invoked in an inproper context.
+     */
+    public final static int XAER_PROTO = -6;
+
+    /**
+     * Resource manager is unavailable.
+     */
+    public final static int XAER_RMFAIL = -7;
+
+    /**
+     * The XID already exists.
+     */
+    public final static int XAER_DUPID = -8;
+
+    /**
+     * The resource manager is doing work outside a global transaction.
+     */
+    public final static int XAER_OUTSIDE = -9;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.sql/share/classes/javax/transaction/xa/XAResource.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,305 @@
+/*
+ * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.transaction.xa;
+
+/**
+ * The XAResource interface is a Java mapping of the industry standard
+ * XA interface based on the X/Open CAE Specification (Distributed
+ * Transaction Processing: The XA Specification).
+ *
+ * <p>The XA interface defines the contract between a Resource Manager
+ * and a Transaction Manager in a distributed transaction processing
+ * (DTP) environment. A JDBC driver or a JMS provider implements
+ * this interface to support the association between a global transaction
+ * and a database or message service connection.
+ *
+ * <p>The XAResource interface can be supported by any transactional
+ * resource that is intended to be used by application programs in an
+ * environment where transactions are controlled by an external
+ * transaction manager. An example of such a resource is a database
+ * management system. An application may access data through multiple
+ * database connections. Each database connection is enlisted with
+ * the transaction manager as a transactional resource. The transaction
+ * manager obtains an XAResource for each connection participating
+ * in a global transaction. The transaction manager uses the
+ * <code>start</code> method
+ * to associate the global transaction with the resource, and it uses the
+ * <code>end</code> method to disassociate the transaction from
+ * the resource. The resource
+ * manager is responsible for associating the global transaction to all
+ * work performed on its data between the start and end method invocations.
+ *
+ * <p>At transaction commit time, the resource managers are informed by
+ * the transaction manager to prepare, commit, or rollback a transaction
+ * according to the two-phase commit protocol.</p>
+ *
+ */
+public interface XAResource {
+
+    /**
+     * Commits the global transaction specified by xid.
+     *
+     * @param xid A global transaction identifier
+     *
+     * @param onePhase If true, the resource manager should use a one-phase
+     * commit protocol to commit the work done on behalf of xid.
+     *
+     * @exception XAException An error has occurred. Possible XAExceptions
+     * are XA_HEURHAZ, XA_HEURCOM, XA_HEURRB, XA_HEURMIX, XAER_RMERR,
+     * XAER_RMFAIL, XAER_NOTA, XAER_INVAL, or XAER_PROTO.
+     *
+     * <P>If the resource manager did not commit the transaction and the
+     *  paramether onePhase is set to true, the resource manager may throw
+     *  one of the XA_RB* exceptions. Upon return, the resource manager has
+     *  rolled back the branch's work and has released all held resources.
+     */
+    void commit(Xid xid, boolean onePhase) throws XAException;
+
+    /**
+     * Ends the work performed on behalf of a transaction branch.
+     * The resource manager disassociates the XA resource from the
+     * transaction branch specified and lets the transaction
+     * complete.
+     *
+     * <p>If TMSUSPEND is specified in the flags, the transaction branch
+     * is temporarily suspended in an incomplete state. The transaction
+     * context is in a suspended state and must be resumed via the
+     * <code>start</code> method with TMRESUME specified.</p>
+     *
+     * <p>If TMFAIL is specified, the portion of work has failed.
+     * The resource manager may mark the transaction as rollback-only</p>
+     *
+     * <p>If TMSUCCESS is specified, the portion of work has completed
+     * successfully.</p>
+     *
+     * @param xid A global transaction identifier that is the same as
+     * the identifier used previously in the <code>start</code> method.
+     *
+     * @param flags One of TMSUCCESS, TMFAIL, or TMSUSPEND.
+     *
+     * @exception XAException An error has occurred. Possible XAException
+     * values are XAER_RMERR, XAER_RMFAILED, XAER_NOTA, XAER_INVAL,
+     * XAER_PROTO, or XA_RB*.
+     */
+    void end(Xid xid, int flags) throws XAException;
+
+    /**
+     * Tells the resource manager to forget about a heuristically
+     * completed transaction branch.
+     *
+     * @param xid A global transaction identifier.
+     *
+     * @exception XAException An error has occurred. Possible exception
+     * values are XAER_RMERR, XAER_RMFAIL, XAER_NOTA, XAER_INVAL, or
+     * XAER_PROTO.
+     */
+    void forget(Xid xid) throws XAException;
+
+    /**
+     * Obtains the current transaction timeout value set for this
+     * XAResource instance. If <CODE>XAResource.setTransactionTimeout</CODE>
+     * was not used prior to invoking this method, the return value
+     * is the default timeout set for the resource manager; otherwise,
+     * the value used in the previous <CODE>setTransactionTimeout</CODE>
+     * call is returned.
+     *
+     * @return the transaction timeout value in seconds.
+     *
+     * @exception XAException An error has occurred. Possible exception
+     * values are XAER_RMERR and XAER_RMFAIL.
+     */
+    int getTransactionTimeout() throws XAException;
+
+    /**
+     * This method is called to determine if the resource manager
+     * instance represented by the target object is the same as the
+     * resouce manager instance represented by the parameter <i>xares</i>.
+     *
+     * @param xares An XAResource object whose resource manager instance
+     *      is to be compared with the resource manager instance of the
+     *      target object.
+     *
+     * @return <i>true</i> if it's the same RM instance; otherwise
+     *       <i>false</i>.
+     *
+     * @exception XAException An error has occurred. Possible exception
+     * values are XAER_RMERR and XAER_RMFAIL.
+     */
+    boolean isSameRM(XAResource xares) throws XAException;
+
+    /**
+     * Ask the resource manager to prepare for a transaction commit
+     * of the transaction specified in xid.
+     *
+     * @param xid A global transaction identifier.
+     *
+     * @exception XAException An error has occurred. Possible exception
+     * values are: XA_RB*, XAER_RMERR, XAER_RMFAIL, XAER_NOTA, XAER_INVAL,
+     * or XAER_PROTO.
+     *
+     * @return A value indicating the resource manager's vote on the
+     * outcome of the transaction. The possible values are: XA_RDONLY
+     * or XA_OK. If the resource manager wants to roll back the
+     * transaction, it should do so by raising an appropriate XAException
+     * in the prepare method.
+     */
+    int prepare(Xid xid) throws XAException;
+
+    /**
+     * Obtains a list of prepared transaction branches from a resource
+     * manager. The transaction manager calls this method during recovery
+     * to obtain the list of transaction branches that are currently in
+     * prepared or heuristically completed states.
+     *
+     * @param flag One of TMSTARTRSCAN, TMENDRSCAN, TMNOFLAGS. TMNOFLAGS
+     * must be used when no other flags are set in the parameter.
+     *
+     * @exception XAException An error has occurred. Possible values are
+     * XAER_RMERR, XAER_RMFAIL, XAER_INVAL, and XAER_PROTO.
+     *
+     * @return The resource manager returns zero or more XIDs of the
+     * transaction branches that are currently in a prepared or
+     * heuristically completed state. If an error occurs during the
+     * operation, the resource manager should throw the appropriate
+     * XAException.
+     */
+    Xid[] recover(int flag) throws XAException;
+
+    /**
+     * Informs the resource manager to roll back work done on behalf
+     * of a transaction branch.
+     *
+     * @param xid A global transaction identifier.
+     *
+     * @exception XAException An error has occurred.
+     */
+    void rollback(Xid xid) throws XAException;
+
+    /**
+     * Sets the current transaction timeout value for this <CODE>XAResource</CODE>
+     * instance. Once set, this timeout value is effective until
+     * <code>setTransactionTimeout</code> is invoked again with a different
+     * value. To reset the timeout value to the default value used by the resource
+     * manager, set the value to zero.
+     *
+     * If the timeout operation is performed successfully, the method returns
+     * <i>true</i>; otherwise <i>false</i>. If a resource manager does not
+     * support explicitly setting the transaction timeout value, this method
+     * returns <i>false</i>.
+     *
+     * @param seconds The transaction timeout value in seconds.
+     *
+     * @return <i>true</i> if the transaction timeout value is set successfully;
+     *       otherwise <i>false</i>.
+     *
+     * @exception XAException An error has occurred. Possible exception values
+     * are XAER_RMERR, XAER_RMFAIL, or XAER_INVAL.
+     */
+    boolean setTransactionTimeout(int seconds) throws XAException;
+
+    /**
+     * Starts work on behalf of a transaction branch specified in
+     * <code>xid</code>.
+     *
+     * If TMJOIN is specified, the start applies to joining a transaction
+     * previously seen by the resource manager. If TMRESUME is specified,
+     * the start applies to resuming a suspended transaction specified in the
+     * parameter <code>xid</code>.
+     *
+     * If neither TMJOIN nor TMRESUME is specified and the transaction
+     * specified by <code>xid</code> has previously been seen by the resource
+     * manager, the resource manager throws the XAException exception with
+     * XAER_DUPID error code.
+     *
+     * @param xid A global transaction identifier to be associated
+     * with the resource.
+     *
+     * @param flags One of TMNOFLAGS, TMJOIN, or TMRESUME.
+     *
+     * @exception XAException An error has occurred. Possible exceptions
+     * are XA_RB*, XAER_RMERR, XAER_RMFAIL, XAER_DUPID, XAER_OUTSIDE,
+     * XAER_NOTA, XAER_INVAL, or XAER_PROTO.
+     */
+    void start(Xid xid, int flags) throws XAException;
+
+    /**
+     * Ends a recovery scan.
+     */
+    public final static int TMENDRSCAN =   0x00800000;
+
+    /**
+     * Disassociates the caller and marks the transaction branch
+     * rollback-only.
+     */
+    public final static int TMFAIL =       0x20000000;
+
+    /**
+     * Caller is joining existing transaction branch.
+     */
+    public final static int TMJOIN =       0x00200000;
+
+    /**
+     * Use TMNOFLAGS to indicate no flags value is selected.
+     */
+    public final static int TMNOFLAGS =     0x00000000;
+
+    /**
+     * Caller is using one-phase optimization.
+     */
+    public final static int TMONEPHASE =   0x40000000;
+
+    /**
+     * Caller is resuming association with a suspended
+     * transaction branch.
+     */
+    public final static int TMRESUME =     0x08000000;
+
+    /**
+      * Starts a recovery scan.
+      */
+    public final static int TMSTARTRSCAN = 0x01000000;
+
+    /**
+     * Disassociates caller from a transaction branch.
+     */
+    public final static int TMSUCCESS =    0x04000000;
+
+    /**
+     * Caller is suspending (not ending) its association with
+     * a transaction branch.
+     */
+    public final static int TMSUSPEND =    0x02000000;
+
+    /**
+     * The transaction branch has been read-only and has been committed.
+     */
+    public final static int XA_RDONLY = 0x00000003;
+
+    /**
+     * The transaction work has been prepared normally.
+     */
+    public final static int XA_OK = 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.sql/share/classes/javax/transaction/xa/Xid.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.transaction.xa;
+
+/**
+ * The Xid interface is a Java mapping of the X/Open transaction identifier
+ * XID structure. This interface specifies three accessor methods to
+ * retrieve a global transaction format ID, global transaction ID,
+ * and branch qualifier. The Xid interface is used by the transaction
+ * manager and the resource managers. This interface is not visible to
+ * the application programs.
+ */
+public interface Xid {
+
+    /**
+     * Maximum number of bytes returned by getGtrid.
+     */
+    final static int MAXGTRIDSIZE = 64;
+
+    /**
+     * Maximum number of bytes returned by getBqual.
+     */
+    final static int MAXBQUALSIZE = 64;
+
+    /**
+     * Obtain the format identifier part of the XID.
+     *
+     * @return Format identifier. O means the OSI CCR format.
+     */
+    int getFormatId();
+
+    /**
+     * Obtain the global transaction identifier part of XID as an array
+     * of bytes.
+     *
+     * @return Global transaction identifier.
+     */
+    byte[] getGlobalTransactionId();
+
+    /**
+     * Obtain the transaction branch identifier part of XID as an array
+     * of bytes.
+     *
+     * @return Global transaction identifier.
+     */
+    byte[] getBranchQualifier();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.sql/share/classes/javax/transaction/xa/package.html	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+This code is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License version 2 only, as
+published by the Free Software Foundation.  Oracle designates this
+particular file as subject to the "Classpath" exception as provided
+by Oracle in the LICENSE file that accompanied this code.
+
+This code is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+version 2 for more details (a copy is included in the LICENSE file that
+accompanied this code).
+
+You should have received a copy of the GNU General Public License version
+2 along with this work; if not, write to the Free Software Foundation,
+Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
+-->
+
+</head>
+<body bgcolor="white">
+
+Provides the API that defines the contract between the transaction 
+manager and the resource manager, which allows the transaction 
+manager to enlist and delist resource objects (supplied by the 
+resource manager driver) in JTA transactions. The driver vendor 
+for a specific resource manager provides the implementation of 
+this API.
+<p>
+@since 1.4
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.transaction/share/classes/javax/transaction/InvalidTransactionException.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * Licensed Materials - Property of IBM
+ * RMI-IIOP v1.0
+ * Copyright IBM Corp. 1998 1999  All Rights Reserved
+ *
+ */
+
+package javax.transaction;
+
+/**
+ * This exception indicates that the request carried an invalid transaction
+ * context. For example, this exception could be raised if an error
+ * occured when trying to register a resource.
+ */
+@SuppressWarnings("serial")             // serialVersionUID intentionally omitted
+public class InvalidTransactionException extends java.rmi.RemoteException {
+
+    public InvalidTransactionException() {
+        super();
+    }
+
+    public InvalidTransactionException(String msg) {
+        super(msg);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.transaction/share/classes/javax/transaction/TransactionRequiredException.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * Licensed Materials - Property of IBM
+ * RMI-IIOP v1.0
+ * Copyright IBM Corp. 1998 1999  All Rights Reserved
+ *
+ */
+
+package javax.transaction;
+
+/**
+ * This exception indicates that a request carried a null transaction context,
+ * but the target object requires an activate transaction.
+ */
+@SuppressWarnings("serial")             // serialVersionUID intentionally omitted
+public class TransactionRequiredException extends java.rmi.RemoteException {
+
+    public TransactionRequiredException() {
+        super();
+    }
+
+    public TransactionRequiredException(String msg) {
+        super(msg);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.transaction/share/classes/javax/transaction/TransactionRolledbackException.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * Licensed Materials - Property of IBM
+ * RMI-IIOP v1.0
+ * Copyright IBM Corp. 1998 1999  All Rights Reserved
+ *
+ */
+
+package javax.transaction;
+
+/**
+ * This exception indicates that the transaction associated with processing
+ * of the request has been rolled back, or marked to roll back. Thus the
+ * requested operation either could not be performed or was not performed
+ * because further computation on behalf of the transaction would be
+ * fruitless
+ */
+@SuppressWarnings("serial")             // serialVersionUID intentionally omitted
+public class TransactionRolledbackException extends java.rmi.RemoteException {
+
+    public TransactionRolledbackException() {
+        super();
+    }
+
+    public TransactionRolledbackException(String msg) {
+        super(msg);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.transaction/share/classes/javax/transaction/package.html	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+This code is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License version 2 only, as
+published by the Free Software Foundation.  Oracle designates this
+particular file as subject to the "Classpath" exception as provided
+by Oracle in the LICENSE file that accompanied this code.
+
+This code is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+version 2 for more details (a copy is included in the LICENSE file that
+accompanied this code).
+
+You should have received a copy of the GNU General Public License version
+2 along with this work; if not, write to the Free Software Foundation,
+Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
+-->
+
+</head>
+<body bgcolor="white">
+
+Contains three exceptions thrown by the ORB machinery during unmarshalling.
+<p>
+@since 1.3
+</body>
+</html>
--- a/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java	Mon Jan 19 11:35:45 2015 +0000
@@ -21,7 +21,7 @@
  * under the License.
  */
 /*
- * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
  */
 /*
  * $Id: DOMKeyValue.java 1333415 2012-05-03 12:03:51Z coheigea $
@@ -33,20 +33,19 @@
 import javax.xml.crypto.dsig.*;
 import javax.xml.crypto.dsig.keyinfo.KeyValue;
 
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.security.AccessController;
+import java.io.IOException;
+import java.math.BigInteger;
 import java.security.KeyException;
 import java.security.KeyFactory;
 import java.security.NoSuchAlgorithmException;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
 import java.security.PublicKey;
 import java.security.interfaces.DSAParams;
 import java.security.interfaces.DSAPublicKey;
 import java.security.interfaces.ECPublicKey;
 import java.security.interfaces.RSAPublicKey;
 import java.security.spec.DSAPublicKeySpec;
+import java.security.spec.ECField;
+import java.security.spec.ECFieldFp;
 import java.security.spec.ECParameterSpec;
 import java.security.spec.ECPoint;
 import java.security.spec.ECPublicKeySpec;
@@ -54,6 +53,7 @@
 import java.security.spec.InvalidKeySpecException;
 import java.security.spec.KeySpec;
 import java.security.spec.RSAPublicKeySpec;
+import java.util.Arrays;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -325,55 +325,112 @@
         private byte[] ecPublicKey;
         private KeyFactory eckf;
         private ECParameterSpec ecParams;
-        private Method encodePoint, decodePoint, getCurveName,
-                       getECParameterSpec;
+
+        // The supported curve, secp256r1
+        private static final Curve SECP256R1;
+        static {
+            final String name, oid, sfield, a, b, x, y, n;
+            name = "secp256r1 [NIST P-256, X9.62 prime256v1]";
+            oid  = "1.2.840.10045.3.1.7";
+            sfield =
+             "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF";
+            a =
+             "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC";
+            b =
+             "5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B";
+            x =
+             "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296";
+            y =
+             "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5";
+            n =
+             "FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551";
+            final int h = 1;
+
+            BigInteger p = bigInt(sfield);
+            ECField field = new ECFieldFp(p);
+            EllipticCurve curve = new EllipticCurve(field, bigInt(a),
+                                                    bigInt(b));
+            ECPoint g = new ECPoint(bigInt(x), bigInt(y));
+            SECP256R1 = new Curve(name, oid, curve, g, bigInt(n), h);
+        }
 
         EC(PublicKey key) throws KeyException {
             super(key);
             ECPublicKey ecKey = (ECPublicKey)key;
             ECPoint ecPoint = ecKey.getW();
             ecParams = ecKey.getParams();
-            try {
-                AccessController.doPrivileged(
-                    new PrivilegedExceptionAction<Void>() {
-                        public Void run() throws
-                            ClassNotFoundException, NoSuchMethodException
-                        {
-                            getMethods();
-                            return null;
-                        }
-                    }
-                );
-            } catch (PrivilegedActionException pae) {
-                throw new KeyException("ECKeyValue not supported",
-                                        pae.getException());
-            }
-            Object[] args = new Object[] { ecPoint, ecParams.getCurve() };
-            try {
-                ecPublicKey = (byte[])encodePoint.invoke(null, args);
-            } catch (IllegalAccessException iae) {
-                throw new KeyException(iae);
-            } catch (InvocationTargetException ite) {
-                throw new KeyException(ite);
-            }
+            ecPublicKey = encodePoint(ecPoint, ecParams.getCurve());
         }
 
         EC(Element dmElem) throws MarshalException {
             super(dmElem);
         }
 
-        void getMethods() throws ClassNotFoundException, NoSuchMethodException {
-            Class<?> c  = Class.forName("sun.security.util.ECParameters");
-            Class<?>[] params = new Class<?>[] { ECPoint.class,
-                                                 EllipticCurve.class };
-            encodePoint = c.getMethod("encodePoint", params);
-            params = new Class<?>[] { ECParameterSpec.class };
-            getCurveName = c.getMethod("getCurveName", params);
-            params = new Class<?>[] { byte[].class, EllipticCurve.class };
-            decodePoint = c.getMethod("decodePoint", params);
-            c  = Class.forName("sun.security.util.NamedCurve");
-            params = new Class<?>[] { String.class };
-            getECParameterSpec = c.getMethod("getECParameterSpec", params);
+        private static ECPoint decodePoint(byte[] data, EllipticCurve curve)
+                throws IOException {
+            if ((data.length == 0) || (data[0] != 4)) {
+                throw new IOException("Only uncompressed point format " +
+                                      "supported");
+            }
+            // Per ANSI X9.62, an encoded point is a 1 byte type followed by
+            // ceiling(log base 2 field-size / 8) bytes of x and the same of y.
+            int n = (data.length - 1) / 2;
+            if (n != ((curve.getField().getFieldSize() + 7) >> 3)) {
+                throw new IOException("Point does not match field size");
+            }
+
+            byte[] xb = Arrays.copyOfRange(data, 1, 1 + n);
+            byte[] yb = Arrays.copyOfRange(data, n + 1, n + 1 + n);
+
+            return new ECPoint(new BigInteger(1, xb), new BigInteger(1, yb));
+        }
+
+        private static byte[] encodePoint(ECPoint point, EllipticCurve curve) {
+            // get field size in bytes (rounding up)
+            int n = (curve.getField().getFieldSize() + 7) >> 3;
+            byte[] xb = trimZeroes(point.getAffineX().toByteArray());
+            byte[] yb = trimZeroes(point.getAffineY().toByteArray());
+            if ((xb.length > n) || (yb.length > n)) {
+                throw new RuntimeException("Point coordinates do not " +
+                                           "match field size");
+            }
+            byte[] b = new byte[1 + (n << 1)];
+            b[0] = 4; // uncompressed
+            System.arraycopy(xb, 0, b, n - xb.length + 1, xb.length);
+            System.arraycopy(yb, 0, b, b.length - yb.length, yb.length);
+            return b;
+        }
+
+        private static byte[] trimZeroes(byte[] b) {
+            int i = 0;
+            while ((i < b.length - 1) && (b[i] == 0)) {
+                i++;
+            }
+            if (i == 0) {
+                return b;
+            }
+            return Arrays.copyOfRange(b, i, b.length);
+        }
+
+        private static String getCurveOid(ECParameterSpec params) {
+            // Check that the params represent the secp256r1 curve
+            // If so, return the object identifier of the curve
+            int fieldSize = params.getCurve().getField().getFieldSize();
+            if (SECP256R1.getCurve().getField().getFieldSize() == fieldSize
+                && SECP256R1.getCurve().equals(params.getCurve())
+                && SECP256R1.getGenerator().equals(params.getGenerator())
+                && SECP256R1.getOrder().equals(params.getOrder())
+                && SECP256R1.getCofactor() == params.getCofactor()) {
+                return SECP256R1.getObjectId();
+            }
+            return null;
+        }
+
+        private static ECParameterSpec getECParameterSpec(String oid) {
+            if (oid.equals(SECP256R1.getObjectId())) {
+                return SECP256R1;
+            }
+            return null;
         }
 
         void marshalPublicKey(Node parent, Document doc, String dsPrefix,
@@ -391,14 +448,11 @@
                                                            XMLDSIG_11_XMLNS,
                                                            prefix);
             Object[] args = new Object[] { ecParams };
-            try {
-                String oid = (String) getCurveName.invoke(null, args);
-                DOMUtils.setAttribute(namedCurveElem, "URI", "urn:oid:" + oid);
-            } catch (IllegalAccessException iae) {
-                throw new MarshalException(iae);
-            } catch (InvocationTargetException ite) {
-                throw new MarshalException(ite);
+            String oid = getCurveOid(ecParams);
+            if (oid == null) {
+                throw new MarshalException("Invalid ECParameterSpec");
             }
+            DOMUtils.setAttribute(namedCurveElem, "URI", "urn:oid:" + oid);
             String qname = (prefix == null || prefix.length() == 0)
                        ? "xmlns" : "xmlns:" + prefix;
             namedCurveElem.setAttributeNS("http://www.w3.org/2000/xmlns/",
@@ -422,21 +476,6 @@
                         ("unable to create EC KeyFactory: " + e.getMessage());
                 }
             }
-            try {
-                AccessController.doPrivileged(
-                    new PrivilegedExceptionAction<Void>() {
-                        public Void run() throws
-                            ClassNotFoundException, NoSuchMethodException
-                        {
-                            getMethods();
-                            return null;
-                        }
-                    }
-                );
-            } catch (PrivilegedActionException pae) {
-                throw new MarshalException("ECKeyValue not supported",
-                                           pae.getException());
-            }
             ECParameterSpec ecParams = null;
             Element curElem = DOMUtils.getFirstChildElement(kvtElem);
             if (curElem.getLocalName().equals("ECParameters")) {
@@ -447,14 +486,9 @@
                 // strip off "urn:oid"
                 if (uri.startsWith("urn:oid:")) {
                     String oid = uri.substring(8);
-                    try {
-                        Object[] args = new Object[] { oid };
-                        ecParams = (ECParameterSpec)
-                                    getECParameterSpec.invoke(null, args);
-                    } catch (IllegalAccessException iae) {
-                        throw new MarshalException(iae);
-                    } catch (InvocationTargetException ite) {
-                        throw new MarshalException(ite);
+                    ecParams = getECParameterSpec(oid);
+                    if (ecParams == null) {
+                        throw new MarshalException("Invalid curve OID");
                     }
                 } else {
                     throw new MarshalException("Invalid NamedCurve URI");
@@ -464,24 +498,43 @@
             }
             curElem = DOMUtils.getNextSiblingElement(curElem, "PublicKey");
             ECPoint ecPoint = null;
+
             try {
-                Object[] args = new Object[] { Base64.decode(curElem),
-                                               ecParams.getCurve() };
-                ecPoint = (ECPoint)decodePoint.invoke(null, args);
+                ecPoint = decodePoint(Base64.decode(curElem),
+                                      ecParams.getCurve());
             } catch (Base64DecodingException bde) {
                 throw new MarshalException("Invalid EC PublicKey", bde);
-            } catch (IllegalAccessException iae) {
-                throw new MarshalException(iae);
-            } catch (InvocationTargetException ite) {
-                throw new MarshalException(ite);
+            } catch (IOException ioe) {
+                throw new MarshalException("Invalid EC Point", ioe);
             }
-/*
-                ecPoint = sun.security.util.ECParameters.decodePoint(
-                    Base64.decode(curElem), ecParams.getCurve());
-*/
+
             ECPublicKeySpec spec = new ECPublicKeySpec(ecPoint, ecParams);
             return generatePublicKey(eckf, spec);
         }
+
+        static final class Curve extends ECParameterSpec {
+            private final String name;
+            private final String oid;
+
+            Curve(String name, String oid, EllipticCurve curve,
+                  ECPoint g, BigInteger n, int h) {
+                super(curve, g, n, h);
+                this.name = name;
+                this.oid = oid;
+            }
+
+            private String getName() {
+                return name;
+            }
+
+            private String getObjectId() {
+                return oid;
+            }
+        }
+    }
+
+    private static BigInteger bigInt(String s) {
+        return new BigInteger(s, 16);
     }
 
     static final class Unknown extends DOMKeyValue {
--- a/jdk/test/ProblemList.txt	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/ProblemList.txt	Mon Jan 19 11:35:45 2015 +0000
@@ -154,6 +154,9 @@
 com/sun/management/OperatingSystemMXBean/GetSystemCpuLoad.java  aix-all
 javax/management/MBeanServer/OldMBeanServerTest.java            aix-all
 
+# 8042215
+javax/management/remote/mandatory/notif/NotifReconnectDeadlockTest.java			generic-all
+
 ############################################################################
 
 # jdk_math
--- a/jdk/test/com/sun/corba/5036554/TestCorbaBug.sh	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/com/sun/corba/5036554/TestCorbaBug.sh	Mon Jan 19 11:35:45 2015 +0000
@@ -75,13 +75,13 @@
 mkdir bug
 
 cp ${TESTSRC}${FS}bug.idl .
-${TESTJAVA}${FS}bin${FS}idlj bug.idl
+${COMPILEJAVA}${FS}bin${FS}idlj bug.idl
 
 cp ${TESTSRC}${FS}JavaBug.java bug
 
 chmod -fR 777 bug
 
-${TESTJAVA}${FS}bin${FS}javac -d . bug${FS}*.java
+${COMPILEJAVA}${FS}bin${FS}javac -d . bug${FS}*.java
 
 ${TESTJAVA}${FS}bin${FS}java ${TESTVMOPTS} -cp . bug/JavaBug > test.out 2>&1 
 
--- a/jdk/test/com/sun/corba/cachedSocket/7056731.sh	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/com/sun/corba/cachedSocket/7056731.sh	Mon Jan 19 11:35:45 2015 +0000
@@ -55,8 +55,8 @@
 cp -r ${TESTSRC}${FS}*.java  ${TESTSRC}${FS}Hello.idl .
 echo "Testing...please wait"
 
-${TESTJAVA}${FS}bin${FS}idlj -fall Hello.idl
-${TESTJAVA}${FS}bin${FS}javac *.java HelloApp/*.java
+${COMPILEJAVA}${FS}bin${FS}idlj -fall Hello.idl
+${COMPILEJAVA}${FS}bin${FS}javac *.java HelloApp/*.java
 
 echo "starting orbd"
 ${TESTJAVA}${FS}bin${FS}orbd -ORBInitialPort $PORT -ORBInitialHost localhost &
--- a/jdk/test/com/sun/crypto/provider/Cipher/DES/TestUtility.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/com/sun/crypto/provider/Cipher/DES/TestUtility.java	Mon Jan 19 11:35:45 2015 +0000
@@ -27,39 +27,52 @@
 
 public class TestUtility {
 
-    private static final String digits = "0123456789abcdef";
+    private static final String DIGITS = "0123456789abcdef";
 
-    public TestUtility() {
+    private TestUtility() {
 
     }
 
     public static String hexDump(byte[] bytes) {
 
-        StringBuffer buf = new StringBuffer (bytes.length * 2);
-        int  i;
+        StringBuilder buf = new StringBuilder(bytes.length * 2);
+        int i;
 
-        buf.append ("    ");                    // four spaces
+        buf.append("    "); // four spaces
         for (i = 0; i < bytes.length; i++) {
-            buf.append (digits.charAt ((bytes[i] >> 4) & 0x0f));
-            buf.append (digits.charAt (bytes[i] & 0x0f));
-            if (((i + 1) % 32) == 0) {
-                if ((i +  1) != bytes.length)
-                    buf.append ("\n    ");      // line after four words
-            } else if (((i + 1) % 4) == 0)
-                buf.append (' ');               // space between words
+            buf.append(DIGITS.charAt(bytes[i] >> 4 & 0x0f));
+            buf.append(DIGITS.charAt(bytes[i] & 0x0f));
+            if ((i + 1) % 32 == 0) {
+                if (i + 1 != bytes.length) {
+                    buf.append("\n    "); // line after four words
+                }
+            } else if ((i + 1) % 4 == 0) {
+                buf.append(' '); // space between words
+            }
         }
-        return buf.toString ();
+        return buf.toString();
     }
 
+    public static String hexDump(byte[] bytes, int index) {
+        StringBuilder buf = new StringBuilder(bytes.length * 2);
+        int i;
+
+        buf.append("    "); // four spaces
+        buf.append(DIGITS.charAt(bytes[index] >> 4 & 0x0f));
+        buf.append(DIGITS.charAt(bytes[index] & 0x0f));
+        return buf.toString();
+    }
 
     public static boolean equalsBlock(byte[] b1, byte[] b2) {
 
-        if (b1.length != b2.length)
+        if (b1.length != b2.length) {
             return false;
+        }
 
-        for (int i=0; i<b1.length; i++) {
-            if (b1[i] != b2[i])
+        for (int i = 0; i < b1.length; i++) {
+            if (b1[i] != b2[i]) {
                 return false;
+            }
         }
 
         return true;
@@ -67,9 +80,10 @@
 
     public static boolean equalsBlock(byte[] b1, byte[] b2, int len) {
 
-        for (int i=0; i<len; i++) {
-            if (b1[i] != b2[i])
+        for (int i = 0; i < len; i++) {
+            if (b1[i] != b2[i]) {
                 return false;
+            }
         }
 
         return true;
--- a/jdk/test/java/io/etc/FailingFlushAndClose.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/io/etc/FailingFlushAndClose.java	Mon Jan 19 11:35:45 2015 +0000
@@ -25,7 +25,7 @@
 
 /**
  * @test
- * @bug 7015589
+ * @bug 7015589 8054565
  * @summary Test that buffering streams are considered closed even when the
  *    close or flush from the underlying stream fails.
  */
@@ -165,7 +165,7 @@
         }
     }
 
-    static void testFailingClose(InputStream in) throws IOException {
+    static InputStream testFailingClose(InputStream in) throws IOException {
         System.out.println(in.getClass());
         in.read(new byte[100]);
         try {
@@ -176,9 +176,10 @@
             in.read(new byte[100]);
             fail("read did not fail");
         } catch (IOException expected) { }
+        return in;
     }
 
-    static void testFailingClose(OutputStream out) throws IOException {
+    static OutputStream testFailingClose(OutputStream out) throws IOException {
         System.out.println(out.getClass());
         out.write(1);
         try {
@@ -190,9 +191,10 @@
             if (!(out instanceof BufferedOutputStream))
                 fail("write did not fail");
         } catch (IOException expected) { }
+        return out;
     }
 
-    static void testFailingFlush(OutputStream out) throws IOException {
+    static OutputStream testFailingFlush(OutputStream out) throws IOException {
         System.out.println(out.getClass());
         out.write(1);
         try {
@@ -206,9 +208,27 @@
                 fail("close did not fail");
             } catch (IOException expected) { }
         }
+        return out;
     }
 
-    static void testFailingClose(Reader r) throws IOException {
+    static void closeAgain(InputStream in) throws IOException {
+        // assert the given stream should already be closed.
+        try {
+            in.close();
+        } catch (IOException expected) {
+            fail("unexpected IOException from subsequent close");
+        }
+    }
+    static void closeAgain(OutputStream out) throws IOException {
+        // assert the given stream should already be closed.
+        try {
+            out.close();
+        } catch (IOException expected) {
+            fail("unexpected IOException from subsequent close");
+        }
+    }
+
+    static Reader testFailingClose(Reader r) throws IOException {
         System.out.println(r.getClass());
         r.read(new char[100]);
         try {
@@ -219,9 +239,10 @@
             r.read(new char[100]);
             fail("read did not fail");
         } catch (IOException expected) { }
+        return r;
     }
 
-    static void testFailingClose(Writer w) throws IOException {
+    static Writer testFailingClose(Writer w) throws IOException {
         System.out.println(w.getClass());
         w.write("message");
         try {
@@ -232,9 +253,10 @@
             w.write("another message");
             fail("write did not fail");
         } catch (IOException expected) { }
+        return w;
     }
 
-    static void testFailingFlush(Writer w) throws IOException {
+    static Writer testFailingFlush(Writer w) throws IOException {
         System.out.println(w.getClass());
         w.write("message");
         try {
@@ -249,18 +271,38 @@
                 fail("close did not fail");
             } catch (IOException expected) { }
         }
+        return w;
+    }
+
+    static Reader closeAgain(Reader r) throws IOException {
+        // assert the given stream should already be closed.
+        try {
+            r.close();
+        } catch (IOException expected) {
+            fail("unexpected IOException from subsequent close");
+        }
+        return r;
+    }
+    static Writer closeAgain(Writer w) throws IOException {
+        // assert the given stream should already be closed.
+        try {
+            w.close();
+        } catch (IOException expected) {
+            fail("unexpected IOException from subsequent close");
+        }
+        return w;
     }
 
     public static void main(String[] args) throws IOException {
 
-        testFailingClose(new BufferedInputStream(new FailingCloseInputStream()));
-        testFailingClose(new BufferedOutputStream(new FailingCloseOutputStream()));
+        closeAgain(testFailingClose(new BufferedInputStream(new FailingCloseInputStream())));
+        closeAgain(testFailingClose(new BufferedOutputStream(new FailingCloseOutputStream())));
 
-        testFailingClose(new BufferedReader(new FailingCloseReader()));
-        testFailingClose(new BufferedWriter(new FailingCloseWriter()));
+        closeAgain(testFailingClose(new BufferedReader(new FailingCloseReader())));
+        closeAgain(testFailingClose(new BufferedWriter(new FailingCloseWriter())));
 
-        testFailingFlush(new BufferedOutputStream(new FailingFlushOutputStream()));
-        testFailingFlush(new BufferedWriter(new FailingFlushWriter()));
+        closeAgain(testFailingFlush(new BufferedOutputStream(new FailingFlushOutputStream())));
+        closeAgain(testFailingFlush(new BufferedWriter(new FailingFlushWriter())));
 
         if (failed > 0)
             throw new RuntimeException(failed + " test(s) failed - see log for details");
--- a/jdk/test/java/math/BigInteger/BigIntegerTest.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/math/BigInteger/BigIntegerTest.java	Mon Jan 19 11:35:45 2015 +0000
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 4181191 4161971 4227146 4194389 4823171 4624738 4812225 4837946
+ * @bug 4181191 4161971 4227146 4194389 4823171 4624738 4812225 4837946 4026465
  * @summary tests methods in BigInteger
  * @run main/timeout=400 BigIntegerTest
  * @author madbot
@@ -89,6 +89,120 @@
     static Random rnd = new Random();
     static boolean failure = false;
 
+    public static void constructor() {
+        int failCount = 0;
+
+        // --- guard condition tests for array indexing ---
+
+        int arrayLength = 23;
+        int halfLength = arrayLength/2;
+        byte[] array = new byte[arrayLength];
+        rnd.nextBytes(array);
+
+        int[][] offLen = new int[][] { // offset, length, num exceptions
+            {-1, arrayLength, 1},                         // negative offset
+            {0, arrayLength, 0},                          // OK
+            {1, arrayLength, 1},                          // length overflow
+            {arrayLength - 1, 1, 0},                      // OK
+            {arrayLength, 1, 1},                          // offset overflow
+            {0, -1, 1},                                   // negative length
+            {halfLength, arrayLength - halfLength + 1, 1} // length overflow
+        };
+
+        // two's complement
+        for (int[] ol : offLen) {
+            int numExceptions = 0;
+            try {
+                BigInteger bi = new BigInteger(array, ol[0], ol[1]);
+            } catch (IndexOutOfBoundsException e) {
+                numExceptions++;
+            }
+            if (numExceptions != ol[2]) {
+                System.err.println("IndexOutOfBoundsException did not occur for "
+                    + " two's complement constructor with parameters offset "
+                    + ol[0] + " and length " + ol[1]);
+                failCount++;
+            }
+        }
+
+        // sign-magnitude
+        for (int[] ol : offLen) {
+            int numExceptions = 0;
+            try {
+                BigInteger bi = new BigInteger(1, array, ol[0], ol[1]);
+            } catch (IndexOutOfBoundsException e) {
+                numExceptions++;
+            }
+            if (numExceptions != ol[2]) {
+                System.err.println("IndexOutOfBoundsException did not occur for "
+                    + " sign-magnitude constructor with parameters offset "
+                    + ol[0] + " and length " + ol[1]);
+                failCount++;
+            }
+        }
+
+        // --- tests for creation of zero-valued BigIntegers ---
+
+        byte[] magZeroLength = new byte[0];
+        for (int signum = -1; signum <= 1; signum++) {
+            BigInteger bi = new BigInteger(signum, magZeroLength);
+            if (bi.compareTo(BigInteger.ZERO) != 0) {
+                System.err.println("A: Zero length BigInteger != 0 for signum " + signum);
+                failCount++;
+            }
+        }
+
+        for (int signum = -1; signum <= 1; signum++) {
+            BigInteger bi = new BigInteger(signum, magZeroLength, 0, 0);
+            if (bi.compareTo(BigInteger.ZERO) != 0) {
+                System.err.println("B: Zero length BigInteger != 0 for signum " + signum);
+                failCount++;
+            }
+        }
+
+        byte[] magNonZeroLength = new byte[42];
+        rnd.nextBytes(magNonZeroLength);
+        for (int signum = -1; signum <= 1; signum++) {
+            BigInteger bi = new BigInteger(signum, magNonZeroLength, 0, 0);
+            if (bi.compareTo(BigInteger.ZERO) != 0) {
+                System.err.println("C: Zero length BigInteger != 0 for signum " + signum);
+                failCount++;
+            }
+        }
+
+        // --- tests for accurate creation of non-zero BigIntegers ---
+
+        for (int i = 0; i < SIZE; i++) {
+            // create reference value via a different code path from those tested
+            BigInteger reference = new BigInteger(2 + rnd.nextInt(336), 4, rnd);
+
+            byte[] refArray = reference.toByteArray();
+            int refLen = refArray.length;
+            int factor = rnd.nextInt(5);
+            int objLen = refArray.length + factor*rnd.nextInt(refArray.length) + 1;
+            int offset = rnd.nextInt(objLen - refLen);
+            byte[] objArray = new byte[objLen];
+            System.arraycopy(refArray, 0, objArray, offset, refLen);
+
+            BigInteger twosComp = new BigInteger(objArray, offset, refLen);
+            if (twosComp.compareTo(reference) != 0) {
+                System.err.println("Two's-complement BigInteger not equal for offset " +
+                        offset + " and length " + refLen);
+                failCount++;
+            }
+
+            boolean isNegative = rnd.nextBoolean();
+            BigInteger signMag = new BigInteger(isNegative ? -1 : 1, objArray, offset, refLen);
+            if (signMag.compareTo(isNegative ? reference.negate() : reference) != 0) {
+                System.err.println("Sign-magnitude BigInteger not equal for offset " +
+                        offset + " and length " + refLen);
+                failCount++;
+            }
+        }
+
+        report("Constructor", failCount);
+    }
+
     public static void pow(int order) {
         int failCount1 = 0;
 
@@ -961,6 +1075,8 @@
         if (args.length >3)
             order4 = (int)((Integer.parseInt(args[3]))* 3.333);
 
+        constructor();
+
         prime();
         nextProbablePrime();
 
--- a/jdk/test/java/nio/channels/FileChannel/TransferToChannel.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/nio/channels/FileChannel/TransferToChannel.java	Mon Jan 19 11:35:45 2015 +0000
@@ -25,7 +25,7 @@
  * @bug 4652496
  * @summary Test transferTo with different target channels
  * @run main TransferToChannel
- * @run main/othervm -Djdk.net.enableFastFileTransfer TransferToChannel
+ * @run main/othervm -Djdk.nio.enableFastFileTransfer TransferToChannel
  */
 
 import java.nio.channels.FileChannel;
--- a/jdk/test/java/rmi/activation/Activatable/checkActivateRef/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/activation/Activatable/checkActivateRef/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -4,8 +4,8 @@
 
 grant {
   permission java.io.FilePermission "..${/}..${/}test.props", "read";
+  permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+  permission java.util.PropertyPermission "test.*", "read";
 
-  // test needs to communicate with the activation system
-  permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
   permission java.lang.RuntimePermission "getClassLoader";
 };
--- a/jdk/test/java/rmi/activation/Activatable/checkAnnotations/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/activation/Activatable/checkAnnotations/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -1,10 +1,9 @@
 /*
- * security policy used by activation groups.
+ * security policy used by activation groups
  */
 
 grant {
   permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
-  // test needs to communicate with the activation system
   permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+  permission java.util.PropertyPermission "test.*", "read";
 };
--- a/jdk/test/java/rmi/activation/Activatable/checkRegisterInLog/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/activation/Activatable/checkRegisterInLog/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -4,10 +4,6 @@
 
 grant {
   permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
-  // allow remote objects to be exported on arbitrary ports.
-  permission java.net.SocketPermission "*:1024-", "connect,accept";
-
-  // allow exporting object with non-public remote interface
-  permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe";
+  permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+  permission java.util.PropertyPermission "test.*", "read";
 };
--- a/jdk/test/java/rmi/activation/Activatable/createPrivateActivable/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/activation/Activatable/createPrivateActivable/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -1,13 +1,9 @@
 /*
- * security policy used activation groups
+ * security policy used by activation groups
  */
 
 grant {
   permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
-  // test needs to communicate with the activation system
   permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
-
-  // allow exporting object with non-public remote interface
-  permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe";
+  permission java.util.PropertyPermission "test.*", "read";
 };
--- a/jdk/test/java/rmi/activation/Activatable/downloadParameterClass/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/activation/Activatable/downloadParameterClass/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -1,14 +1,15 @@
 /*
- * security policy used exec'ed activation groups
+ * security policy used by activation groups
  */
 
 grant {
+  permission java.io.FilePermission "..${/}..${/}test.props", "read";
+  permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+  permission java.util.PropertyPermission "test.*", "read";
+
   // need to load custom security manager and activation group from a new codebase
   permission java.io.FilePermission ".${/}codebase1", "read,write,delete";
   permission java.io.FilePermission ".${/}codebase1${/}-", "read,write";
   permission java.io.FilePermission ".${/}codebase2", "read,write,delete";
   permission java.io.FilePermission ".${/}codebase2${/}-", "read,write,delete";
-
-  // allow remote objects to be exported on arbitrary ports.
-  permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
 };
--- a/jdk/test/java/rmi/activation/Activatable/elucidateNoSuchMethod/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/activation/Activatable/elucidateNoSuchMethod/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -1,12 +1,13 @@
 /*
- * security policy used activation groups
+ * security policy used by activation groups
  */
 
 grant {
+  permission java.io.FilePermission "..${/}..${/}test.props", "read";
+  permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+  permission java.util.PropertyPermission "test.*", "read";
+
   // Needed because of bug#: 4182104
   permission java.lang.RuntimePermission "modifyThreadGroup";
   permission java.lang.RuntimePermission "modifyThread";
-
-  // allow remote objects to be exported on arbitrary ports.
-  permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
 };
--- a/jdk/test/java/rmi/activation/Activatable/extLoadedImpl/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/activation/Activatable/extLoadedImpl/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -1,8 +1,9 @@
 /*
- * security policy used exec'ed activation groups
+ * security policy used by activation groups
  */
 
 grant {
-  // allow remote objects to be exported on arbitrary ports.
+  permission java.io.FilePermission "..${/}..${/}test.props", "read";
   permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+  permission java.util.PropertyPermission "test.*", "read";
 };
--- a/jdk/test/java/rmi/activation/Activatable/forceLogSnapshot/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/activation/Activatable/forceLogSnapshot/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -3,9 +3,7 @@
  */
 
 grant {
-  // allow remote objects to be exported on arbitrary ports.
+  permission java.io.FilePermission "..${/}..${/}test.props", "read";
   permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
-
-  // allow exporting object with non-public remote interface
-  permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe";
+  permission java.util.PropertyPermission "test.*", "read";
 };
--- a/jdk/test/java/rmi/activation/Activatable/inactiveGroup/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/activation/Activatable/inactiveGroup/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -4,10 +4,6 @@
 
 grant {
   permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
-  // allow remote objects to be exported on arbitrary ports.
   permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
-
-  // allow exporting object with non-public remote interface
-  permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe";
+  permission java.util.PropertyPermission "test.*", "read";
 };
--- a/jdk/test/java/rmi/activation/Activatable/nestedActivate/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/activation/Activatable/nestedActivate/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -1,13 +1,9 @@
 /*
- * security policy used by test activation groups
+ * security policy used by activation groups
  */
 
 grant {
   permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
-  // allow remote objects to be exported on arbitrary ports.
   permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
-
-  // allow exporting of non-public remote interface
-  permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe";
+  permission java.util.PropertyPermission "test.*", "read";
 };
--- a/jdk/test/java/rmi/activation/Activatable/nonExistentActivatable/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/activation/Activatable/nonExistentActivatable/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -4,7 +4,6 @@
 
 grant {
   permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
-  // allow remote objects to be exported on arbitrary ports.
   permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+  permission java.util.PropertyPermission "test.*", "read";
 };
--- a/jdk/test/java/rmi/activation/Activatable/restartCrashedService/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/activation/Activatable/restartCrashedService/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -1,8 +1,9 @@
 /*
- * security policy used by test activation groups
+ * security policy used by activation groups
  */
 
 grant {
-  // test needs to communicate with the activation system
+  permission java.io.FilePermission "..${/}..${/}test.props", "read";
   permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+  permission java.util.PropertyPermission "test.*", "read";
 };
--- a/jdk/test/java/rmi/activation/Activatable/restartLatecomer/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/activation/Activatable/restartLatecomer/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -3,6 +3,7 @@
  */
 
 grant {
-  // allow remote objects to be exported on arbitrary ports.
+  permission java.io.FilePermission "..${/}..${/}test.props", "read";
   permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+  permission java.util.PropertyPermission "test.*", "read";
 };
--- a/jdk/test/java/rmi/activation/Activatable/restartService/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/activation/Activatable/restartService/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -3,6 +3,7 @@
  */
 
 grant {
-  // allow remote objects to be exported on arbitrary ports.
+  permission java.io.FilePermission "..${/}..${/}test.props", "read";
   permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+  permission java.util.PropertyPermission "test.*", "read";
 };
--- a/jdk/test/java/rmi/activation/Activatable/shutdownGracefully/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/activation/Activatable/shutdownGracefully/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -1,10 +1,9 @@
 /*
- * security policy used activation groups
+ * security policy used by activation groups
  */
 
 grant {
   permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
-  // test needs to communicate with the activation system
   permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+  permission java.util.PropertyPermission "test.*", "read";
 };
--- a/jdk/test/java/rmi/activation/Activatable/unregisterInactive/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/activation/Activatable/unregisterInactive/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -4,7 +4,6 @@
 
 grant {
   permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
-  // allow remote objects to be exported on arbitrary ports.
   permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+  permission java.util.PropertyPermission "test.*", "read";
 };
--- a/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -1,8 +1,9 @@
 /*
- * security policy used activation groups
+ * security policy used by activation groups
  */
 
 grant {
-  // test needs to communicate with the activation system
+  permission java.io.FilePermission "..${/}..${/}test.props", "read";
   permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+  permission java.util.PropertyPermission "test.*", "read";
 };
--- a/jdk/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -1,10 +1,11 @@
 /*
- * security policy used by downloaded activation group
+ * security policy used by activation groups
  */
 
 grant {
   permission java.io.FilePermission "..${/}..${/}test.props", "read";
+  permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+  permission java.util.PropertyPermission "test.*", "read";
 
   permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.server";
-  permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
 };
--- a/jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -4,10 +4,6 @@
 
 grant {
   permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
-  // accomodate property used by this test.
-  permission java.util.PropertyPermission "test.message", "read";
-
-  // test needs to communicate with the activation system
   permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+  permission java.util.PropertyPermission "test.*", "read";
 };
--- a/jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -1,13 +1,11 @@
 /*
- * security policy used by activation groups.
+ * security policy used by activation groups
  */
 
 grant {
   permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
-  // give the group permission to create a class that the main test process can not create
-  permission java.lang.RuntimePermission "accessClassInPackage.sun.security.provider";
+  permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+  permission java.util.PropertyPermission "test.*", "read";
 
-  // test needs to communicate with the activation system
-  permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+  permission java.lang.RuntimePermission "accessClassInPackage.sun.security.provider";
 };
--- a/jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -4,8 +4,6 @@
 
 grant {
   permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
-  // test needs to communicate with the activation system
   permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
-  permission java.util.PropertyPermission "unregisterGroup.port", "read";
+  permission java.util.PropertyPermission "test.*", "read";
 };
--- a/jdk/test/java/rmi/activation/CommandEnvironment/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/activation/CommandEnvironment/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -1,8 +1,9 @@
 /*
- * security policy used by activation groups.
+ * security policy used by activation groups
  */
 
 grant {
-  // test needs to communicate with the activation system
+  permission java.io.FilePermission "..${/}..${/}test.props", "read";
   permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+  permission java.util.PropertyPermission "test.*", "read";
 };
--- a/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/group.security.policy	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/group.security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -1,11 +1,9 @@
 /*
- * security policy used by the rmid process exec'ed by a running
- * instance of the test.
+ * security policy used by activation groups
  */
 
 grant {
   permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
-  // test needs to communicate with the activation system
   permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+  permission java.util.PropertyPermission "test.*", "read";
 };
--- a/jdk/test/java/rmi/server/RemoteServer/setLogPermission/SetLogPermission.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/server/RemoteServer/setLogPermission/SetLogPermission.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -27,7 +27,7 @@
  * The RemoteServer.setLog method requires
  * java.util.log.LoggingPermission("control").
  * @author Ann Wollrath
- * @run main/othervm/policy=java.policy SetLogPermission
+ * @run main/othervm/policy=security.policy SetLogPermission
  */
 
 import java.rmi.server.RemoteServer;
--- a/jdk/test/java/rmi/server/RemoteServer/setLogPermission/java.policy	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-grant {
-    permission java.util.logging.LoggingPermission "control";
-};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/rmi/server/RemoteServer/setLogPermission/security.policy	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,3 @@
+grant {
+    permission java.util.logging.LoggingPermission "control";
+};
--- a/jdk/test/java/rmi/testlibrary/ActivationLibrary.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/testlibrary/ActivationLibrary.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -40,20 +40,6 @@
  * objects.
  */
 public class ActivationLibrary {
-    /** time safeDestroy should wait before failing on shutdown rmid */
-    private static final int SAFE_WAIT_TIME;
-    static {
-        int slopFactor = 1;
-        try {
-            slopFactor = Integer.valueOf(
-                TestLibrary.getExtraProperty("jcov.sleep.multiplier","1"));
-        } catch (NumberFormatException ignore) {}
-        SAFE_WAIT_TIME = 60000 * slopFactor;
-    }
-
-    private static final String SYSTEM_NAME =
-        ActivationSystem.class.getName();
-
     private static void mesg(Object mesg) {
         System.err.println("ACTIVATION_LIBRARY: " + mesg.toString());
     }
@@ -63,20 +49,19 @@
      */
     public static void deactivate(Remote remote,
                                   ActivationID id) {
-        // We do as much as 50 deactivation trials, each separated by
-        // at least 100 milliseconds sleep time (max sleep time of 5 secs).
-        final long deactivateSleepTime = 100;
-        long stopTime = System.currentTimeMillis() + deactivateSleepTime * 50;
-        while (System.currentTimeMillis() < stopTime) {
+        final long POLLTIME_MS = 100L;
+        final long DEACTIVATE_TIME_MS = 30_000L;
+
+        long startTime = System.currentTimeMillis();
+        long deadline = TestLibrary.computeDeadline(startTime, DEACTIVATE_TIME_MS);
+
+        while (System.currentTimeMillis() < deadline) {
             try {
                 if (Activatable.inactive(id) == true) {
                     mesg("inactive successful");
                     return;
                 } else {
-                    mesg("inactive trial failed. Sleeping " +
-                         deactivateSleepTime +
-                         " milliseconds before next trial");
-                    Thread.sleep(deactivateSleepTime);
+                    Thread.sleep(POLLTIME_MS);
                 }
             } catch (InterruptedException e) {
                 Thread.currentThread().interrupt();
@@ -95,7 +80,8 @@
             }
         }
 
-        mesg("unable to inactivate after several attempts");
+        mesg("unable to inactivate after " +
+            (System.currentTimeMillis() - startTime) + "ms.");
         mesg("unexporting object forcibly instead");
 
         try {
--- a/jdk/test/java/rmi/testlibrary/JavaVM.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/testlibrary/JavaVM.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -194,7 +194,7 @@
             throws InterruptedException, TimeoutException {
         if (vm == null)
             throw new IllegalStateException("can't wait for JavaVM that isn't running");
-        long deadline = computeDeadline(System.currentTimeMillis(), timeout);
+        long deadline = TestLibrary.computeDeadline(System.currentTimeMillis(), timeout);
 
         while (true) {
             try {
@@ -218,21 +218,4 @@
         start();
         return waitFor();
     }
-
-    /**
-     * Computes a deadline from a timestamp and a timeout value.
-     * Maximum timeout (before multipliers are applied) is one hour.
-     */
-    public static long computeDeadline(long timestamp, long timeout) {
-        final long MAX_TIMEOUT_MS = 3_600_000L;
-
-        if (timeout < 0L || timeout > MAX_TIMEOUT_MS) {
-            throw new IllegalArgumentException("timeout " + timeout + "ms out of range");
-        }
-
-        // TODO apply test.timeout.factor (and possibly jcov.sleep.multiplier)
-        // here instead of upstream
-
-        return timestamp + timeout;
-    }
 }
--- a/jdk/test/java/rmi/testlibrary/RMID.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/testlibrary/RMID.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -249,15 +249,15 @@
         mesg("Starting rmid on port " + port + ".");
         super.start();
 
-        int slopFactor = 1;
-        try {
-            slopFactor = Integer.valueOf(
-                TestLibrary.getExtraProperty("jcov.sleep.multiplier","1"));
-        } catch (NumberFormatException ignore) {}
-        waitTime = waitTime * slopFactor;
+        // int slopFactor = 1;
+        // try {
+        //     slopFactor = Integer.valueOf(
+        //         TestLibrary.getExtraProperty("jcov.sleep.multiplier","1"));
+        // } catch (NumberFormatException ignore) {}
+        // waitTime = waitTime * slopFactor;
 
         long startTime = System.currentTimeMillis();
-        long deadline = computeDeadline(startTime, waitTime);
+        long deadline = TestLibrary.computeDeadline(startTime, waitTime);
 
         while (true) {
             try {
--- a/jdk/test/java/rmi/testlibrary/TestLibrary.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/rmi/testlibrary/TestLibrary.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -135,7 +135,8 @@
      */
 
     public static boolean checkIfRegistryRunning(int port, int msTimeout) {
-        long stopTime = System.currentTimeMillis() + msTimeout;
+        final long POLLTIME_MS = 100L;
+        long stopTime = computeDeadline(System.currentTimeMillis(), msTimeout);
         do {
             try {
                 Registry r = LocateRegistry.getRegistry(port);
@@ -145,12 +146,12 @@
             } catch (RemoteException e) {
                 // problem - not ready ? Try again
                 try {
-                    Thread.sleep(500);
+                    Thread.sleep(POLLTIME_MS);
                 } catch (InterruptedException ie) {
                     // not expected
                 }
             }
-        } while (stopTime > System.currentTimeMillis());
+        } while (System.currentTimeMillis() < stopTime);
         return false;
     }
 
@@ -169,6 +170,31 @@
         }
     }
 
+    public static double getTimeoutFactor() {
+        String prop = getProperty("test.timeout.factor", "1.0");
+        double timeoutFactor = 1.0;
+
+        try {
+            timeoutFactor = Double.parseDouble(prop);
+        } catch (NumberFormatException ignore) { }
+
+        return timeoutFactor;
+    }
+
+    /**
+     * Computes a deadline from a timestamp and a timeout value.
+     * Maximum timeout (before multipliers are applied) is one hour.
+     */
+    public static long computeDeadline(long timestamp, long timeout) {
+        final long MAX_TIMEOUT_MS = 3_600_000L;
+
+        if (timeout < 0L || timeout > MAX_TIMEOUT_MS) {
+            throw new IllegalArgumentException("timeout " + timeout + "ms out of range");
+        }
+
+        return timestamp + (long)(timeout * getTimeoutFactor());
+    }
+
     /**
      * Property mutators
      */
--- a/jdk/test/java/util/Formatter/Basic-X.java.template	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/util/Formatter/Basic-X.java.template	Mon Jan 19 11:35:45 2015 +0000
@@ -1154,6 +1154,10 @@
         test("%.5f", "0.99960", val);
         test("%.6f", "0.999600", val);
 
+        val = new BigDecimal(BigInteger.ZERO, 6);
+        test("%.4f", "0.0000", val);
+        val = new BigDecimal(BigInteger.ZERO, -6);
+        test("%.4f", "0.0000", val);
 #end[BigDecimal]
 
 #if[float]
--- a/jdk/test/java/util/Formatter/Basic.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/util/Formatter/Basic.java	Mon Jan 19 11:35:45 2015 +0000
@@ -26,6 +26,7 @@
  * @bug 4906370 4962433 4973103 4989961 5005818 5031150 4970931 4989491 5002937
  *      5005104 5007745 5061412 5055180 5066788 5088703 6317248 6318369 6320122
  *      6344623 6369500 6534606 6282094 6286592 6476425 5063507 6469160 6476168
+ *      8059175
  *
  * @run shell/timeout=240 Basic.sh
  */
--- a/jdk/test/java/util/Formatter/BasicBigDecimal.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/java/util/Formatter/BasicBigDecimal.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1154,6 +1154,11 @@
         test("%.5f", "0.99960", val);
         test("%.6f", "0.999600", val);
 
+        val = new BigDecimal(BigInteger.ZERO, 6);
+        test("%.4f", "0.0000", val);
+
+        val = new BigDecimal(BigInteger.ZERO, -6);
+        test("%.4f", "0.0000", val);
 
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/crypto/KeyGenerator/TestKGParity.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.io.PrintStream;
+import java.lang.String;
+import java.lang.System;
+import java.security.Provider;
+import java.security.SecureRandom;
+import java.security.Security;
+import javax.crypto.KeyGenerator;
+import static java.lang.System.out;
+
+/*
+ * @test
+ * @bug 8048607
+ * @compile ../../../com/sun/crypto/provider/Cipher/DES/TestUtility.java
+ * @summary Test key generation of DES and DESEDE
+ */
+public class TestKGParity {
+
+    private static final String[] ALGORITHM_ARR = {
+        "deS", "DesEDE"
+    };
+
+    public static void main(String argv[]) throws Exception {
+
+        TestKGParity test = new TestKGParity();
+        test.run();
+    }
+
+    private void run() throws Exception {
+        Provider[] providers = Security.getProviders();
+        for (Provider p : providers) {
+            String prvName = p.getName();
+            if (prvName.startsWith("SunJCE")
+                    || prvName.startsWith("SunPKCS11-")) {
+                for (String algorithm : ALGORITHM_ARR) {
+                    if (!runTest(p, algorithm)) {
+                        throw new RuntimeException(
+                                "Test failed with provider/algorithm:"
+                                        + p.getName() + "/" + algorithm);
+                    } else {
+                        out.println("Test passed with provider/algorithm:"
+                                + p.getName() + "/" + algorithm);
+                    }
+                }
+            }
+        }
+    }
+
+    public boolean runTest(Provider p, String algo) throws Exception {
+        byte[] keyValue = null;
+        try {
+            // Initialization
+            SecureRandom sRdm = new SecureRandom();
+            KeyGenerator kg = KeyGenerator.getInstance(algo, p);
+            kg.init(sRdm);
+
+            // Generate a SecretKey and retrieve its value
+            keyValue = kg.generateKey().getEncoded();
+
+            // Verify its parity in the unit of byte
+            for (int i = 0; i < keyValue.length; i++) {
+                if (!checkParity(keyValue[i])) {
+                    out.println("Testing: "
+                        + p.getName()
+                        + "/"
+                        + algo
+                        + " failed when verify its parity in the unit of byte:"
+                        + TestUtility.hexDump(keyValue, i));
+                    return false;
+                }
+            }
+            return true;
+        } catch (Exception ex) {
+            out.println("Testing: " + p.getName() + "/" + algo
+                    + " failed with unexpected exception");
+            ex.printStackTrace();
+            throw ex;
+        }
+    }
+
+    private boolean checkParity(byte keyByte) {
+        boolean even = false;
+        byte[] PARITY_BIT_MASK = {
+                (byte) 0x40, (byte) 0x20, (byte) 0x10, (byte) 0x08,
+                (byte) 0x04, (byte) 0x02, (byte) 0x01
+        };
+
+        for (int i = 0; i < 7; i++) {
+            if ((keyByte & PARITY_BIT_MASK[i]) > 0) {
+                even = !even;
+            }
+        }
+        if (keyByte < 0) {
+            even = !even;
+        }
+
+        return even;
+    }
+}
--- a/jdk/test/javax/management/remote/mandatory/notif/NotificationBufferDeadlockTest.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/javax/management/remote/mandatory/notif/NotificationBufferDeadlockTest.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,8 @@
 /*
  * @test
  * @bug 6239400
- * @summary Tests NotificationBuffer doesn't hold locks when adding listeners.
+ * @summary Tests NotificationBuffer doesn't hold locks when adding listeners,
+ *  if test times out then deadlock is suspected.
  * @author Eamonn McManus
  * @run clean NotificationBufferDeadlockTest
  * @run build NotificationBufferDeadlockTest
@@ -38,6 +39,7 @@
 import java.util.List;
 import java.util.Set;
 import java.util.Vector;
+import java.util.concurrent.CountDownLatch;
 import javax.management.*;
 import javax.management.remote.*;
 
@@ -173,9 +175,7 @@
         for (ObjectName name : names)
             mbsc.invoke(name, "send", null, null);
 
-        if (!countListener.waiting(MAX_WAITING_TIME)) {
-            return "did not get " + names.size() + " notifs as expected\n";
-        }
+        countListener.waiting();
 
         if (!sources.containsAll(names))
             return "missing names: " + sources;
@@ -202,13 +202,13 @@
                 }
             };
             t.start();
+            System.out.println("DeadlockTest-addNotificationListener waiting for the sending thread to die...");
             try {
-                t.join(5000L);
+                t.join(); //if times out here then deadlock is suspected
+                System.out.println("DeadlockTest-addNotificationListener OK.");
             } catch (Exception e) {
                 thisFailure = "Join exception: " + e;
             }
-            if (t.isAlive())
-                thisFailure = "Deadlock detected";
         }
 
         public void send() {
@@ -244,9 +244,9 @@
                     }
                 };
                 t.start();
-                t.join(5000);
-                if (t.isAlive())
-                    failure = "Query deadlock detected";
+                System.out.println("CreateDuringQueryInvocationHandler-createMBeanIfQuery waiting for the creating thread to die...");
+                t.join();  // if times out here then deadlock is suspected
+                System.out.println("CreateDuringQueryInvocationHandler-createMBeanIfQuery OK");
             }
         }
 
@@ -264,50 +264,30 @@
 
     private static class MyListener implements NotificationListener {
         public MyListener(int waitNB) {
-            this.waitNB= waitNB;
+            count = new CountDownLatch(waitNB);
         }
 
         public void handleNotification(Notification n, Object h) {
-            System.out.println("MyListener got: "+n.getSource()+" "+n.getType());
+            System.out.println("MyListener got: " + n.getSource() + " " + n.getType());
 
-            synchronized(this) {
-                if (TESTING_TYPE.equals(n.getType())) {
-                    sources.add((ObjectName) n.getSource());
-
-                    if (sources.size() == waitNB) {
-                        this.notifyAll();
-                    }
-                }
+            if (TESTING_TYPE.equals(n.getType())) {
+                sources.add((ObjectName) n.getSource());
+                count.countDown();
             }
         }
 
-        public boolean waiting(long timeout) {
-            final long startTime = System.currentTimeMillis();
-            long toWait = timeout;
-
-            synchronized(this) {
-                while(sources.size() < waitNB && toWait > 0) {
-                    try {
-                        this.wait(toWait);
-                    } catch (InterruptedException ire) {
-                        break;
-                    }
-
-                    toWait = timeout -
-                        (System.currentTimeMillis() - startTime);
-                }
-            }
-
-            return sources.size() == waitNB;
+        public void waiting() throws InterruptedException {
+            System.out.println("MyListener-waiting ...");
+            count.await(); // if times out here then deadlock is suspected
+            System.out.println("MyListener-waiting done!");
         }
 
-        private final int waitNB;
+        private final CountDownLatch count;
     }
 
     static String thisFailure;
     static String failure;
     static int nextNameIndex;
-    static final long MAX_WAITING_TIME = 10000;
 
     private static MyListener countListener;
     private static final List<ObjectName> sources = new Vector();
--- a/jdk/test/javax/xml/crypto/dsig/GenerationTests.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/javax/xml/crypto/dsig/GenerationTests.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 /**
  * @test
  * @bug 4635230 6283345 6303830 6824440 6867348 7094155 8038184 8038349 8046949
+ *      8046724
  * @summary Basic unit tests for generating XML Signatures with JSR 105
  * @compile -XDignore.symbol.file KeySelectors.java SignatureValidator.java
  *     X509KeySelector.java GenerationTests.java
@@ -45,6 +46,13 @@
 import java.security.spec.KeySpec;
 import java.security.spec.DSAPrivateKeySpec;
 import java.security.spec.DSAPublicKeySpec;
+import java.security.spec.ECField;
+import java.security.spec.ECFieldFp;
+import java.security.spec.ECParameterSpec;
+import java.security.spec.ECPoint;
+import java.security.spec.ECPrivateKeySpec;
+import java.security.spec.ECPublicKeySpec;
+import java.security.spec.EllipticCurve;
 import java.security.spec.RSAPrivateKeySpec;
 import java.security.spec.RSAPublicKeySpec;
 import java.util.*;
@@ -81,9 +89,10 @@
     private static DocumentBuilder db;
     private static CanonicalizationMethod withoutComments;
     private static SignatureMethod dsaSha1, dsaSha256, rsaSha1,
-                                   rsaSha256, rsaSha384, rsaSha512;
+                                   rsaSha256, rsaSha384, rsaSha512,
+                                   ecdsaSha1;
     private static DigestMethod sha1, sha256, sha384, sha512;
-    private static KeyInfo dsa1024, dsa2048, rsa, rsa1024;
+    private static KeyInfo dsa1024, dsa2048, rsa, rsa1024, p256ki;
     private static KeySelector kvks = new KeySelectors.KeyValueKeySelector();
     private static KeySelector sks;
     private static Key signingKey;
@@ -121,6 +130,7 @@
         test_create_signature_enveloping_hmac_sha384();
         test_create_signature_enveloping_hmac_sha512();
         test_create_signature_enveloping_rsa();
+        test_create_signature_enveloping_p256_sha1();
         test_create_signature_external_b64_dsa();
         test_create_signature_external_dsa();
         test_create_signature_keyname();
@@ -175,6 +185,8 @@
             (kifac.newKeyValue(getPublicKey("RSA", 512))));
         rsa1024 = kifac.newKeyInfo(Collections.singletonList
             (kifac.newKeyValue(getPublicKey("RSA", 1024))));
+        p256ki = kifac.newKeyInfo(Collections.singletonList
+            (kifac.newKeyValue(getECPublicKey())));
         rsaSha1 = fac.newSignatureMethod(SignatureMethod.RSA_SHA1, null);
         rsaSha256 = fac.newSignatureMethod
             ("http://www.w3.org/2001/04/xmldsig-more#rsa-sha256", null);
@@ -182,6 +194,8 @@
             ("http://www.w3.org/2001/04/xmldsig-more#rsa-sha384", null);
         rsaSha512 = fac.newSignatureMethod
             ("http://www.w3.org/2001/04/xmldsig-more#rsa-sha512", null);
+        ecdsaSha1 = fac.newSignatureMethod
+            ("http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1", null);
         sks = new KeySelectors.SecretKeySelector("secret".getBytes("ASCII"));
 
         httpUd = new HttpURIDereferencer();
@@ -342,6 +356,13 @@
         System.out.println();
     }
 
+    static void test_create_signature_enveloping_p256_sha1() throws Exception {
+        System.out.println("* Generating signature-enveloping-p256-sha1.xml");
+        test_create_signature_enveloping(sha1, ecdsaSha1, p256ki,
+            getECPrivateKey(), kvks, false);
+        System.out.println();
+    }
+
     static void test_create_signature_external_b64_dsa() throws Exception {
         System.out.println("* Generating signature-external-b64-dsa.xml");
         test_create_signature_external(dsaSha1, dsa1024, signingKey, kvks, true);
@@ -1168,7 +1189,42 @@
         "237008997971129772408397621801631622129297063463868593083106979716" +
         "204903524890556839550490384015324575598723478554854070823335021842" +
         "210112348400928769";
+    private static final String EC_X =
+        "335863644451761614592446380116804721648611739647823420286081723541" +
+        "6166183710";
+    private static final String EC_Y =
+        "951559601159729477487064127150143688502130342917782252098602422796" +
+        "95457910701";
+    private static final String EC_S =
+        "425976209773168452211813225517384419928639977904006759709292218082" +
+        "7440083936";
+    private static final ECParameterSpec EC_PARAMS;
 
+    static {
+        final String ec_sfield, ec_a, ec_b, ec_gx, ec_gy, ec_n;
+        ec_sfield =
+            "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF";
+        ec_a =
+            "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC";
+        ec_b =
+            "5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B";
+        ec_gx =
+            "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296";
+        ec_gy =
+            "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5";
+        ec_n =
+            "FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551";
+        final int ec_h = 1;
+        final ECField ec_field = new ECFieldFp(bigInt(ec_sfield));
+        final EllipticCurve ec_curve = new EllipticCurve(ec_field,
+                                                bigInt(ec_a), bigInt(ec_b));
+        final ECPoint ec_g = new ECPoint(bigInt(ec_gx), bigInt(ec_gy));
+        EC_PARAMS = new ECParameterSpec(ec_curve, ec_g, bigInt(ec_n), ec_h);
+    }
+
+    private static BigInteger bigInt(String s) {
+        return new BigInteger(s, 16);
+    }
     private static PublicKey getPublicKey(String algo, int keysize)
         throws Exception {
         KeyFactory kf = KeyFactory.getInstance(algo);
@@ -1197,6 +1253,14 @@
         return kf.generatePublic(kspec);
     }
 
+    private static PublicKey getECPublicKey() throws Exception {
+        KeyFactory kf = KeyFactory.getInstance("EC");
+        KeySpec kspec = new ECPublicKeySpec(new ECPoint(new BigInteger(EC_X),
+                                                        new BigInteger(EC_Y)),
+                                            EC_PARAMS);
+        return kf.generatePublic(kspec);
+    }
+
     private static PrivateKey getPrivateKey(String algo, int keysize)
         throws Exception {
         KeyFactory kf = KeyFactory.getInstance(algo);
@@ -1223,6 +1287,12 @@
         return kf.generatePrivate(kspec);
     }
 
+    private static PrivateKey getECPrivateKey() throws Exception {
+        KeyFactory kf = KeyFactory.getInstance("EC");
+        KeySpec kspec = new ECPrivateKeySpec(new BigInteger(EC_S), EC_PARAMS);
+        return kf.generatePrivate(kspec);
+    }
+
     private static SecretKey getSecretKey(final byte[] secret) {
         return new SecretKey() {
             public String getFormat()   { return "RAW"; }
--- a/jdk/test/javax/xml/crypto/dsig/KeySelectors.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/javax/xml/crypto/dsig/KeySelectors.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -166,7 +166,6 @@
             throw new KeySelectorException("No KeyValue element found!");
         }
 
-        //@@@FIXME: this should also work for key types other than DSA/RSA
         static boolean algEquals(String algURI, String algName) {
             if (algName.equalsIgnoreCase("DSA") &&
                 algURI.equals(SignatureMethod.DSA_SHA1) ||
@@ -181,6 +180,10 @@
                  algURI.equals
                     ("http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"))) {
                 return true;
+            } else if (algName.equalsIgnoreCase("EC") &&
+                (algURI.equals
+                    ("http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"))) {
+                return true;
             } else {
                 return false;
             }
--- a/jdk/test/javax/xml/crypto/dsig/ValidationTests.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/jdk/test/javax/xml/crypto/dsig/ValidationTests.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
 
 /**
  * @test
- * @bug 4635230 6365103 6366054 6824440 7131084
+ * @bug 4635230 6365103 6366054 6824440 7131084 8046724
  * @summary Basic unit tests for validating XML Signatures with JSR 105
  * @compile -XDignore.symbol.file KeySelectors.java SignatureValidator.java
  *     X509KeySelector.java ValidationTests.java
@@ -90,6 +90,7 @@
         new Test("signature-enveloping-b64-dsa.xml", KVKS),
         new Test("signature-enveloping-dsa.xml", KVKS),
         new Test("signature-enveloping-rsa.xml", KVKS),
+        new Test("signature-enveloping-p256-sha1.xml", KVKS),
         new Test("signature-enveloping-hmac-sha1.xml", SKKS),
         new Test("signature-external-dsa.xml", KVKS),
         new Test("signature-external-b64-dsa.xml", KVKS),
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/xml/crypto/dsig/data/signature-enveloping-p256-sha1.xml	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/><Reference URI="#object"><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue></Reference></SignedInfo><SignatureValue>WiF/Hd0s7BiH36Ds/1iJcbKiXOUVBSGFteuTjXwBbezR43NAwpMmMX5c1su0A9hG9rVVzE/1DOlO
+vuDVLBBblg==</SignatureValue><KeyInfo><KeyValue><ECKeyValue xmlns="http://www.w3.org/2009/xmldsig11#"><NamedCurve URI="urn:oid:1.2.840.10045.3.1.7"/><PublicKey>BAds672US3sCYunM2k2bEQLbuRxdQlNTvq+5fitOpDMe0mBdZV4J3yZaG0taziYIuAT9GJGfds+q
+xtXOCNWe/60=</PublicKey></ECKeyValue></KeyValue></KeyInfo><Object Id="object">some text</Object></Signature>
\ No newline at end of file
--- a/langtools/.hgtags	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/.hgtags	Mon Jan 19 11:35:45 2015 +0000
@@ -287,3 +287,4 @@
 23a3a063a906a91ba696d792f0eeabf157cd2f86 jdk9-b42
 6a06008aec10d32898ca665685f531c681b28f5f jdk9-b43
 de2ce70d907c9f227b802cea29285bece5194cd5 jdk9-b44
+73bbdcf236b297a0c1b8875f2eeba65eaf7ade60 jdk9-b45
--- a/langtools/make/Tools.gmk	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/make/Tools.gmk	Mon Jan 19 11:35:45 2015 +0000
@@ -39,7 +39,7 @@
     DISABLE_SJAVAC := true, \
     ADD_JAVAC_FLAGS := -Xprefer:source, \
     SRC := $(LANGTOOLS_TOPDIR)/make/tools, \
-    INCLUDES := compileproperties, \
+    INCLUDES := compileproperties propertiesparser, \
     BIN := $(BUILDTOOLS_OUTPUTDIR)/langtools_tools_classes))
 
 all: $(BUILD_TOOLS_LANGTOOLS)
--- a/langtools/make/build.properties	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/make/build.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -54,6 +54,9 @@
 jdk.javadoc.dependencies=java.base:java.compiler:jdk.compiler
 jdk.dev.dependencies=java.base:java.compiler:jdk.compiler
 
+javac.resource.includes = \
+        com/sun/tools/javac/resources/compiler.properties
+
 #test configuration:
 jtreg.tests=
 boot.javac.tests = tools/javac
--- a/langtools/make/build.xml	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/make/build.xml	Mon Jan 19 11:35:45 2015 +0000
@@ -527,7 +527,8 @@
                 <build-module-classes module.name="java.compiler"
                                       compilation.kind="@{compilation.kind}" />
                 <build-module-classes module.name="jdk.compiler"
-                                      compilation.kind="@{compilation.kind}" />
+                                      compilation.kind="@{compilation.kind}"
+                                      resource.includes="${javac.resource.includes}" />
                 <build-module-classes module.name="jdk.javadoc"
                                       compilation.kind="@{compilation.kind}" />
                 <build-module-classes module.name="jdk.dev"
@@ -536,10 +537,11 @@
         </macrodef>
     </target>
 
-    <target name="-def-build-module-classes" depends="-def-pcompile">
+    <target name="-def-build-module-classes" depends="-def-pcompile,-def-pparse">
         <macrodef name="build-module-classes">
             <attribute name="module.name"/>
             <attribute name="compilation.kind" default=""/>
+            <attribute name="resource.includes" default="nonExistent" />
             <attribute name="dependencies" default="${@{module.name}.dependencies}"/>
             <attribute name="includes" default="${@{compilation.kind}javac.includes}"/>
             <attribute name="javac.lint.opts" default="${@{compilation.kind}javac.lint.opts}"/>
@@ -583,6 +585,12 @@
                         <path location="${src.dir}"/>
                     </src>
                 </pcompile>
+                <pparse destdir="@{gensrc.dir}"
+                        includes="@{resource.includes}">
+                    <src>
+                        <path location="${src.dir}"/>
+                    </src>
+                </pparse>
                 <copy todir="@{gensrc.dir}">
                     <fileset dir="${src.dir}" includes="@{includes}" />
                     <globmapper from="*.properties-template" to="*.properties"/>
@@ -644,6 +652,28 @@
         </macrodef>
     </target>
 
+    <target name="-def-pparse">
+        <mkdir dir="${build.toolclasses.dir}"/>
+        <copy todir="${build.toolclasses.dir}/propertiesparser" >
+            <fileset dir="make/tools/propertiesparser" includes="**/resources/**"/>
+        </copy>
+        <javac fork="true"
+               source="${boot.javac.source}"
+               target="${boot.javac.target}"
+               executable="${boot.java.home}/bin/javac"
+               srcdir="${make.tools.dir}"
+               includes="propertiesparser/* anttasks/PropertiesParser* anttasks/PathFileSet*"
+               destdir="${build.toolclasses.dir}/"
+               classpath="${ant.core.lib}"
+               bootclasspath="${boot.java.home}/jre/lib/rt.jar"
+               includeantruntime="false">
+            <compilerarg line="${javac.lint.opts}"/>
+        </javac>
+        <taskdef name="pparse"
+                 classname="anttasks.PropertiesParserTask"
+                 classpath="${build.toolclasses.dir}/"/>
+    </target>
+
     <target name="-do-depend" if="do.depend">
         <depend srcdir="${src.dir}:${gensrc.dir}" destdir="${classes.dir}" classpath="${classpath}"
                 cache="${depcache.dir}"/>
--- a/langtools/make/gensrc/Gensrc-jdk.compiler.gmk	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/make/gensrc/Gensrc-jdk.compiler.gmk	Mon Jan 19 11:35:45 2015 +0000
@@ -37,4 +37,7 @@
 $(eval $(call SetupCompileProperties,COMPILE_PROPERTIES,\
     $(JAVAC_VERSION) $(JAVAH_VERSION) $(JAVAP_VERSION)))
 
-all: $(COMPILE_PROPERTIES)
+$(eval $(call SetupParseProperties,PARSE_PROPERTIES,\
+	com/sun/tools/javac/resources/compiler.properties))
+
+all: $(COMPILE_PROPERTIES) $(PARSE_PROPERTIES)
--- a/langtools/make/gensrc/GensrcCommon.gmk	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/make/gensrc/GensrcCommon.gmk	Mon Jan 19 11:35:45 2015 +0000
@@ -35,6 +35,11 @@
 TOOL_COMPILEPROPS_CMD := $(JAVA) -cp $(BUILDTOOLS_OUTPUTDIR)/langtools_tools_classes \
     compileproperties.CompileProperties -quiet
 
+################################################################################
+# The compileprops tools compiles a properties file into an enum-like class.
+TOOL_PARSEPROPS_CMD := $(JAVA) -cp $(BUILDTOOLS_OUTPUTDIR)/langtools_tools_classes \
+    propertiesparser.PropertiesParser
+
 
 ################################################################################
 # Sets up a rule that creates a version.properties file in the gensrc output
@@ -93,3 +98,32 @@
 endef
 
 ################################################################################
+# Parse property files in given location and generate a Java-like enum in the gensrc folder.
+# Param 1 - Variable to add targets to
+# Param 2 - Extra properties files to process
+define SetupParseProperties
+  #property file to generate
+  PARSEPROPSOURCES := $$(foreach var,$2,$$(addsuffix $$(var),$(LANGTOOLS_TOPDIR)/src/$(MODULE)/share/classes/))  
+
+  PARSEPROPALLDIRS := $$(patsubst $(LANGTOOLS_TOPDIR)/src/%, \
+      $(SUPPORT_OUTPUTDIR)/gensrc/%, \
+      $$(dir $$(PARSEPROPSOURCES)))
+
+  PARSEPROPDIRS := $$(sort $$(PARSEPROPALLDIRS))
+
+  PARSEPROPCMDLINE := $$(subst _SPACE_, $$(SPACE), \
+    $$(join $$(foreach var,$$(PARSEPROPSOURCES),$$(addprefix -compile_SPACE_,$$(var))), \
+    $$(addprefix _SPACE_, $$(PARSEPROPALLDIRS))))
+  
+  # Now setup the rule for the generation of the resource bundles.
+  $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/_the_parsed_props: $(PARSEPROPSOURCES)
+	$(CP) -r $(LANGTOOLS_TOPDIR)/make/tools/propertiesparser/resources $(BUILDTOOLS_OUTPUTDIR)/langtools_tools_classes/propertiesparser/resources
+	$(MKDIR) -p $$(@D) $$(PARSEPROPDIRS)
+	$(ECHO) Parsing $$(words $$(PARSEPROPSOURCES)) properties into enum-like class for $(MODULE)
+	$(TOOL_PARSEPROPS_CMD) $$(PARSEPROPCMDLINE)
+	$(TOUCH) $$@
+
+  $$(strip $1) += $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/_the_parsed_props
+endef
+
+################################################################################
--- a/langtools/make/intellij/build.xml	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/make/intellij/build.xml	Mon Jan 19 11:35:45 2015 +0000
@@ -28,7 +28,7 @@
         </sequential>
     </macrodef>
 
-    <target name="post-make" depends="build-all-tools"/>
+    <target name="post-make" depends="clean, build-all-tools"/>
 
     <target name="jtreg-debug" depends="build-all-tools,-def-jtreg">
         <exec-target target="jtreg-debug-internal"/>
--- a/langtools/make/intellij/compiler.xml	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/make/intellij/compiler.xml	Mon Jan 19 11:35:45 2015 +0000
@@ -5,6 +5,7 @@
     <excludeFromCompile>
       <directory url="file://$PROJECT_DIR$/src" includeSubdirectories="true" />
       <directory url="file://$PROJECT_DIR$/test" includeSubdirectories="true" />
+      <directory url="file://$PROJECT_DIR$/build" includeSubdirectories="true" />
     </excludeFromCompile>
     <resourceExtensions />
     <wildcardResourcePatterns />
--- a/langtools/make/intellij/langtools.iml	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/make/intellij/langtools.iml	Mon Jan 19 11:35:45 2015 +0000
@@ -1,20 +1,22 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" inherit-compiler-output="false">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
     <output url="file://$MODULE_DIR$/build" />
     <output-test url="file://$MODULE_DIR$/build" />
     <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/build/bootstrap/gensrc" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/build/genstubs" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/java.base/share/classes" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/java.compiler/share/classes" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/jdk.compiler/share/classes" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/jdk.dev/share/classes" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/jdk.javadoc/share/classes" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/bootstrap/java.base/gensrc" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/build/bootstrap/java.compiler/gensrc" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/build/bootstrap/jdk.compiler/gensrc" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/build/bootstrap/jdk.dev/gensrc" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/build/bootstrap/jdk.javadoc/gensrc" isTestSource="false" />
     </content>
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="inheritedJdk" />
   </component>
 </module>
-
--- a/langtools/make/intellij/misc.xml	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/make/intellij/misc.xml	Mon Jan 19 11:35:45 2015 +0000
@@ -3,8 +3,8 @@
   <component name="EntryPointsManager">
     <entry_points version="2.0" />
   </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" assert-keyword="true" jdk-15="true">
-    <output url="file://$PROJECT_DIR$/build" />
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/.idea/out" />
   </component>
 </project>
 
--- a/langtools/make/netbeans/langtools/nbproject/project.xml	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/make/netbeans/langtools/nbproject/project.xml	Mon Jan 19 11:35:45 2015 +0000
@@ -478,29 +478,34 @@
         <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/4">
             <compilation-unit>
                 <package-root>${root}/src/java.base/share/classes</package-root>
+                <package-root>${root}/build/bootstrap/java.base/gensrc</package-root>
                 <built-to>${root}/build/java.base/classes</built-to>
                 <source-level>1.8</source-level>
             </compilation-unit>
             <compilation-unit>
                 <package-root>${root}/src/java.compiler/share/classes</package-root>
+                <package-root>${root}/build/bootstrap/java.compiler/gensrc</package-root>
                 <classpath mode="compile">${root}/build/java.base/classes</classpath>
                 <built-to>${root}/build/java.compiler/classes</built-to>
                 <source-level>1.8</source-level>
             </compilation-unit>
             <compilation-unit>
                 <package-root>${root}/src/jdk.compiler/share/classes</package-root>
+                <package-root>${root}/build/bootstrap/jdk.compiler/gensrc</package-root>
                 <classpath mode="compile">${root}/build/java.base/classes:${root}/build/java.compiler/classes</classpath>
                 <built-to>${root}/build/jdk.compiler/classes</built-to>
                 <source-level>1.8</source-level>
             </compilation-unit>
             <compilation-unit>
                 <package-root>${root}/src/jdk.dev/share/classes</package-root>
+                <package-root>${root}/build/bootstrap/jdk.dev/gensrc</package-root>
                 <classpath mode="compile">${root}/build/java.base/classes:${root}/build/java.compiler/classes:${root}/build/jdk.compiler/classes</classpath>
                 <built-to>${root}/build/jdk.dev/classes</built-to>
                 <source-level>1.8</source-level>
             </compilation-unit>
             <compilation-unit>
                 <package-root>${root}/src/jdk.javadoc/share/classes</package-root>
+                <package-root>${root}/build/bootstrap/jdk.javadoc/gensrc</package-root>
                 <classpath mode="compile">${root}/build/java.base/classes:${root}/build/java.compiler/classes:${root}/build/jdk.compiler/classes</classpath>
                 <built-to>${root}/build/jdk.javadoc/classes</built-to>
                 <source-level>1.8</source-level>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/make/tools/anttasks/PropertiesParserTask.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package anttasks;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import propertiesparser.PropertiesParser;
+import propertiesparser.gen.ClassGenerator;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.DirectoryScanner;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.taskdefs.MatchingTask;
+import org.apache.tools.ant.types.Path;
+import org.apache.tools.ant.types.Resource;
+
+public class PropertiesParserTask extends MatchingTask {
+    public void addSrc(Path src) {
+        if (srcDirs == null)
+            srcDirs = new Path(getProject());
+        srcDirs.add(src);
+    }
+
+    public void setDestDir(File destDir) {
+        this.destDir = destDir;
+    }
+
+    @Override
+    public void execute() {
+        List<String> mainOpts = new ArrayList<String>();
+        int count = 0;
+        for (String dir : srcDirs.list()) {
+            File baseDir = getProject().resolveFile(dir);
+            DirectoryScanner s = getDirectoryScanner(baseDir);
+            for (String path : s.getIncludedFiles()) {
+                if (path.endsWith(".properties")) {
+                    File srcFile = new File(baseDir, path);
+                    String destPath =
+                            path.substring(0, path.lastIndexOf(File.separator) + 1) +
+                                    ClassGenerator.toplevelName(srcFile) + ".java";
+                    File destFile = new File(this.destDir, destPath);
+                    File destDir = destFile.getParentFile();
+                    // Arguably, the comparison in the next line should be ">", not ">="
+                    // but that assumes the resolution of the last modified time is fine
+                    // grained enough; in practice, it is better to use ">=".
+                    if (destFile.exists() && destFile.lastModified() >= srcFile.lastModified())
+                        continue;
+                    destDir.mkdirs();
+                    mainOpts.add("-compile");
+                    mainOpts.add(srcFile.getPath());
+                    mainOpts.add(destDir.getPath());
+                    count++;
+                }
+            }
+        }
+        if (mainOpts.size() > 0) {
+            log("Generating " + count + " resource files to " + destDir, Project.MSG_INFO);
+            PropertiesParser pp = new PropertiesParser(msg -> log(msg, Project.MSG_INFO));
+            boolean ok = pp.run(mainOpts.toArray(new String[mainOpts.size()]));
+            if (!ok)
+                throw new BuildException("PropertiesParser failed.");
+        }
+    }
+
+    private Path srcDirs;
+    private File destDir;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/make/tools/propertiesparser/PropertiesParser.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,127 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package propertiesparser;
+
+import propertiesparser.parser.MessageFile;
+import propertiesparser.gen.ClassGenerator;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.lang.RuntimeException;
+import java.lang.Throwable;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+/** Translates a .properties file into a .java file containing an enum-like Java class
+ *  which defines static factory methods for all resource keys in a given resource file. <P>
+ *
+ *  Usage: java PropertiesParser -compile [path to .properties file] [output folder where .java file will be written]
+ *
+ * @author mcimadamore
+ */
+
+public class PropertiesParser {
+
+    public Logger logger;
+
+    public PropertiesParser(Logger logger) {
+        this.logger = logger;
+    }
+
+    public static void main(String[] args) {
+        PropertiesParser pp = new PropertiesParser(msg -> System.out.println(msg));
+        boolean ok = pp.run(args);
+        if ( !ok ) {
+            System.exit(1);
+        }
+    }
+
+    public static interface Logger {
+        void info(String msg);
+    }
+
+    public void info(String msg) {
+        logger.info(msg);
+    }
+
+    public boolean run(String[] args) {
+        Map<String, String> optionsMap = parseOptions(args);
+        if (optionsMap.isEmpty()) {
+            usage();
+            return false;
+        }
+        try {
+            optionsMap.forEach((propfile, outfile) -> compilePropertyFile(propfile, outfile));
+            return true;
+        } catch (RuntimeException ex) {
+            ex.printStackTrace();
+            return false;
+        }
+    }
+
+    private void compilePropertyFile(String propertyPath, String outPath) {
+        try {
+            File propertyFile = new File(propertyPath);
+            String prefix = propertyFile.getName().split("\\.")[0];
+            MessageFile messageFile = new MessageFile(propertyFile, prefix);
+            new ClassGenerator().generateFactory(messageFile, new File(outPath));
+        } catch (Throwable ex) {
+            throw new RuntimeException(ex);
+        }
+    }
+
+    private Map<String, String> parseOptions(String args[]) {
+        Map<String, String> optionsMap = new HashMap<>(args.length);
+        for ( int i = 0; i < args.length ; i++ ) {
+            if ( "-compile".equals(args[i]) && i+2 < args.length ) {
+                optionsMap.put(args[++i], args[++i]);
+            } else {
+                return new HashMap<>();
+            }
+        }
+        return optionsMap;
+    }
+
+    private void usage() {
+        info("usage:");
+        info("    java PropertiesParser {-compile path_to_properties_file path_to_java_output_dir}");
+        info("");
+        info("Example:");
+        info("    java PropertiesParser -compile resources/test.properties resources");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/make/tools/propertiesparser/gen/ClassGenerator.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,419 @@
+package propertiesparser.gen;
+
+import propertiesparser.parser.Message;
+import propertiesparser.parser.MessageFile;
+import propertiesparser.parser.MessageInfo;
+import propertiesparser.parser.MessageLine;
+import propertiesparser.parser.MessageType;
+import propertiesparser.parser.MessageType.CompoundType;
+import propertiesparser.parser.MessageType.CustomType;
+import propertiesparser.parser.MessageType.SimpleType;
+import propertiesparser.parser.MessageType.UnionType;
+import propertiesparser.parser.MessageType.Visitor;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.TreeSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Properties;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+public class ClassGenerator {
+
+    /** Empty string - used to generate indentation padding. */
+    private final static String INDENT_STRING = "                                                                   ";
+
+    /** Default indentation step. */
+    private final static int INDENT_WIDTH = 4;
+
+    /** File-backed property file containing basic code stubs. */
+    static Properties stubs;
+
+    static {
+        //init properties from file
+        stubs = new Properties();
+        String resourcePath = "/propertiesparser/resources/templates.properties";
+        try (InputStream in = ClassGenerator.class.getResourceAsStream(resourcePath)) {
+            stubs.load(in);
+        } catch (IOException ex) {
+            throw new AssertionError(ex);
+        }
+    }
+
+    /**
+     * Supported stubs in the property file.
+     */
+    enum StubKind {
+        TOPLEVEL("toplevel.decl"),
+        FACTORY_CLASS("nested.decl"),
+        IMPORT("import.decl"),
+        FACTORY_METHOD_DECL("factory.decl.method"),
+        FACTORY_METHOD_ARG("factory.decl.method.arg"),
+        FACTORY_METHOD_BODY("factory.decl.method.body"),
+        FACTORY_FIELD("factory.decl.field"),
+        WILDCARDS_EXTENDS("wildcards.extends"),
+        SUPPRESS_WARNINGS("suppress.warnings");
+
+        /** stub key (as it appears in the property file) */
+        String key;
+
+        StubKind(String key) {
+            this.key = key;
+        }
+
+        /**
+         * Subst a list of arguments into a given stub.
+         */
+        String format(Object... args) {
+            return MessageFormat.format((String)stubs.get(key), args);
+        }
+    }
+
+    /**
+     * Nested factory class kind. There are multiple sub-factories, one for each kind of commonly used
+     * diagnostics (i.e. error, warnings, note, fragment). An additional category is defined for
+     * those resource keys whose prefix doesn't match any predefined category.
+     */
+    enum FactoryKind {
+        ERR("err", "Error", "Errors"),
+        WARN("warn", "Warning", "Warnings"),
+        NOTE("note", "Note", "Notes"),
+        MISC("misc", "Fragment", "Fragments"),
+        OTHER(null, null, null);
+
+        /** The prefix for this factory kind (i.e. 'err'). */
+        String prefix;
+
+        /** The type of the factory method/fields in this class. */
+        String keyClazz;
+
+        /** The class name to be used for this factory. */
+        String factoryClazz;
+
+        FactoryKind(String prefix, String keyClazz, String factoryClazz) {
+            this.prefix = prefix;
+            this.keyClazz = keyClazz;
+            this.factoryClazz = factoryClazz;
+        }
+
+        /**
+         * Utility method for parsing a factory kind from a resource key prefix.
+         */
+        static FactoryKind parseFrom(String prefix) {
+            for (FactoryKind k : FactoryKind.values()) {
+                if (k.prefix == null || k.prefix.equals(prefix)) {
+                    return k;
+                }
+            }
+            return null;
+        }
+    }
+
+    /**
+     * Main entry-point: generate a Java enum-like set of nested factory classes into given output
+     * folder. The factories are populated as mandated by the comments in the input resource file.
+     */
+    public void generateFactory(MessageFile messageFile, File outDir) {
+        Map<FactoryKind, List<Map.Entry<String, Message>>> groupedEntries =
+                messageFile.messages.entrySet().stream()
+                        .collect(Collectors.groupingBy(e -> FactoryKind.parseFrom(e.getKey().split("\\.")[1])));
+        //generate nested classes
+        List<String> nestedDecls = new ArrayList<>();
+        Set<String> importedTypes = new TreeSet<>();
+        for (Map.Entry<FactoryKind, List<Map.Entry<String, Message>>> entry : groupedEntries.entrySet()) {
+            if (entry.getKey() == FactoryKind.OTHER) continue;
+            //emit members
+            String members = entry.getValue().stream()
+                    .flatMap(e -> generateFactoryMethodsAndFields(e.getKey(), e.getValue()).stream())
+                    .collect(Collectors.joining("\n\n"));
+            //emit nested class
+            String factoryDecl =
+                    StubKind.FACTORY_CLASS.format(entry.getKey().factoryClazz, indent(members, 1));
+            nestedDecls.add(indent(factoryDecl, 1));
+            //add imports
+            entry.getValue().stream().forEach(e ->
+                    importedTypes.addAll(importedTypes(e.getValue().getMessageInfo().getTypes())));
+        }
+        String clazz = StubKind.TOPLEVEL.format(
+                packageName(messageFile.file),
+                String.join("\n", generateImports(importedTypes)),
+                toplevelName(messageFile.file),
+                String.join("\n", nestedDecls));
+        try (FileWriter fw = new FileWriter(new File(outDir, toplevelName(messageFile.file) + ".java"))) {
+            fw.append(clazz);
+        } catch (Throwable ex) {
+            throw new AssertionError(ex);
+        }
+    }
+
+    /**
+     * Indent a string to a given level.
+     */
+    String indent(String s, int level) {
+        return Stream.of(s.split("\n"))
+                .map(sub -> INDENT_STRING.substring(0, level * INDENT_WIDTH) + sub)
+                .collect(Collectors.joining("\n"));
+    }
+
+    /**
+     * Retrieve package part of given file object.
+     */
+    String packageName(File file) {
+        String path = file.getAbsolutePath();
+        int begin = path.indexOf("com" + File.separatorChar);
+        String packagePath = path.substring(begin, path.lastIndexOf(File.separatorChar));
+        String packageName =  packagePath.replace(File.separatorChar, '.');
+        return packageName;
+    }
+
+    /**
+     * Form the name of the toplevel factory class.
+     */
+    public static String toplevelName(File file) {
+        return Stream.of(file.getName().split("\\."))
+                .map(s -> Character.toUpperCase(s.charAt(0)) + s.substring(1))
+                .collect(Collectors.joining(""));
+    }
+
+    /**
+     * Generate a list of import declarations given a set of imported types.
+     */
+    List<String> generateImports(Set<String> importedTypes) {
+        List<String> importDecls = new ArrayList<>();
+        for (String it : importedTypes) {
+            importDecls.add(StubKind.IMPORT.format(it));
+        }
+        return importDecls;
+    }
+
+    /**
+     * Generate a list of factory methods/fields to be added to a given factory nested class.
+     */
+    List<String> generateFactoryMethodsAndFields(String key, Message msg) {
+        MessageInfo msgInfo = msg.getMessageInfo();
+        List<MessageLine> lines = msg.getLines(false);
+        String javadoc = lines.stream()
+                .filter(ml -> !ml.isInfo() && !ml.isEmptyOrComment())
+                .map(ml -> ml.text)
+                .collect(Collectors.joining("\n *"));
+        String[] keyParts = key.split("\\.");
+        FactoryKind k = FactoryKind.parseFrom(keyParts[1]);
+        String factoryName = factoryName(key);
+        if (msgInfo.getTypes().isEmpty()) {
+            //generate field
+            String factoryField = StubKind.FACTORY_FIELD.format(k.keyClazz, factoryName,
+                    "\"" + keyParts[0] + "\"",
+                    "\"" + Stream.of(keyParts).skip(2).collect(Collectors.joining(".")) + "\"",
+                    javadoc);
+            return Collections.singletonList(factoryField);
+        } else {
+            //generate method
+            List<String> factoryMethods = new ArrayList<>();
+            for (List<MessageType> msgTypes : normalizeTypes(0, msgInfo.getTypes())) {
+                List<String> types = generateTypes(msgTypes);
+                List<String> argNames = argNames(types.size());
+                String suppressionString = needsSuppressWarnings(msgTypes) ?
+                        StubKind.SUPPRESS_WARNINGS.format() : "";
+                String factoryMethod = StubKind.FACTORY_METHOD_DECL.format(suppressionString, k.keyClazz,
+                        factoryName, argDecls(types, argNames).stream().collect(Collectors.joining(", ")),
+                        indent(StubKind.FACTORY_METHOD_BODY.format(k.keyClazz,
+                                "\"" + keyParts[0] + "\"",
+                                "\"" + Stream.of(keyParts).skip(2).collect(Collectors.joining(".")) + "\"",
+                                argNames.stream().collect(Collectors.joining(", "))), 1),
+                        javadoc);
+                factoryMethods.add(factoryMethod);
+            }
+            return factoryMethods;
+        }
+    }
+
+    /**
+     * Form the name of a factory method/field given a resource key.
+     */
+    String factoryName(String key) {
+        return Stream.of(key.split("[\\.-]"))
+                .skip(2)
+                .map(s -> Character.toUpperCase(s.charAt(0)) + s.substring(1))
+                .collect(Collectors.joining(""));
+    }
+
+    /**
+     * Generate a formal parameter list given a list of types and names.
+     */
+    List<String> argDecls(List<String> types, List<String> args) {
+        List<String> argNames = new ArrayList<>();
+        for (int i = 0 ; i < types.size() ; i++) {
+            argNames.add(types.get(i) + " " + args.get(i));
+        }
+        return argNames;
+    }
+
+    /**
+     * Generate a list of formal parameter names given a size.
+     */
+    List<String> argNames(int size) {
+        List<String> argNames = new ArrayList<>();
+        for (int i = 0 ; i < size ; i++) {
+            argNames.add(StubKind.FACTORY_METHOD_ARG.format(i));
+        }
+        return argNames;
+    }
+
+    /**
+     * Convert a (normalized) parsed type into a string-based representation of some Java type.
+     */
+    List<String> generateTypes(List<MessageType> msgTypes) {
+        return msgTypes.stream().map(t -> t.accept(stringVisitor, null)).collect(Collectors.toList());
+    }
+    //where
+        Visitor<String, Void> stringVisitor = new Visitor<String, Void>() {
+            @Override
+            public String visitCustomType(CustomType t, Void aVoid) {
+                String customType = t.typeString;
+                return customType.substring(customType.lastIndexOf('.') + 1);
+            }
+
+            @Override
+            public String visitSimpleType(SimpleType t, Void aVoid) {
+                return t.clazz;
+            }
+
+            @Override
+            public String visitCompoundType(CompoundType t, Void aVoid) {
+                return StubKind.WILDCARDS_EXTENDS.format(t.kind.clazz.clazz,
+                        t.elemtype.accept(this, null));
+            }
+
+            @Override
+            public String visitUnionType(UnionType t, Void aVoid) {
+                throw new AssertionError("Union types should have been denormalized!");
+            }
+        };
+
+    /**
+     * See if any of the parsed types in the given list needs warning suppression.
+     */
+    boolean needsSuppressWarnings(List<MessageType> msgTypes) {
+        return msgTypes.stream().anyMatch(t -> t.accept(suppressWarningsVisitor, null));
+    }
+    //where
+    Visitor<Boolean, Void> suppressWarningsVisitor = new Visitor<Boolean, Void>() {
+        @Override
+        public Boolean visitCustomType(CustomType t, Void aVoid) {
+            //play safe
+            return true;
+        }
+        @Override
+        public Boolean visitSimpleType(SimpleType t, Void aVoid) {
+            switch (t) {
+                case LIST:
+                case SET:
+                    return true;
+                default:
+                    return false;
+            }
+        }
+
+        @Override
+        public Boolean visitCompoundType(CompoundType t, Void aVoid) {
+            return t.elemtype.accept(this, null);
+        }
+
+        @Override
+        public Boolean visitUnionType(UnionType t, Void aVoid) {
+            return needsSuppressWarnings(Arrays.asList(t.choices));
+        }
+    };
+
+    /**
+     * Retrieve a list of types that need to be imported, so that the factory body can refer
+     * to the types in the given list using simple names.
+     */
+    Set<String> importedTypes(List<MessageType> msgTypes) {
+        Set<String> imports = new TreeSet<>();
+        msgTypes.forEach(t -> t.accept(importVisitor, imports));
+        return imports;
+    }
+    //where
+    Visitor<Void, Set<String>> importVisitor = new Visitor<Void, Set<String>>() {
+        @Override
+        public Void visitCustomType(CustomType t, Set<String> imports) {
+            imports.add(t.typeString);
+            return null;
+        }
+
+        @Override
+        public Void visitSimpleType(SimpleType t, Set<String> imports) {
+            if (t.qualifier != null) {
+                imports.add(t.qualifier + "." + t.clazz);
+            }
+            return null;
+        }
+
+        @Override
+        public Void visitCompoundType(CompoundType t, Set<String> imports) {
+            visitSimpleType(t.kind.clazz, imports);
+            t.elemtype.accept(this, imports);
+            return null;
+        }
+
+        @Override
+        public Void visitUnionType(UnionType t, Set<String> imports) {
+            Stream.of(t.choices).forEach(c -> c.accept(this, imports));
+            return null;
+        }
+    };
+
+    /**
+     * Normalize parsed types in a comment line. If one or more types in the line contains alternatives,
+     * this routine generate a list of 'overloaded' normalized signatures.
+     */
+    List<List<MessageType>> normalizeTypes(int idx, List<MessageType> msgTypes) {
+        if (msgTypes.size() == idx) return Collections.singletonList(Collections.emptyList());
+        MessageType head = msgTypes.get(idx);
+        List<List<MessageType>> buf = new ArrayList<>();
+        for (MessageType alternative : head.accept(normalizeVisitor, null)) {
+            for (List<MessageType> rest : normalizeTypes(idx + 1, msgTypes)) {
+                List<MessageType> temp = new ArrayList<>(rest);
+                temp.add(0, alternative);
+                buf.add(temp);
+            }
+        }
+        return buf;
+    }
+    //where
+    Visitor<List<MessageType>, Void> normalizeVisitor = new Visitor<List<MessageType>, Void>() {
+        @Override
+        public List<MessageType> visitCustomType(CustomType t, Void aVoid) {
+            return Collections.singletonList(t);
+        }
+
+        @Override
+        public List<MessageType> visitSimpleType(SimpleType t, Void aVoid) {
+            return Collections.singletonList(t);
+        }
+
+        @Override
+        public List<MessageType> visitCompoundType(CompoundType t, Void aVoid) {
+            return t.elemtype.accept(this, null).stream()
+                    .map(nt -> new CompoundType(t.kind, nt))
+                    .collect(Collectors.toList());
+        }
+
+        @Override
+        public List<MessageType> visitUnionType(UnionType t, Void aVoid) {
+            return Stream.of(t.choices)
+                    .flatMap(t2 -> t2.accept(this, null).stream())
+                    .collect(Collectors.toList());
+        }
+    };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/make/tools/propertiesparser/parser/Message.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package propertiesparser.parser;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A message within the message file.
+ * A message is a series of lines containing a "name=value" property,
+ * optionally preceded by a comment describing the use of placeholders
+ * such as {0}, {1}, etc within the property value.
+ */
+public final class Message {
+    final MessageLine firstLine;
+    private MessageInfo messageInfo;
+
+    Message(MessageLine l) {
+        firstLine = l;
+    }
+
+    /**
+     * Get the Info object for this message. It may be empty if there
+     * if no comment preceding the property specification.
+     */
+    public MessageInfo getMessageInfo() {
+        if (messageInfo == null) {
+            MessageLine l = firstLine.prev;
+            if (l != null && l.isInfo())
+                messageInfo = new MessageInfo(l.text);
+            else
+                messageInfo = MessageInfo.dummyInfo;
+        }
+        return messageInfo;
+    }
+
+    /**
+     * Get all the lines pertaining to this message.
+     */
+    public List<MessageLine> getLines(boolean includeAllPrecedingComments) {
+        List<MessageLine> lines = new ArrayList<>();
+        MessageLine l = firstLine;
+        if (includeAllPrecedingComments) {
+            // scan back to find end of prev message
+            while (l.prev != null && l.prev.isEmptyOrComment())
+                l = l.prev;
+            // skip leading blank lines
+            while (l.text.isEmpty())
+                l = l.next;
+        } else {
+            if (l.prev != null && l.prev.isInfo())
+                l = l.prev;
+        }
+
+        // include any preceding lines
+        for ( ; l != firstLine; l = l.next)
+            lines.add(l);
+
+        // include message lines
+        for (l = firstLine; l != null && l.hasContinuation(); l = l.next)
+            lines.add(l);
+        lines.add(l);
+
+        // include trailing blank line if present
+        l = l.next;
+        if (l != null && l.text.isEmpty())
+            lines.add(l);
+
+        return lines;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/make/tools/propertiesparser/parser/MessageFile.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package propertiesparser.parser;
+
+import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.*;
+
+/**
+ * Class to facilitate manipulating compiler.properties.
+ */
+public class MessageFile {
+
+    MessageLine firstLine;
+    public Map<String, Message> messages = new TreeMap<>();
+    public File file;
+    public String keyPrefix;
+
+    public MessageFile(File file, String keyPrefix) throws IOException {
+        this.file = file;
+        this.keyPrefix = keyPrefix;
+        read(file);
+    }
+
+    final void read(File in) throws IOException {
+        MessageLine currLine = null;
+        for (String line : Files.readAllLines(in.toPath())) {
+            if (currLine == null)
+                firstLine = currLine = new MessageLine(line);
+            else
+                currLine = currLine.append(line);
+            if (line.startsWith(keyPrefix + ".")) {
+                int eq = line.indexOf("=");
+                if (eq > 0)
+                    messages.put(line.substring(0, eq), new Message(currLine));
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/make/tools/propertiesparser/parser/MessageInfo.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,125 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package propertiesparser.parser;
+
+import propertiesparser.parser.MessageType.CompoundType;
+import propertiesparser.parser.MessageType.OrType;
+import propertiesparser.parser.MessageType.SimpleType;
+import propertiesparser.parser.MessageType.UnionType;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * An object to represent the comment that may precede the property
+ * specification in a Message.
+ * The comment is modelled as a list of fields, where the fields correspond
+ * to the placeholder values (e.g. {0}, {1}, etc) within the message value.
+ */
+public final class MessageInfo {
+
+    /** The fields of the Info object. */
+    List<MessageType> types = new ArrayList<>();
+
+    MessageInfo(String text) throws IllegalArgumentException {
+        if (text != null) {
+            if (!text.startsWith("# "))
+                throw new IllegalArgumentException();
+            String[] segs = text.substring(2).split(", ");
+            types = new ArrayList<>();
+            for (String seg : segs) {
+                types.add(parseType(seg));
+            }
+        }
+    }
+
+    public List<MessageType> getTypes() {
+        return types;
+    }
+
+    boolean isEmpty() {
+        return types.isEmpty();
+    }
+
+    @Override
+    public String toString() {
+        return types.toString();
+    }
+
+    /**
+     * Split the type comment into multiple alternatives (separated by 'or') - then parse each of them
+     * individually and form an 'or' type.
+     */
+    MessageType parseType(String text) {
+        int commentStart = text.indexOf("(");
+        if (commentStart != -1) {
+            //remove optional comment
+            text = text.substring(0, commentStart);
+        }
+        text = text.substring(text.indexOf(": ") + 2);
+        String[] alternatives = text.split(" " + OrType.OR_NAME + " ");
+        MessageType[] types = new MessageType[alternatives.length];
+        for (int i = 0 ; i < alternatives.length ; i++) {
+            types[i] = parseAlternative(alternatives[i].trim());
+        }
+        return types.length > 1 ?
+                new OrType(types) : types[0];
+    }
+
+    /**
+     * Parse a subset of the type comment; valid matches are simple types, compound types,
+     * union types and custom types.
+     */
+    MessageType parseAlternative(String text) {
+        //try with custom types
+        if (text.charAt(0) == '\'') {
+            int end = text.indexOf('\'', 1);
+            return new MessageType.CustomType(text.substring(1, end));
+        }
+        //try with simple types
+        for (SimpleType st : SimpleType.values()) {
+            if (text.equals(st.kindName())) {
+                return st;
+            }
+        }
+        //try with compound types
+        for (CompoundType.Kind ck : CompoundType.Kind.values()) {
+            if (text.startsWith(ck.kindName)) {
+                MessageType elemtype = parseAlternative(text.substring(ck.kindName.length() + 1).trim());
+                return new CompoundType(ck, elemtype);
+            }
+        }
+        //try with union types
+        for (UnionType.Kind uk : UnionType.Kind.values()) {
+            if (text.startsWith(uk.kindName)) {
+                return new UnionType(uk);
+            }
+        }
+        //no match - report a warning
+        System.err.println("WARNING - unrecognized type: " + text);
+        return SimpleType.UNKNOWN;
+    }
+
+    /** Dummy message info to be used when no resource key comment is available. */
+    static final MessageInfo dummyInfo = new MessageInfo(null);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/make/tools/propertiesparser/parser/MessageLine.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package propertiesparser.parser;
+
+import java.util.regex.Pattern;
+
+/**
+ * A line of text within the message file.
+ * The lines form a doubly linked list for simple navigation.
+ */
+public class MessageLine {
+
+    static final Pattern emptyOrCommentPattern = Pattern.compile("( *#.*)?");
+    static final Pattern typePattern = Pattern.compile("[-\\\\'A-Z\\.a-z ]+( \\([A-Za-z 0-9]+\\))?");
+    static final Pattern infoPattern = Pattern.compile(String.format("# ([0-9]+: %s, )*[0-9]+: %s",
+            typePattern.pattern(), typePattern.pattern()));
+
+    public String text;
+    MessageLine prev;
+    MessageLine next;
+
+    MessageLine(String text) {
+        this.text = text;
+    }
+
+    public boolean isEmptyOrComment() {
+        return emptyOrCommentPattern.matcher(text).matches();
+    }
+
+    public boolean isInfo() {
+        return infoPattern.matcher(text).matches();
+    }
+
+    boolean hasContinuation() {
+        return (next != null) && text.endsWith("\\");
+    }
+
+    MessageLine append(String text) {
+        MessageLine l = new MessageLine(text);
+        append(l);
+        return l;
+    }
+
+    void append(MessageLine l) {
+        assert l.prev == null && l.next == null;
+        l.prev = this;
+        l.next = next;
+        if (next != null) {
+            next.prev = l;
+        }
+        next = l;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/make/tools/propertiesparser/parser/MessageType.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,250 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package propertiesparser.parser;
+
+/**
+ * Common interface to all kinds of diagnostic argument types.
+ */
+public interface MessageType {
+
+    /**
+     * Visitor method.
+     */
+    <R, A> R accept(Visitor<R, A> v, A a);
+
+    /**
+     * The type as mentioned in the resource file.
+     */
+    String kindName();
+
+    /**
+     * A custom type is a type for which a predefined alternative does not exist. As such, it is an
+     * handy option when prototyping - but usages of custom types should be avoided in product-quality
+     * resource file comments.
+     *
+     * Example: 'com.sun.tools.javac.code.Flags.Flag'
+     */
+    public static class CustomType implements MessageType {
+
+        /** The string-based representation of this type. */
+        public String typeString;
+
+        public CustomType(String typeString) {
+            this.typeString = typeString;
+        }
+
+        @Override
+        public String kindName() {
+            return typeString;
+        }
+
+        @Override
+        public <R, A> R accept(Visitor<R, A> v, A a) {
+            return v.visitCustomType(this, a);
+        }
+    }
+
+    /**
+     * A predefined type. All common types mentioned in the resource file comments are meant to
+     * be included here.
+     */
+    public enum SimpleType implements MessageType {
+
+        BOOLEAN("boolean", "boolean", null),
+        FRAGMENT("fragment", "Fragment", null),
+        DIAGNOSTIC("diagnostic", "JCDiagnostic", "com.sun.tools.javac.util"),
+        MODIFIER("modifier", "Modifier", "javax.lang.model.element"),
+        FILE("file", "File", "java.io"),
+        FILE_OBJECT("file object", "JavaFileObject", "javax.tools"),
+        NAME("name", "Name", "com.sun.tools.javac.util"),
+        NUMBER("number", "int", null),
+        OPTION_NAME("option name", "Option", "com.sun.tools.javac.main"),
+        SOURCE_VERSION("source version", "Source", "com.sun.tools.javac.code"),
+        STRING("string", "String", null),
+        SYMBOL("symbol", "Symbol", "com.sun.tools.javac.code"),
+        SYMBOL_KIND("symbol kind", "Kind", "com.sun.tools.javac.code.Kinds"),
+        KIND_NAME("kind name", "KindName", "com.sun.tools.javac.code.Kinds"),
+        TOKEN("token", "TokenKind", "com.sun.tools.javac.parser.Tokens"),
+        TYPE("type", "Type", "com.sun.tools.javac.code"),
+        SET("set", "Set", "java.util"),
+        LIST("list", "List", "java.util"),
+        OBJECT("object", "Object", null),
+        UNUSED("unused", "Void", null),
+        UNKNOWN("<unknown>", "UnknownType", null);
+
+        /** name of the predefined type as mentioned in the resource file. */
+        public final String kindName;
+
+        /** string-based representation of the type */
+        public final String clazz;
+
+        /** type qualifier (might be null) */
+        public final String qualifier;
+
+        SimpleType(String kindName, String clazz, String qualifier) {
+            this.kindName = kindName;
+            this.clazz = clazz;
+            this.qualifier = qualifier;
+        }
+
+        @Override
+        public String kindName() {
+            return kindName;
+        }
+
+        @Override
+        public <R, A> R accept(Visitor<R, A> v, A a) {
+            return v.visitSimpleType(this, a);
+        }
+    }
+
+    /**
+     * A compound type is a collection of some element type.
+     *
+     * Example: list of string
+     */
+    public static class CompoundType implements MessageType {
+
+        /**
+         * Compound type kind.
+         */
+        public enum Kind {
+            LIST("list of", SimpleType.LIST),
+            SET("set of", SimpleType.SET);
+
+            public final String kindName;
+            public final SimpleType clazz;
+
+            Kind(String kindName, SimpleType clazz) {
+                this.kindName = kindName;
+                this.clazz = clazz;
+            }
+        }
+
+        /** The compound type kind. */
+        public final Kind kind;
+
+        /** The element type. */
+        public final MessageType elemtype;
+
+        public CompoundType(Kind kind, MessageType elemtype) {
+            this.kind = kind;
+            this.elemtype = elemtype;
+        }
+
+        @Override
+        public String kindName() {
+            return kind.kindName;
+        }
+
+        @Override
+        public <R, A> R accept(Visitor<R, A> v, A a) {
+            return v.visitCompoundType(this, a);
+        }
+    }
+
+    /**
+     * A union type represents an alternative between two (or more) types. It can be useful to
+     * define the type of an argument which can assume multiple (unrelated) values; union types
+     * are only meant to be used in cases where the alternative comes up frequently enough in the
+     * resource file comments - in order to avoid cluttered comments.
+     *
+     * Example: message segment
+     */
+    public static class UnionType implements MessageType {
+
+        /**
+         * Union type kind.
+         */
+        public enum Kind {
+            MESSAGE_SEGMENT("message segment", SimpleType.DIAGNOSTIC, SimpleType.FRAGMENT),
+            FILE_NAME("file name", SimpleType.FILE, SimpleType.FILE_OBJECT);
+
+            final String kindName;
+            final SimpleType[] choices;
+
+            Kind(String kindName, SimpleType... choices) {
+                this.kindName = kindName;
+                this.choices = choices;
+            }
+        }
+
+        /** The union type kind. */
+        public final Kind kind;
+
+        /** The union type alternatives. */
+        public final MessageType[] choices;
+
+        UnionType(Kind kind) {
+            this(kind, kind.choices);
+        }
+
+        protected UnionType(Kind kind, MessageType[] choices) {
+            this.choices = choices;
+            this.kind = kind;
+        }
+
+        @Override
+        public String kindName() {
+            return kind.kindName;
+        }
+
+        @Override
+        public <R, A> R accept(Visitor<R, A> v, A a) {
+            return v.visitUnionType(this, a);
+        }
+    }
+
+    /**
+     * A subclass of union type representing 'explicit' alternatives in the resource file comments.
+     * Note: as the token 'or' is parsed with lowest priority, it is not possible, for instance,
+     * to form a compound type out of an 'or' type. In such cases a plain union type should be used
+     * instead.
+     *
+     * Examples: symbol or type
+     */
+    public static class OrType extends UnionType {
+
+        public static final String OR_NAME = "or";
+
+        @Override
+        public String kindName() {
+            return OR_NAME;
+        }
+
+        public OrType(MessageType... choices) {
+            super(null, choices);
+        }
+    }
+
+    /**
+     * Visitor class.
+     */
+    public static abstract class Visitor<R, A> {
+        public abstract R visitCustomType(CustomType t, A a);
+        public abstract R visitSimpleType(SimpleType t, A a);
+        public abstract R visitCompoundType(CompoundType t, A a);
+        public abstract R visitUnionType(UnionType t, A a);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/make/tools/propertiesparser/resources/templates.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,48 @@
+toplevel.decl=\
+    package {0};\n\
+    \n\
+    {1}\n\
+    import com.sun.tools.javac.util.JCDiagnostic.Error;\n\
+    import com.sun.tools.javac.util.JCDiagnostic.Warning;\n\
+    import com.sun.tools.javac.util.JCDiagnostic.Note;\n\
+    import com.sun.tools.javac.util.JCDiagnostic.Fragment;\n\
+    \n\
+    public class {2} '{'\n\
+    {3}\n\
+    '}'\n
+
+import.decl=\
+    import {0};
+
+nested.decl =\
+    public static class {0} '{'\n\
+    {1}\n\
+    '}'
+
+factory.decl.method=\
+    /**\n\
+    ' '* {5}\n\
+    ' '*/\n\
+    {0}public static {1} {2}({3}) '{'\n\
+    {4}\n\
+    '}'
+
+factory.decl.method.arg=\
+    arg{0}
+
+factory.decl.method.body=\
+    return new {0}({1}, {2}, {3});
+
+factory.decl.field=\
+    /**\n\
+    ' '* {4}\n\
+    ' '*/\n\
+    public static final {0} {1} = new {0}({2}, {3});
+
+wildcards.extends=\
+    {0}<? extends {1}>
+
+suppress.warnings=\
+  @SuppressWarnings("rawtypes")\n
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/java.compiler/share/classes/javax/tools/FileManagerUtils.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.tools;
+
+import java.io.File;
+import java.nio.file.Path;
+import java.util.Iterator;
+
+/**
+ * Package-private utility methods to convert between files and paths.
+ *
+ * @since 1.9
+ */
+class FileManagerUtils {
+    private FileManagerUtils() { }
+
+    static Iterable<Path> asPaths(final Iterable<? extends File> files) {
+        return () -> new Iterator<Path>() {
+            Iterator<? extends File> iter = files.iterator();
+
+            @Override
+            public boolean hasNext() {
+                return iter.hasNext();
+            }
+
+            @Override
+            public Path next() {
+                return iter.next().toPath();
+            }
+        };
+    }
+
+    static Iterable<File> asFiles(final Iterable<? extends Path> paths) {
+        return () -> new Iterator<File>() {
+            Iterator<? extends Path> iter = paths.iterator();
+
+            @Override
+            public boolean hasNext() {
+                return iter.hasNext();
+            }
+
+            @Override
+            public File next() {
+                Path p = iter.next();
+                try {
+                    return p.toFile();
+                } catch (UnsupportedOperationException e) {
+                    throw new IllegalArgumentException(p.toString(), e);
+                }
+            }
+        };
+    }
+}
--- a/langtools/src/java.compiler/share/classes/javax/tools/StandardJavaFileManager.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/src/java.compiler/share/classes/javax/tools/StandardJavaFileManager.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -27,13 +27,16 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.util.*;
+import java.nio.file.Path;
+import java.util.Arrays;
+
+import static javax.tools.FileManagerUtils.*;
 
 /**
- * File manager based on {@linkplain File java.io.File}.  A common way
- * to obtain an instance of this class is using {@linkplain
- * JavaCompiler#getStandardFileManager
- * getStandardFileManager}, for example:
+ * File manager based on {@linkplain File java.io.File} and {@linkplain Path java.nio.file.Path}.
+ *
+ * A common way to obtain an instance of this class is using
+ * {@linkplain JavaCompiler#getStandardFileManager getStandardFileManager}, for example:
  *
  * <pre>
  *   JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
@@ -110,7 +113,7 @@
  *     <code>file:///C:/Documents%20and%20Settings/UncleBob/BobsApp/Test.java</code>
  *   </li>
  *   <li>
- *     <code>jar:///C:/Documents%20and%20Settings/UncleBob/lib/vendorA.jar!com/vendora/LibraryClass.class</code>
+ *     <code>jar:///C:/Documents%20and%20Settings/UncleBob/lib/vendorA.jar!/com/vendora/LibraryClass.class</code>
  *   </li>
  * </ul>
  * Whereas these are not (reason in parentheses):
@@ -120,7 +123,7 @@
  *     and depend on the current directory)
  *   </li>
  *   <li>
- *     <code>jar:lib/vendorA.jar!com/vendora/LibraryClass.class</code>
+ *     <code>jar:lib/vendorA.jar!/com/vendora/LibraryClass.class</code>
  *     (the first half of the path depends on the current directory,
  *     whereas the component after ! is legal)
  *   </li>
@@ -134,6 +137,10 @@
  *   </li>
  * </ul>
  *
+ * <p>All implementations of this interface must support Path objects representing
+ * files in the {@linkplain java.nio.file.FileSystems#getDefault() default file system.}
+ * It is recommended that implementations should support Path objects from any filesystem.</p>
+ *
  * @author Peter von der Ah&eacute;
  * @since 1.6
  */
@@ -147,11 +154,12 @@
      * @param a a file object
      * @param b a file object
      * @return true if the given file objects represent the same
-     * canonical file or zip file entry; false otherwise
+     * canonical file, zip file entry or path; false otherwise
      *
      * @throws IllegalArgumentException if either of the arguments
      * were created with another file manager implementation
      */
+    @Override
     boolean isSameFile(FileObject a, FileObject b);
 
     /**
@@ -166,6 +174,27 @@
         Iterable<? extends File> files);
 
     /**
+     * Returns file objects representing the given paths.
+     *
+     * <p>The default implementation converts each path to a file and calls
+     * {@link #getJavaFileObjectsFromFiles getJavaObjectsFromFiles}.
+     * IllegalArgumentException will be thrown if any of the paths
+     * cannot be converted to a file.
+     *
+     * @param paths a list of paths
+     * @return a list of file objects
+     * @throws IllegalArgumentException if the list of paths includes
+     * a directory or if this file manager does not support any of the
+     * given paths.
+     *
+     * @since 1.9
+     */
+    default Iterable<? extends JavaFileObject> getJavaFileObjectsFromPaths(
+            Iterable<? extends Path> paths) {
+        return getJavaFileObjectsFromFiles(asFiles(paths));
+    }
+
+    /**
      * Returns file objects representing the given files.
      * Convenience method equivalent to:
      *
@@ -183,6 +212,27 @@
     Iterable<? extends JavaFileObject> getJavaFileObjects(File... files);
 
     /**
+     * Returns file objects representing the given paths.
+     * Convenience method equivalent to:
+     *
+     * <pre>
+     *     getJavaFileObjectsFromPaths({@linkplain java.util.Arrays#asList Arrays.asList}(paths))
+     * </pre>
+     *
+     * @param paths an array of paths
+     * @return a list of file objects
+     * @throws IllegalArgumentException if the array of files includes
+     * a directory
+     * @throws NullPointerException if the given array contains null
+     * elements
+     *
+     * @since 1.9
+     */
+    default Iterable<? extends JavaFileObject> getJavaFileObjects(Path... paths) {
+        return getJavaFileObjectsFromPaths(Arrays.asList(paths));
+    }
+
+    /**
      * Returns file objects representing the given file names.
      *
      * @param names a list of file names
@@ -211,29 +261,94 @@
     Iterable<? extends JavaFileObject> getJavaFileObjects(String... names);
 
     /**
-     * Associates the given path with the given location.  Any
+     * Associates the given search path with the given location.  Any
      * previous value will be discarded.
      *
      * @param location a location
-     * @param path a list of files, if {@code null} use the default
-     * path for this location
+     * @param files a list of files, if {@code null} use the default
+     * search path for this location
      * @see #getLocation
-     * @throws IllegalArgumentException if location is an output
-     * location and path does not contain exactly one element
-     * @throws IOException if location is an output location and path
+     * @throws IllegalArgumentException if {@code location} is an output
+     * location and {@code files} does not contain exactly one element
+     * @throws IOException if {@code location} is an output location and
      * does not represent an existing directory
      */
-    void setLocation(Location location, Iterable<? extends File> path)
+    void setLocation(Location location, Iterable<? extends File> files)
         throws IOException;
 
     /**
-     * Returns the path associated with the given location.
+     * Associates the given search path with the given location.  Any
+     * previous value will be discarded.
+     *
+     * <p>The default implementation converts each path to a file and calls
+     * {@link #getJavaFileObjectsFromFiles getJavaObjectsFromFiles}.
+     * IllegalArgumentException will be thrown if any of the paths
+     * cannot be converted to a file.</p>
+     *
+     * @param location a location
+     * @param paths a list of paths, if {@code null} use the default
+     * search path for this location
+     * @see #getLocation
+     * @throws IllegalArgumentException if {@code location} is an output
+     * location and {@code paths} does not contain exactly one element
+     * or if this file manager does not support any of the given paths
+     * @throws IOException if {@code location} is an output location and
+     * {@code paths} does not represent an existing directory
+     *
+     * @since 1.9
+     */
+    default void setLocationFromPaths(Location location, Iterable<? extends Path> paths)
+        throws IOException {
+        setLocation(location, asFiles(paths));
+    }
+
+    /**
+     * Returns the search path associated with the given location.
      *
      * @param location a location
      * @return a list of files or {@code null} if this location has no
-     * associated path
+     * associated search path
+     * @throws IllegalStateException if any element of the search path
+     * cannot be converted to a {@linkplain File}.
+     *
      * @see #setLocation
+     * @see Path#toFile
      */
     Iterable<? extends File> getLocation(Location location);
 
+    /**
+     * Returns the search path associated with the given location.
+     *
+     * @param location a location
+     * @return a list of paths or {@code null} if this location has no
+     * associated search path
+     *
+     * @see #setLocationFromPaths
+     * @since 1.9
+     */
+    default Iterable<? extends Path> getLocationAsPaths(Location location) {
+        return asPaths(getLocation(location));
+    }
+
+    /**
+     * Returns the path, if any, underlying this file object (optional operation).
+     * File objects derived from a {@link java.nio.file.FileSystem FileSystem},
+     * including the default file system, typically have a corresponding underlying
+     * {@link java.nio.file.Path Path} object. In such cases, this method may be
+     * used to access that object.
+     *
+     * <p>The default implementation throws {@link UnsupportedOperationException}
+     * for all files.</p>
+     *
+     * @param file a file object
+     * @return a path representing the same underlying file system artifact
+     * @throws IllegalArgumentException if the file object does not have an underlying path
+     * @throws UnsupportedOperationException if the operation is not supported by this file manager
+     *
+     * @since 1.9
+     */
+    default Path asPath(FileObject file) {
+        throw new UnsupportedOperationException();
+    }
+
 }
--- a/langtools/src/java.compiler/share/classes/javax/tools/ToolProvider.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/src/java.compiler/share/classes/javax/tools/ToolProvider.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -92,6 +92,10 @@
     /**
      * Returns the Java&trade; programming language compiler provided
      * with this platform.
+     * <p>The file manager returned by calling
+     * {@link JavaCompiler#getStandardFileManager getStandardFileManager}
+     * on this compiler supports paths provided by any
+     * {@linkplain java.nio.file.FileSystem filesystem}.</p>
      * @return the compiler provided with this platform or
      * {@code null} if no compiler is provided
      */
@@ -105,6 +109,10 @@
     /**
      * Returns the Java&trade; programming language documentation tool provided
      * with this platform.
+     * <p>The file manager returned by calling
+     * {@link DocumentationTool#getStandardFileManager getStandardFileManager}
+     * on this tool supports paths provided by any
+     * {@linkplain java.nio.file.FileSystem filesystem}.</p>
      * @return the documentation tool provided with this platform or
      * {@code null} if no documentation tool is provided
      */
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/AnnoConstruct.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/AnnoConstruct.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,6 +26,7 @@
 
 import java.lang.annotation.Annotation;
 import java.lang.annotation.Inherited;
+import java.lang.annotation.Repeatable;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
@@ -183,65 +184,12 @@
         return c == null ? null : AnnotationProxyMaker.generateAnnotation(c, annoType);
     }
 
-    // Needed to unpack the runtime view of containing annotations
-    private static final Class<? extends Annotation> REPEATABLE_CLASS = initRepeatable();
-    private static final Method VALUE_ELEMENT_METHOD = initValueElementMethod();
-
-    private static Class<? extends Annotation> initRepeatable() {
-        try {
-            // Repeatable will not be available when bootstrapping on
-            // JDK 7 so use a reflective lookup instead of a class
-            // literal for Repeatable.class.
-            return Class.forName("java.lang.annotation.Repeatable").asSubclass(Annotation.class);
-        } catch (ClassNotFoundException | SecurityException e) {
-            return null;
-        }
-    }
-
-    private static Method initValueElementMethod() {
-        if (REPEATABLE_CLASS == null)
-            return null;
-
-        Method m = null;
-        try {
-            m = REPEATABLE_CLASS.getMethod("value");
-            if (m != null)
-                m.setAccessible(true);
-            return m;
-        } catch (NoSuchMethodException e) {
-            return null;
-        }
-    }
-
-
     // Helper to getAnnotationsByType
     private static Class<? extends Annotation> getContainer(Class<? extends Annotation> annoType) {
-        // Since we can not refer to java.lang.annotation.Repeatable until we are
-        // bootstrapping with java 8 we need to get the Repeatable annotation using
-        // reflective invocations instead of just using its type and element method.
-        if (REPEATABLE_CLASS != null &&
-            VALUE_ELEMENT_METHOD != null) {
-            // Get the Repeatable instance on the annotations declaration
-            Annotation repeatable = (Annotation)annoType.getAnnotation(REPEATABLE_CLASS);
-            if (repeatable != null) {
-                try {
-                    // Get the value element, it should be a class
-                    // indicating the containing annotation type
-                    @SuppressWarnings("unchecked")
-                    Class<? extends Annotation> containerType = (Class)VALUE_ELEMENT_METHOD.invoke(repeatable);
-                    if (containerType == null)
-                        return null;
-
-                    return containerType;
-                } catch (ClassCastException | IllegalAccessException | InvocationTargetException e) {
-                    return null;
-                }
-            }
-        }
-        return null;
+        Repeatable repeatable = annoType.getAnnotation(Repeatable.class);
+        return (repeatable == null) ? null : repeatable.value();
     }
 
-
     // Helper to getAnnotationsByType
     private static Attribute[] unpackAttributes(Attribute.Compound container) {
         // We now have an instance of the container,
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java	Mon Jan 19 11:35:45 2015 +0000
@@ -207,6 +207,7 @@
      *  are correct.
      *
      *  @param tree     The tree whose kind and type is checked
+     *  @param found    The computed type of the tree
      *  @param ownkind  The computed kind of the tree
      *  @param resultInfo  The expected result of the tree
      */
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java	Mon Jan 19 11:35:45 2015 +0000
@@ -39,7 +39,6 @@
 import com.sun.tools.javac.comp.Infer.InferenceContext;
 import com.sun.tools.javac.comp.Infer.FreeTypeListener;
 import com.sun.tools.javac.comp.Resolve.MethodResolutionContext.Candidate;
-import com.sun.tools.javac.comp.Resolve.MethodResolutionDiagHelper.DiagnosticRewriter;
 import com.sun.tools.javac.comp.Resolve.MethodResolutionDiagHelper.Template;
 import com.sun.tools.javac.jvm.*;
 import com.sun.tools.javac.main.Option;
@@ -55,11 +54,12 @@
 
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.EnumMap;
 import java.util.EnumSet;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.Map;
+import java.util.function.BiPredicate;
+import java.util.stream.Stream;
 
 import javax.lang.model.element.ElementVisitor;
 
@@ -1008,7 +1008,7 @@
                 DeferredType dt = (DeferredType)found;
                 return dt.check(this);
             } else {
-                Type uResult = U(found.baseType());
+                Type uResult = U(found);
                 Type capturedType = pos == null || pos.getTree() == null ?
                         types.capture(uResult) :
                         checkContext.inferenceContext()
@@ -2546,17 +2546,7 @@
                                 final JCDiagnostic details = sym.kind == WRONG_MTH ?
                                                 ((InapplicableSymbolError)sym.baseSymbol()).errCandidate().snd :
                                                 null;
-                                sym = new InapplicableSymbolError(sym.kind, "diamondError", currentResolutionContext) {
-                                    @Override
-                                    JCDiagnostic getDiagnostic(DiagnosticType dkind, DiagnosticPosition pos,
-                                            Symbol location, Type site, Name name, List<Type> argtypes, List<Type> typeargtypes) {
-                                        String key = details == null ?
-                                            "cant.apply.diamond" :
-                                            "cant.apply.diamond.1";
-                                        return diags.create(dkind, log.currentSource(), pos, key,
-                                                diags.fragment("diamond", site.tsym), details);
-                                    }
-                                };
+                                sym = new DiamondError(sym, currentResolutionContext);
                                 sym = accessMethod(sym, pos, site, names.init, true, argtypes, typeargtypes);
                                 env.info.pendingResolutionPhase = currentResolutionContext.step;
                             }
@@ -3724,15 +3714,10 @@
             else {
                 Pair<Symbol, JCDiagnostic> c = errCandidate();
                 if (compactMethodDiags) {
-                    for (Map.Entry<Template, DiagnosticRewriter> _entry :
-                            MethodResolutionDiagHelper.rewriters.entrySet()) {
-                        if (_entry.getKey().matches(c.snd)) {
-                            JCDiagnostic simpleDiag =
-                                    _entry.getValue().rewriteDiagnostic(diags, pos,
-                                        log.currentSource(), dkind, c.snd);
-                            simpleDiag.setFlag(DiagnosticFlag.COMPRESSED);
-                            return simpleDiag;
-                        }
+                    JCDiagnostic simpleDiag =
+                        MethodResolutionDiagHelper.rewrite(diags, pos, log.currentSource(), dkind, c.snd);
+                    if (simpleDiag != null) {
+                        return simpleDiag;
                     }
                 }
                 Symbol ws = c.fst.asMemberOf(site, types);
@@ -3765,9 +3750,8 @@
     }
 
     /**
-     * ResolveError error class indicating that a set of symbols
-     * (either methods, constructors or operands) is not applicable
-     * given an actual arguments/type argument list.
+     * ResolveError error class indicating that a symbol (either methods, constructors or operand)
+     * is not applicable given an actual arguments/type argument list.
      */
     class InapplicableSymbolsError extends InapplicableSymbolError {
 
@@ -3864,6 +3848,44 @@
     }
 
     /**
+     * DiamondError error class indicating that a constructor symbol is not applicable
+     * given an actual arguments/type argument list using diamond inference.
+     */
+    class DiamondError extends InapplicableSymbolError {
+
+        Symbol sym;
+
+        public DiamondError(Symbol sym, MethodResolutionContext context) {
+            super(sym.kind, "diamondError", context);
+            this.sym = sym;
+        }
+
+        JCDiagnostic getDetails() {
+            return (sym.kind == WRONG_MTH) ?
+                    ((InapplicableSymbolError)sym.baseSymbol()).errCandidate().snd :
+                    null;
+        }
+
+        @Override
+        JCDiagnostic getDiagnostic(DiagnosticType dkind, DiagnosticPosition pos,
+                Symbol location, Type site, Name name, List<Type> argtypes, List<Type> typeargtypes) {
+            JCDiagnostic details = getDetails();
+            if (details != null && compactMethodDiags) {
+                JCDiagnostic simpleDiag =
+                        MethodResolutionDiagHelper.rewrite(diags, pos, log.currentSource(), dkind, details);
+                if (simpleDiag != null) {
+                    return simpleDiag;
+                }
+            }
+            String key = details == null ?
+                "cant.apply.diamond" :
+                "cant.apply.diamond.1";
+            return diags.create(dkind, log.currentSource(), pos, key,
+                    diags.fragment("diamond", site.tsym), details);
+        }
+    }
+
+    /**
      * An InvalidSymbolError error class indicating that a symbol is not
      * accessible from a given site
      */
@@ -4146,6 +4168,28 @@
             }
         }
 
+        /**
+         * Common rewriter for all argument mismatch simplifications.
+         */
+        static class ArgMismatchRewriter implements DiagnosticRewriter {
+
+            /** the index of the subdiagnostic to be used as primary. */
+            int causeIndex;
+
+            public ArgMismatchRewriter(int causeIndex) {
+                this.causeIndex = causeIndex;
+            }
+
+            @Override
+            public JCDiagnostic rewriteDiagnostic(JCDiagnostic.Factory diags,
+                    DiagnosticPosition preferedPos, DiagnosticSource preferredSource,
+                    DiagnosticType preferredKind, JCDiagnostic d) {
+                JCDiagnostic cause = (JCDiagnostic)d.getArgs()[causeIndex];
+                return diags.create(preferredKind, preferredSource, d.getDiagnosticPosition(),
+                        "prob.found.req", cause);
+            }
+        }
+
         /** a dummy template that match any diagnostic argument */
         static final Template skip = new Template("") {
             @Override
@@ -4154,22 +4198,61 @@
             }
         };
 
+        /** template for matching inference-free arguments mismatch failures */
+        static final Template argMismatchTemplate = new Template(MethodCheckDiag.ARG_MISMATCH.regex(), skip);
+
+        /** template for matching inference related arguments mismatch failures */
+        static final Template inferArgMismatchTemplate = new Template(MethodCheckDiag.ARG_MISMATCH.regex(), skip, skip) {
+            @Override
+            boolean matches(Object o) {
+                if (!super.matches(o)) {
+                    return false;
+                }
+                JCDiagnostic d = (JCDiagnostic)o;
+                @SuppressWarnings("unchecked")
+                List<Type> tvars = (List<Type>)d.getArgs()[0];
+                return !containsAny(d, tvars);
+            }
+
+            BiPredicate<Object, List<Type>> containsPredicate = (o, ts) -> {
+                if (o instanceof Type) {
+                    return ((Type)o).containsAny(ts);
+                } else if (o instanceof JCDiagnostic) {
+                    return containsAny((JCDiagnostic)o, ts);
+                } else {
+                    return false;
+                }
+            };
+
+            boolean containsAny(JCDiagnostic d, List<Type> ts) {
+                return Stream.of(d.getArgs())
+                        .anyMatch(o -> containsPredicate.test(o, ts));
+            }
+        };
+
         /** rewriter map used for method resolution simplification */
         static final Map<Template, DiagnosticRewriter> rewriters = new LinkedHashMap<>();
 
         static {
-            String argMismatchRegex = MethodCheckDiag.ARG_MISMATCH.regex();
-            rewriters.put(new Template(argMismatchRegex, skip),
-                    new DiagnosticRewriter() {
-                @Override
-                public JCDiagnostic rewriteDiagnostic(JCDiagnostic.Factory diags,
-                        DiagnosticPosition preferedPos, DiagnosticSource preferredSource,
-                        DiagnosticType preferredKind, JCDiagnostic d) {
-                    JCDiagnostic cause = (JCDiagnostic)d.getArgs()[0];
-                    return diags.create(preferredKind, preferredSource, d.getDiagnosticPosition(),
-                            "prob.found.req", cause);
+            rewriters.put(argMismatchTemplate, new ArgMismatchRewriter(0));
+            rewriters.put(inferArgMismatchTemplate, new ArgMismatchRewriter(1));
+        }
+
+        /**
+         * Main entry point for diagnostic rewriting - given a diagnostic, see if any templates matches it,
+         * and rewrite it accordingly.
+         */
+        static JCDiagnostic rewrite(JCDiagnostic.Factory diags, DiagnosticPosition pos, DiagnosticSource source,
+                                    DiagnosticType dkind, JCDiagnostic d) {
+            for (Map.Entry<Template, DiagnosticRewriter> _entry : rewriters.entrySet()) {
+                if (_entry.getKey().matches(d)) {
+                    JCDiagnostic simpleDiag =
+                            _entry.getValue().rewriteDiagnostic(diags, pos, source, dkind, d);
+                    simpleDiag.setFlag(DiagnosticFlag.COMPRESSED);
+                    return simpleDiag;
                 }
-            });
+            }
+            return null;
         }
     }
 
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java	Mon Jan 19 11:35:45 2015 +0000
@@ -739,7 +739,9 @@
     }
 
     public void visitUnary(JCUnary tree) {
-        tree.arg = translate(tree.arg, tree.operator.type.getParameterTypes().head);
+        tree.arg = translate(tree.arg, (tree.getTag() == Tag.NULLCHK)
+            ? tree.type
+            : tree.operator.type.getParameterTypes().head);
         result = tree;
     }
 
@@ -753,7 +755,15 @@
         tree.clazz = translate(tree.clazz, null);
         Type originalTarget = tree.type;
         tree.type = erasure(tree.type);
-        tree.expr = translate(tree.expr, erasure(tree.expr.type));
+        JCExpression newExpression = translate(tree.expr, erasure(tree.expr.type));
+        if (newExpression != tree.expr) {
+            JCTypeCast typeCast = newExpression.hasTag(Tag.TYPECAST)
+                ? (JCTypeCast) newExpression
+                : null;
+            tree.expr = typeCast != null && types.isSameType(typeCast.type, originalTarget, true)
+                ? typeCast.expr
+                : newExpression;
+        }
         if (originalTarget.isCompound()) {
             Type.IntersectionClassType ict = (Type.IntersectionClassType)originalTarget;
             for (Type c : ict.getExplicitComponents()) {
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -101,7 +101,6 @@
     private final Set<JavaFileObject.Kind> sourceOrClass =
         EnumSet.of(JavaFileObject.Kind.SOURCE, JavaFileObject.Kind.CLASS);
 
-    protected boolean mmappedIO;
     protected boolean symbolFileEnabled;
 
     protected enum SortFiles implements Comparator<Path> {
@@ -157,7 +156,6 @@
         if (contextUseOptimizedZip)
             zipFileIndexCache = ZipFileIndexCache.getSharedInstance();
 
-        mmappedIO = options.isSet("mmappedIO");
         symbolFileEnabled = !options.isSet("ignore.symbol.file");
 
         String sf = options.get("sortFiles");
@@ -177,10 +175,12 @@
         return symbolFileEnabled;
     }
 
+    // used by tests
     public JavaFileObject getFileForInput(String name) {
         return getRegularFile(Paths.get(name));
     }
 
+    // used by tests
     public JavaFileObject getRegularFile(Path file) {
         return new RegularFileObject(this, file);
     }
@@ -195,10 +195,10 @@
 
     @Override @DefinedBy(Api.COMPILER)
     public Iterable<? extends JavaFileObject> getJavaFileObjectsFromStrings(Iterable<String> names) {
-        ListBuffer<File> files = new ListBuffer<>();
+        ListBuffer<Path> paths = new ListBuffer<>();
         for (String name : names)
-            files.append(new File(nullCheck(name)));
-        return getJavaFileObjectsFromFiles(files.toList());
+            paths.append(Paths.get(nullCheck(name)));
+        return getJavaFileObjectsFromPaths(paths.toList());
     }
 
     @Override @DefinedBy(Api.COMPILER)
@@ -873,11 +873,30 @@
     }
 
     @Override @DefinedBy(Api.COMPILER)
+    public Iterable<? extends JavaFileObject> getJavaFileObjectsFromPaths(
+        Iterable<? extends Path> paths)
+    {
+        ArrayList<RegularFileObject> result;
+        if (paths instanceof Collection<?>)
+            result = new ArrayList<>(((Collection<?>)paths).size());
+        else
+            result = new ArrayList<>();
+        for (Path p: paths)
+            result.add(new RegularFileObject(this, nullCheck(p)));
+        return result;
+    }
+
+    @Override @DefinedBy(Api.COMPILER)
     public Iterable<? extends JavaFileObject> getJavaFileObjects(File... files) {
         return getJavaFileObjectsFromFiles(Arrays.asList(nullCheck(files)));
     }
 
     @Override @DefinedBy(Api.COMPILER)
+    public Iterable<? extends JavaFileObject> getJavaFileObjects(Path... paths) {
+        return getJavaFileObjectsFromPaths(Arrays.asList(nullCheck(paths)));
+    }
+
+    @Override @DefinedBy(Api.COMPILER)
     public void setLocation(Location location,
                             Iterable<? extends File> searchpath)
         throws IOException
@@ -887,12 +906,22 @@
     }
 
     @Override @DefinedBy(Api.COMPILER)
+    public void setLocationFromPaths(Location location,
+                            Iterable<? extends Path> searchpath)
+        throws IOException
+    {
+        nullCheck(location);
+        locations.setLocation(location, nullCheck(searchpath));
+    }
+
+    @Override @DefinedBy(Api.COMPILER)
     public Iterable<? extends File> getLocation(Location location) {
         nullCheck(location);
         return asFiles(locations.getLocation(location));
     }
 
-    private Iterable<? extends Path> getLocationAsPaths(Location location) {
+    @Override @DefinedBy(Api.COMPILER)
+    public Iterable<? extends Path> getLocationAsPaths(Location location) {
         nullCheck(location);
         return locations.getLocation(location);
     }
@@ -905,6 +934,14 @@
         return locations.getOutputLocation(SOURCE_OUTPUT);
     }
 
+    @Override @DefinedBy(Api.COMPILER)
+    public Path asPath(FileObject file) {
+        if (file instanceof RegularFileObject) {
+            return ((RegularFileObject) file).file;
+        } else
+            throw new IllegalArgumentException(file.getName());
+    }
+
     /**
      * Enforces the specification of a "relative" name as used in
      * {@linkplain #getFileForInput(Location,String,String)
@@ -1010,12 +1047,12 @@
 
             @Override
             public File next() {
-                return iter.next().toFile();
+                try {
+                    return iter.next().toFile();
+                } catch (UnsupportedOperationException e) {
+                    throw new IllegalStateException(e);
+                }
             }
         };
     }
-
-    private static File asFile(Path path) {
-        return path == null ? null : path.toFile();
-    }
 }
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -428,7 +428,7 @@
 
     /**
      * General purpose implementation for search path locations, such as -sourcepath/SOURCE_PATH and
-     * -processorPath/ANNOTATION_PROCESS_PATH. All options are treated as equivalent (i.e. aliases.)
+     * -processorPath/ANNOTATION_PROCESSOR_PATH. All options are treated as equivalent (i.e. aliases.)
      * The value is an ordered set of files and/or directories.
      */
     private class SimpleLocationHandler extends LocationHandler {
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1740,15 +1740,17 @@
             // The method wasn't found: emit a warning and recover
             JavaFileObject prevSource = log.useSource(requestingOwner.classfile);
             try {
-                if (failure == null) {
-                    log.warning("annotation.method.not.found",
-                                container,
-                                name);
-                } else {
-                    log.warning("annotation.method.not.found.reason",
-                                container,
-                                name,
-                                failure.getDetailValue());//diagnostic, if present
+                if (lintClassfile) {
+                    if (failure == null) {
+                        log.warning("annotation.method.not.found",
+                                    container,
+                                    name);
+                    } else {
+                        log.warning("annotation.method.not.found.reason",
+                                    container,
+                                    name,
+                                    failure.getDetailValue());//diagnostic, if present
+                    }
                 }
             } finally {
                 log.useSource(prevSource);
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1159,7 +1159,7 @@
                     Assert.check(r.start_pc >= 0
                             && r.start_pc <= code.cp);
                     databuf.appendChar(r.start_pc);
-                    Assert.check(r.length >= 0
+                    Assert.check(r.length > 0
                             && (r.start_pc + r.length) <= code.cp);
                     databuf.appendChar(r.length);
                     VarSymbol sym = var.sym;
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Code.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Code.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -182,8 +182,6 @@
 
     final MethodSymbol meth;
 
-    final LVTRanges lvtRanges;
-
     /** Construct a code object, given the settings of the fatcode,
      *  debugging info switches and the CharacterRangeTable.
      */
@@ -196,8 +194,7 @@
                 CRTable crt,
                 Symtab syms,
                 Types types,
-                Pool pool,
-                LVTRanges lvtRanges) {
+                Pool pool) {
         this.meth = meth;
         this.fatcode = fatcode;
         this.lineMap = lineMap;
@@ -219,7 +216,6 @@
         state = new State();
         lvar = new LocalVar[20];
         this.pool = pool;
-        this.lvtRanges = lvtRanges;
     }
 
 
@@ -1193,7 +1189,9 @@
     public int entryPoint(State state) {
         int pc = curCP();
         alive = true;
-        this.state = state.dup();
+        State newState = state.dup();
+        setDefined(newState.defined);
+        this.state = newState;
         Assert.check(state.stacksize <= max_stack);
         if (debugCode) System.err.println("entry point " + state);
         pendingStackMap = needStackMap;
@@ -1206,7 +1204,9 @@
     public int entryPoint(State state, Type pushed) {
         int pc = curCP();
         alive = true;
-        this.state = state.dup();
+        State newState = state.dup();
+        setDefined(newState.defined);
+        this.state = newState;
         Assert.check(state.stacksize <= max_stack);
         this.state.push(pushed);
         if (debugCode) System.err.println("entry point " + state);
@@ -2008,27 +2008,6 @@
         state.defined.excl(adr);
     }
 
-
-    public void closeAliveRanges(JCTree tree) {
-        closeAliveRanges(tree, cp);
-    }
-
-    public void closeAliveRanges(JCTree tree, int closingCP) {
-        List<VarSymbol> locals = lvtRanges.getVars(meth, tree);
-        for (LocalVar localVar: lvar) {
-            for (VarSymbol aliveLocal : locals) {
-                if (localVar != null) {
-                    if (localVar.sym == aliveLocal && localVar.lastRange() != null) {
-                        char length = (char)(closingCP - localVar.lastRange().start_pc);
-                        if (length < Character.MAX_VALUE) {
-                            localVar.closeRange(length);
-                        }
-                    }
-                }
-            }
-        }
-    }
-
     void adjustAliveRanges(int oldCP, int delta) {
         for (LocalVar localVar: lvar) {
             if (localVar != null) {
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -94,10 +94,6 @@
      */
     private Pool pool;
 
-    /** LVTRanges info.
-     */
-    private LVTRanges lvtRanges;
-
     protected Gen(Context context) {
         context.put(genKey, this);
 
@@ -125,9 +121,6 @@
             options.isUnset(G_CUSTOM)
             ? options.isSet(G)
             : options.isSet(G_CUSTOM, "vars");
-        if (varDebugInfo) {
-            lvtRanges = LVTRanges.instance(context);
-        }
         genCrt = options.isSet(XJCOV);
         debugCode = options.isSet("debugcode");
         allowInvokedynamic = target.hasInvokedynamic() || options.isSet("invokedynamic");
@@ -982,8 +975,7 @@
                                                : null,
                                         syms,
                                         types,
-                                        pool,
-                                        varDebugInfo ? lvtRanges : null);
+                                        pool);
             items = new Items(pool, code, syms, types);
             if (code.debugCode) {
                 System.err.println(meth + " for body " + tree);
@@ -1086,30 +1078,14 @@
                 Chain loopDone = c.jumpFalse();
                 code.resolve(c.trueJumps);
                 genStat(body, loopEnv, CRT_STATEMENT | CRT_FLOW_TARGET);
-                if (varDebugInfo) {
-                    checkLoopLocalVarRangeEnding(loop, body,
-                            LoopLocalVarRangeEndingPoint.BEFORE_STEPS);
-                }
                 code.resolve(loopEnv.info.cont);
                 genStats(step, loopEnv);
-                if (varDebugInfo) {
-                    checkLoopLocalVarRangeEnding(loop, body,
-                            LoopLocalVarRangeEndingPoint.AFTER_STEPS);
-                }
                 code.resolve(code.branch(goto_), startpc);
                 code.resolve(loopDone);
             } else {
                 genStat(body, loopEnv, CRT_STATEMENT | CRT_FLOW_TARGET);
-                if (varDebugInfo) {
-                    checkLoopLocalVarRangeEnding(loop, body,
-                            LoopLocalVarRangeEndingPoint.BEFORE_STEPS);
-                }
                 code.resolve(loopEnv.info.cont);
                 genStats(step, loopEnv);
-                if (varDebugInfo) {
-                    checkLoopLocalVarRangeEnding(loop, body,
-                            LoopLocalVarRangeEndingPoint.AFTER_STEPS);
-                }
                 CondItem c;
                 if (cond != null) {
                     code.statBegin(cond.pos);
@@ -1120,47 +1096,10 @@
                 code.resolve(c.jumpTrue(), startpc);
                 code.resolve(c.falseJumps);
             }
-            code.resolve(loopEnv.info.exit);
-            if (loopEnv.info.exit != null) {
-                loopEnv.info.exit.state.defined.excludeFrom(code.nextreg);
-            }
-        }
-
-        private enum LoopLocalVarRangeEndingPoint {
-            BEFORE_STEPS,
-            AFTER_STEPS,
-        }
-
-        /**
-         *  Checks whether we have reached an alive range ending point for local
-         *  variables after a loop.
-         *
-         *  Local variables alive range ending point for loops varies depending
-         *  on the loop type. The range can be closed before or after the code
-         *  for the steps sentences has been generated.
-         *
-         *  - While loops has no steps so in that case the range is closed just
-         *  after the body of the loop.
-         *
-         *  - For-like loops may have steps so as long as the steps sentences
-         *  can possibly contain non-synthetic local variables, the alive range
-         *  for local variables must be closed after the steps in this case.
-        */
-        private void checkLoopLocalVarRangeEnding(JCTree loop, JCTree body,
-                LoopLocalVarRangeEndingPoint endingPoint) {
-            if (varDebugInfo && lvtRanges.containsKey(code.meth, body)) {
-                switch (endingPoint) {
-                    case BEFORE_STEPS:
-                        if (!loop.hasTag(FORLOOP)) {
-                            code.closeAliveRanges(body);
-                        }
-                        break;
-                    case AFTER_STEPS:
-                        if (loop.hasTag(FORLOOP)) {
-                            code.closeAliveRanges(body);
-                        }
-                        break;
-                }
+            Chain exit = loopEnv.info.exit;
+            if (exit != null) {
+                code.resolve(exit);
+                exit.state.defined.excludeFrom(code.nextreg);
             }
         }
 
@@ -1171,7 +1110,11 @@
     public void visitLabelled(JCLabeledStatement tree) {
         Env<GenContext> localEnv = env.dup(tree, new GenContext());
         genStat(tree.body, localEnv, CRT_STATEMENT);
-        code.resolve(localEnv.info.exit);
+        Chain exit = localEnv.info.exit;
+        if (exit != null) {
+            code.resolve(exit);
+            exit.state.defined.excludeFrom(code.nextreg);
+        }
     }
 
     public void visitSwitch(JCSwitch tree) {
@@ -1277,13 +1220,14 @@
 
                 // Generate code for the statements in this case.
                 genStats(c.stats, switchEnv, CRT_FLOW_TARGET);
-                if (varDebugInfo && lvtRanges.containsKey(code.meth, c.stats.last())) {
-                    code.closeAliveRanges(c.stats.last());
-                }
             }
 
             // Resolve all breaks.
-            code.resolve(switchEnv.info.exit);
+            Chain exit = switchEnv.info.exit;
+            if  (exit != null) {
+                code.resolve(exit);
+                exit.state.defined.excludeFrom(code.nextreg);
+            }
 
             // If we have not set the default offset, we do so now.
             if (code.get4(tableBase) == -1) {
@@ -1436,9 +1380,6 @@
             genFinalizer(env);
             code.statBegin(TreeInfo.endPos(env.tree));
             Chain exitChain = code.branch(goto_);
-            if (varDebugInfo && lvtRanges.containsKey(code.meth, body)) {
-                code.closeAliveRanges(body);
-            }
             endFinalizerGap(env);
             if (startpc != endpc) for (List<JCCatch> l = catchers; l.nonEmpty(); l = l.tail) {
                 // start off with exception on stack
@@ -1689,17 +1630,11 @@
             code.resolve(c.trueJumps);
             genStat(tree.thenpart, env, CRT_STATEMENT | CRT_FLOW_TARGET);
             thenExit = code.branch(goto_);
-            if (varDebugInfo && lvtRanges.containsKey(code.meth, tree.thenpart)) {
-                code.closeAliveRanges(tree.thenpart, code.cp);
-            }
         }
         if (elseChain != null) {
             code.resolve(elseChain);
             if (tree.elsepart != null) {
                 genStat(tree.elsepart, env,CRT_STATEMENT | CRT_FLOW_TARGET);
-                if (varDebugInfo && lvtRanges.containsKey(code.meth, tree.elsepart)) {
-                    code.closeAliveRanges(tree.elsepart);
-                }
             }
         }
         code.resolve(thenExit);
@@ -2381,16 +2316,6 @@
             localEnv.toplevel = env.toplevel;
             localEnv.enclClass = cdef;
 
-            /*  We must not analyze synthetic methods
-             */
-            if (varDebugInfo && (cdef.sym.flags() & SYNTHETIC) == 0) {
-                try {
-                    new LVTAssignAnalyzer().analyzeTree(localEnv);
-                } catch (Throwable e) {
-                    throw e;
-                }
-            }
-
             for (List<JCTree> l = cdef.defs; l.nonEmpty(); l = l.tail) {
                 genDef(l.head, localEnv);
             }
@@ -2476,282 +2401,4 @@
         }
     }
 
-    class LVTAssignAnalyzer
-        extends Flow.AbstractAssignAnalyzer<LVTAssignAnalyzer.LVTAssignPendingExit> {
-
-        final LVTBits lvtInits;
-
-        /*  This class is anchored to a context dependent tree. The tree can
-         *  vary inside the same instruction for example in the switch instruction
-         *  the same FlowBits instance can be anchored to the whole tree, or
-         *  to a given case. The aim is to always anchor the bits to the tree
-         *  capable of closing a DA range.
-         */
-        class LVTBits extends Bits {
-
-            JCTree currentTree;
-            private int[] oldBits = null;
-            BitsState stateBeforeOp;
-
-            @Override
-            public void clear() {
-                generalOp(null, -1, BitsOpKind.CLEAR);
-            }
-
-            @Override
-            protected void internalReset() {
-                super.internalReset();
-                oldBits = null;
-            }
-
-            @Override
-            public Bits assign(Bits someBits) {
-                // bits can be null
-                oldBits = bits;
-                stateBeforeOp = currentState;
-                super.assign(someBits);
-                changed();
-                return this;
-            }
-
-            @Override
-            public void excludeFrom(int start) {
-                generalOp(null, start, BitsOpKind.EXCL_RANGE);
-            }
-
-            @Override
-            public void excl(int x) {
-                Assert.check(x >= 0);
-                generalOp(null, x, BitsOpKind.EXCL_BIT);
-            }
-
-            @Override
-            public Bits andSet(Bits xs) {
-               return generalOp(xs, -1, BitsOpKind.AND_SET);
-            }
-
-            @Override
-            public Bits orSet(Bits xs) {
-                return generalOp(xs, -1, BitsOpKind.OR_SET);
-            }
-
-            @Override
-            public Bits diffSet(Bits xs) {
-                return generalOp(xs, -1, BitsOpKind.DIFF_SET);
-            }
-
-            @Override
-            public Bits xorSet(Bits xs) {
-                return generalOp(xs, -1, BitsOpKind.XOR_SET);
-            }
-
-            private Bits generalOp(Bits xs, int i, BitsOpKind opKind) {
-                Assert.check(currentState != BitsState.UNKNOWN);
-                oldBits = dupBits();
-                stateBeforeOp = currentState;
-                switch (opKind) {
-                    case AND_SET:
-                        super.andSet(xs);
-                        break;
-                    case OR_SET:
-                        super.orSet(xs);
-                        break;
-                    case XOR_SET:
-                        super.xorSet(xs);
-                        break;
-                    case DIFF_SET:
-                        super.diffSet(xs);
-                        break;
-                    case CLEAR:
-                        super.clear();
-                        break;
-                    case EXCL_BIT:
-                        super.excl(i);
-                        break;
-                    case EXCL_RANGE:
-                        super.excludeFrom(i);
-                        break;
-                }
-                changed();
-                return this;
-            }
-
-            /*  The tree we need to anchor the bits instance to.
-             */
-            LVTBits at(JCTree tree) {
-                this.currentTree = tree;
-                return this;
-            }
-
-            /*  If the instance should be changed but the tree is not a closing
-             *  tree then a reset is needed or the former tree can mistakingly be
-             *  used.
-             */
-            LVTBits resetTree() {
-                this.currentTree = null;
-                return this;
-            }
-
-            /** This method will be called after any operation that causes a change to
-             *  the bits. Subclasses can thus override it in order to extract information
-             *  from the changes produced to the bits by the given operation.
-             */
-            public void changed() {
-                if (currentTree != null &&
-                        stateBeforeOp != BitsState.UNKNOWN &&
-                        trackTree(currentTree)) {
-                    List<VarSymbol> locals = lvtRanges
-                            .getVars(currentMethod, currentTree);
-                    locals = locals != null ?
-                            locals : List.<VarSymbol>nil();
-                    for (JCVariableDecl vardecl : vardecls) {
-                        //once the first is null, the rest will be so.
-                        if (vardecl == null) {
-                            break;
-                        }
-                        if (trackVar(vardecl.sym) && bitChanged(vardecl.sym.adr)) {
-                            locals = locals.prepend(vardecl.sym);
-                        }
-                    }
-                    if (!locals.isEmpty()) {
-                        lvtRanges.setEntry(currentMethod,
-                                currentTree, locals);
-                    }
-                }
-            }
-
-            boolean bitChanged(int x) {
-                boolean isMemberOfBits = isMember(x);
-                int[] tmp = bits;
-                bits = oldBits;
-                boolean isMemberOfOldBits = isMember(x);
-                bits = tmp;
-                return (!isMemberOfBits && isMemberOfOldBits);
-            }
-
-            boolean trackVar(VarSymbol var) {
-                return (var.owner.kind == MTH &&
-                        (var.flags() & PARAMETER) == 0 &&
-                        trackable(var));
-            }
-
-            boolean trackTree(JCTree tree) {
-                switch (tree.getTag()) {
-                    // of course a method closes the alive range of a local variable.
-                    case METHODDEF:
-                    // for while loops we want only the body
-                    case WHILELOOP:
-                        return false;
-                }
-                return true;
-            }
-
-        }
-
-        public class LVTAssignPendingExit extends
-                                    Flow.AbstractAssignAnalyzer<LVTAssignPendingExit>.AbstractAssignPendingExit {
-
-            LVTAssignPendingExit(JCTree tree, final Bits inits, final Bits uninits) {
-                super(tree, inits, uninits);
-            }
-
-            @Override
-            public void resolveJump(JCTree tree) {
-                lvtInits.at(tree);
-                super.resolveJump(tree);
-            }
-        }
-
-        private LVTAssignAnalyzer() {
-            flow.super();
-            lvtInits = new LVTBits();
-            inits = lvtInits;
-        }
-
-        @Override
-        protected void markDead(JCTree tree) {
-            lvtInits.at(tree).inclRange(returnadr, nextadr);
-            super.markDead(tree);
-        }
-
-        @Override
-        protected void merge(JCTree tree) {
-            lvtInits.at(tree);
-            super.merge(tree);
-        }
-
-        boolean isSyntheticOrMandated(Symbol sym) {
-            return (sym.flags() & (SYNTHETIC | MANDATED)) != 0;
-        }
-
-        @Override
-        protected boolean trackable(VarSymbol sym) {
-            if (isSyntheticOrMandated(sym)) {
-                //fast check to avoid tracking synthetic or mandated variables
-                return false;
-            }
-            return super.trackable(sym);
-        }
-
-        @Override
-        protected void initParam(JCVariableDecl def) {
-            if (!isSyntheticOrMandated(def.sym)) {
-                super.initParam(def);
-            }
-        }
-
-        @Override
-        protected void assignToInits(JCTree tree, Bits bits) {
-            lvtInits.at(tree);
-            lvtInits.assign(bits);
-        }
-
-        @Override
-        protected void andSetInits(JCTree tree, Bits bits) {
-            lvtInits.at(tree);
-            lvtInits.andSet(bits);
-        }
-
-        @Override
-        protected void orSetInits(JCTree tree, Bits bits) {
-            lvtInits.at(tree);
-            lvtInits.orSet(bits);
-        }
-
-        @Override
-        protected void exclVarFromInits(JCTree tree, int adr) {
-            lvtInits.at(tree);
-            lvtInits.excl(adr);
-        }
-
-        @Override
-        protected LVTAssignPendingExit createNewPendingExit(JCTree tree, Bits inits, Bits uninits) {
-            return new LVTAssignPendingExit(tree, inits, uninits);
-        }
-
-        MethodSymbol currentMethod;
-
-        @Override
-        public void visitMethodDef(JCMethodDecl tree) {
-            if ((tree.sym.flags() & (SYNTHETIC | GENERATEDCONSTR)) != 0
-                    && (tree.sym.flags() & LAMBDA_METHOD) == 0) {
-                return;
-            }
-            if (tree.name.equals(names.clinit)) {
-                return;
-            }
-            boolean enumClass = (tree.sym.owner.flags() & ENUM) != 0;
-            if (enumClass &&
-                    (tree.name.equals(names.valueOf) ||
-                    tree.name.equals(names.values) ||
-                    tree.name.equals(names.init))) {
-                return;
-            }
-            currentMethod = tree.sym;
-
-            super.visitMethodDef(tree);
-        }
-
-    }
-
 }
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/LVTRanges.java	Mon Jan 19 09:32:40 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javac.jvm;
-
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.WeakHashMap;
-
-import com.sun.tools.javac.code.Symbol.MethodSymbol;
-import com.sun.tools.javac.code.Symbol.VarSymbol;
-import com.sun.tools.javac.tree.JCTree;
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.List;
-
-/** This class contains a one to many relation between a tree and a set of variables.
- *  The relation implies that the given tree closes the DA (definite assignment)
- *  range for the set of variables.
- *
- *  <p><b>This is NOT part of any supported API.
- *  If you write code that depends on this, you do so at your own risk.
- *  This code and its internal interfaces are subject to change or
- *  deletion without notice.</b>
- */
-public class LVTRanges {
-    /** The context key for the LVT ranges. */
-    protected static final Context.Key<LVTRanges> lvtRangesKey = new Context.Key<>();
-
-    /** Get the LVTRanges instance for this context. */
-    public static LVTRanges instance(Context context) {
-        LVTRanges instance = context.get(lvtRangesKey);
-        if (instance == null) {
-            instance = new LVTRanges(context);
-        }
-        return instance;
-    }
-
-    private static final long serialVersionUID = 1812267524140424433L;
-
-    protected Context context;
-
-    protected Map<MethodSymbol, Map<JCTree, List<VarSymbol>>>
-            aliveRangeClosingTrees = new WeakHashMap<>();
-
-    public LVTRanges(Context context) {
-        this.context = context;
-        context.put(lvtRangesKey, this);
-    }
-
-    public List<VarSymbol> getVars(MethodSymbol method, JCTree tree) {
-        Map<JCTree, List<VarSymbol>> varMap = aliveRangeClosingTrees.get(method);
-        return (varMap != null) ? varMap.get(tree) : null;
-    }
-
-    public boolean containsKey(MethodSymbol method, JCTree tree) {
-        Map<JCTree, List<VarSymbol>> varMap = aliveRangeClosingTrees.get(method);
-        if (varMap == null) {
-            return false;
-        }
-        return varMap.containsKey(tree);
-    }
-
-    public void setEntry(MethodSymbol method, JCTree tree, List<VarSymbol> vars) {
-        Map<JCTree, List<VarSymbol>> varMap = aliveRangeClosingTrees.get(method);
-        if (varMap != null) {
-            varMap.put(tree, vars);
-        } else {
-            varMap = new WeakHashMap<>();
-            varMap.put(tree, vars);
-            aliveRangeClosingTrees.put(method, varMap);
-        }
-    }
-
-    public List<VarSymbol> removeEntry(MethodSymbol method, JCTree tree) {
-        Map<JCTree, List<VarSymbol>> varMap = aliveRangeClosingTrees.get(method);
-        if (varMap != null) {
-            List<VarSymbol> result = varMap.remove(tree);
-            if (varMap.isEmpty()) {
-                aliveRangeClosingTrees.remove(method);
-            }
-            return result;
-        }
-        return null;
-    }
-
-    /* This method should be used for debugging LVT related issues.
-     */
-    @Override
-    public String toString() {
-        String result = "";
-        for (Entry<MethodSymbol, Map<JCTree, List<VarSymbol>>> mainEntry: aliveRangeClosingTrees.entrySet()) {
-            result += "Method: \n" + mainEntry.getKey().flatName() + "\n";
-            int i = 1;
-            for (Entry<JCTree, List<VarSymbol>> treeEntry: mainEntry.getValue().entrySet()) {
-                result += "    Tree " + i + ": \n" + treeEntry.getKey().toString() + "\n";
-                result += "        Variables closed:\n";
-                for (VarSymbol var: treeEntry.getValue()) {
-                    result += "            " + var.toString();
-                }
-                result += "\n";
-                i++;
-            }
-        }
-        return result;
-    }
-
-}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,6 @@
+
 #
-# Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -26,30 +27,50 @@
 # Messages in this file which use "placeholders" for values (e.g. {0}, {1})
 # are preceded by a stylized comment describing the type of the corresponding
 # values.
-# The types currently in use are
+# The simple types currently in use are:
 #
 # boolean           true or false
-# file name         the name of an input file; e.g.   MyFile.java
-# message segment   a sub-message; see compiler.misc.*
+# diagnostic        a sub-message; see compiler.misc.*
+# fragment          similar to 'message segment', but with more specific type
 # modifier          a Java modifier; e.g. public, private, protected
+# file              a file URL
+# file object       a file URL - similar to 'file' but typically used for source/class files, hence more specific
 # name              a name, typically a Java identifier
 # number            an integer
 # option name       the name of a command line option
 # source version    a source version number, such as 1.5, 1.6, 1.7
 # string            a general string
 # symbol            the name of a declared type
-# symbol kind       a description of the kind of a declaration; see compiler.misc.kindname.*
+# symbol kind       the kind of a symbol (i.e. method, variable)
+# kind name         an informative description of the kind of a declaration; see compiler.misc.kindname.*
 # token             the name of a non-terminal in source code; see compiler.misc.token.*
 # type              a Java type; e.g. int, X, X<T>
+# object            a Java object (unspecified)
 # unused            the value is not used in this message
 #
+# The following compound types are also used:
+#
 # list of X         a comma-separated list of items; e.g. list of type
-# X or Y            alternation; e.g. message segment or type
 # set of X          a comma-separated collection of items; e.g. set of modifier
 #
-# These may be composed: e.g.   list of type or message segment
+# These may be composed:
+#
+# list of type or message segment
+#
+# The following type aliases are supported:
+#
+# message segment --> diagnostic or fragment
+# file name --> file or file object
 #
-# These comments are verified by the jtreg test test/tools/javac/diags/MessageInfo,
+# Custom comments are supported in parenthesis i.e.
+#
+# number (classfile major version)
+#
+# These comments are used internally in order to generate an enum-like class declaration containing
+# a method/field for each of the diagnostic keys listed here. Those methods/fields can then be used
+# by javac code to build diagnostics in a type-safe fashion.
+#
+# In addition, these comments are verified by the jtreg test test/tools/javac/diags/MessageInfo,
 # using info derived from the collected set of examples in test/tools/javac/diags/examples.
 # MessageInfo can also be run as a standalone utility providing more facilities
 # for manipulating this file. For more details, see MessageInfo.java.
@@ -140,7 +161,7 @@
 compiler.err.attribute.value.must.be.constant=\
     element value must be a constant expression
 
-# 0: statement type
+# 0: string (statement type)
 compiler.err.bad.initializer=\
     bad initializer for {0}
 
@@ -360,7 +381,7 @@
 compiler.err.invalid.repeatable.annotation.invalid.value=\
     {0} is not a valid @Repeatable: invalid value element
 
-# 0: symbol type, 1: unused, 2: type
+# 0: symbol or type, 1: unused, 2: type
 compiler.err.invalid.repeatable.annotation.value.return=\
     containing annotation type ({0}) must declare an element named ''value'' of type {2}
 
@@ -832,7 +853,7 @@
 
 # Errors related to annotation processing
 
-# 0: symbol, 1: string, 2: stack-trace
+# 0: symbol, 1: string, 2: string (stack-trace)
 compiler.err.proc.cant.access=\
     cannot access {0}\n\
     {1}\n\
@@ -984,15 +1005,15 @@
 compiler.err.types.incompatible.diff.ret=\
     types {0} and {1} are incompatible; both define {2}, but with unrelated return types
 
-# 0: kind, 1: type, 2: name, 3: list of type, 4: symbol, 5: symbol
+# 0: kind name, 1: type, 2: name, 3: list of type, 4: symbol, 5: symbol
 compiler.err.types.incompatible.unrelated.defaults=\
     {0} {1} inherits unrelated defaults for {2}({3}) from types {4} and {5}
 
-# 0: kind, 1: type, 2: name, 3: list of type, 4: symbol, 5: symbol
+# 0: kind name, 1: type, 2: name, 3: list of type, 4: symbol, 5: symbol
 compiler.err.types.incompatible.abstract.default=\
     {0} {1} inherits abstract and default for {2}({3}) from types {4} and {5}
 
-# 0: name, 1: kind, 2: symbol
+# 0: name, 1: kind name, 2: symbol
 compiler.err.default.overrides.object.member=\
     default method {0} in {1} {2} overrides a member of java.lang.Object
 
@@ -1747,11 +1768,11 @@
     cannot access {0}\n\
     {1}
 
-# 0: class name
+# 0: name
 compiler.misc.bad.class.file=\
     class file is invalid for class {0}
 
-# 0: file name, 1: expected CP entry type, 2: constant pool index
+# 0: file name, 1: string (expected constant pool entry type), 2: number (constant pool index)
 compiler.misc.bad.const.pool.entry=\
     bad constant pool entry in {0}\n\
     expected {1} at index {2}
@@ -1802,11 +1823,11 @@
 compiler.misc.class.file.not.found=\
     class file for {0} not found
 
-# 0: classfile major version, 1: classfile minor version
+# 0: string (classfile major version), 1: string (classfile minor version)
 compiler.misc.invalid.default.interface=\
     default method found in version {0}.{1} classfile
 
-# 0: classfile major version, 1: classfile minor version
+# 0: string (classfile major version), 1: string (classfile minor version)
 compiler.misc.invalid.static.interface=\
     static method found in version {0}.{1} classfile
 
@@ -2422,7 +2443,7 @@
 compiler.misc.partial.inst.sig=\
     partially instantiated to: {0}
 
-# 0: name, 1: symbol, 2: number, 3: MethodResolutionPhase, 4: list of type or message segment, 5: list of type or message segment
+# 0: name, 1: symbol, 2: number, 3: string (method resolution phase), 4: list of type or message segment, 5: list of type or message segment
 compiler.note.verbose.resolve.multi=\
     resolving method {0} in type {1} to candidate {2}\n\
     phase: {3}\n\
@@ -2430,7 +2451,7 @@
     with type-args: {5}\n\
     candidates:
 
-# 0: name, 1: symbol, 2: unused, 3: MethodResolutionPhase, 4: list of type or message segment, 5: list of type or message segment
+# 0: name, 1: symbol, 2: unused, 3: string (method resolution phase), 4: list of type or message segment, 5: list of type or message segment
 compiler.note.verbose.resolve.multi.1=\
     erroneous resolution for method {0} in type {1}\n\
     phase: {3}\n\
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/DCTree.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/DCTree.java	Mon Jan 19 11:35:45 2015 +0000
@@ -329,7 +329,7 @@
 
         DCErroneous(String body, JCDiagnostic.Factory diags, DiagnosticSource diagSource, String code, Object... args) {
             this.body = body;
-            this.diag = diags.error(diagSource, this, code, args);
+            this.diag = diags.error(null, diagSource, this, code, args);
         }
 
         @Override @DefinedBy(Api.COMPILER_TREE)
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/AbstractLog.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/AbstractLog.java	Mon Jan 19 11:35:45 2015 +0000
@@ -31,6 +31,9 @@
 
 import com.sun.tools.javac.code.Lint.LintCategory;
 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag;
+import com.sun.tools.javac.util.JCDiagnostic.Error;
+import com.sun.tools.javac.util.JCDiagnostic.Note;
+import com.sun.tools.javac.util.JCDiagnostic.Warning;
 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
 import com.sun.tools.javac.util.JCDiagnostic.SimpleDiagnosticPosition;
 
@@ -93,7 +96,15 @@
      *  @param args   Fields of the error message.
      */
     public void error(String key, Object ... args) {
-        report(diags.error(source, null, key, args));
+        error(diags.errorKey(key, args));
+    }
+
+    /** Report an error, unless another error was already reported at same
+     *  source position.
+     *  @param errorKey    The key for the localized error message.
+     */
+    public void error(Error errorKey) {
+        report(diags.error(null, source, null, errorKey));
     }
 
     /** Report an error, unless another error was already reported at same
@@ -102,8 +113,17 @@
      *  @param key    The key for the localized error message.
      *  @param args   Fields of the error message.
      */
-    public void error(DiagnosticPosition pos, String key, Object ... args) {
-        report(diags.error(source, pos, key, args));
+    public void error(DiagnosticPosition pos, String key, Object... args) {
+        error(pos, diags.errorKey(key, args));
+    }
+
+    /** Report an error, unless another error was already reported at same
+     *  source position.
+     *  @param pos    The source position at which to report the error.
+     *  @param errorKey    The key for the localized error message.
+     */
+    public void error(DiagnosticPosition pos, Error errorKey) {
+        report(diags.error(null, source, pos, errorKey));
     }
 
     /** Report an error, unless another error was already reported at same
@@ -114,9 +134,17 @@
      *  @param args   Fields of the error message.
      */
     public void error(DiagnosticFlag flag, DiagnosticPosition pos, String key, Object ... args) {
-        JCDiagnostic d = diags.error(source, pos, key, args);
-        d.setFlag(flag);
-        report(d);
+        error(flag, pos, diags.errorKey(key, args));
+    }
+
+    /** Report an error, unless another error was already reported at same
+     *  source position.
+     *  @param flag   A flag to set on the diagnostic
+     *  @param pos    The source position at which to report the error.
+     *  @param errorKey    The key for the localized error message.
+     */
+    public void error(DiagnosticFlag flag, DiagnosticPosition pos, Error errorKey) {
+        report(diags.error(flag, source, pos, errorKey));
     }
 
     /** Report an error, unless another error was already reported at same
@@ -126,7 +154,16 @@
      *  @param args   Fields of the error message.
      */
     public void error(int pos, String key, Object ... args) {
-        report(diags.error(source, wrap(pos), key, args));
+        error(pos, diags.errorKey(key, args));
+    }
+
+    /** Report an error, unless another error was already reported at same
+     *  source position.
+     *  @param pos    The source position at which to report the error.
+     *  @param errorKey    The key for the localized error message.
+     */
+    public void error(int pos, Error errorKey) {
+        report(diags.error(null, source, wrap(pos), errorKey));
     }
 
     /** Report an error, unless another error was already reported at same
@@ -137,9 +174,17 @@
      *  @param args   Fields of the error message.
      */
     public void error(DiagnosticFlag flag, int pos, String key, Object ... args) {
-        JCDiagnostic d = diags.error(source, wrap(pos), key, args);
-        d.setFlag(flag);
-        report(d);
+        error(flag, pos, diags.errorKey(key, args));
+    }
+
+    /** Report an error, unless another error was already reported at same
+     *  source position.
+     *  @param flag   A flag to set on the diagnostic
+     *  @param pos    The source position at which to report the error.
+     *  @param errorKey    The key for the localized error message.
+     */
+    public void error(DiagnosticFlag flag, int pos, Error errorKey) {
+        report(diags.error(flag, source, wrap(pos), errorKey));
     }
 
     /** Report a warning, unless suppressed by the  -nowarn option or the
@@ -148,7 +193,15 @@
      *  @param args   Fields of the warning message.
      */
     public void warning(String key, Object ... args) {
-        report(diags.warning(source, null, key, args));
+        warning(diags.warningKey(key, args));
+    }
+
+    /** Report a warning, unless suppressed by the  -nowarn option or the
+     *  maximum number of warnings has been reached.
+     *  @param warningKey    The key for the localized warning message.
+     */
+    public void warning(Warning warningKey) {
+        report(diags.warning(null, source, null, warningKey));
     }
 
     /** Report a lint warning, unless suppressed by the  -nowarn option or the
@@ -158,7 +211,16 @@
      *  @param args   Fields of the warning message.
      */
     public void warning(LintCategory lc, String key, Object ... args) {
-        report(diags.warning(lc, key, args));
+        warning(lc, diags.warningKey(key, args));
+    }
+
+    /** Report a lint warning, unless suppressed by the  -nowarn option or the
+     *  maximum number of warnings has been reached.
+     *  @param lc     The lint category for the diagnostic
+     *  @param warningKey    The key for the localized warning message.
+     */
+    public void warning(LintCategory lc, Warning warningKey) {
+        report(diags.warning(lc, null, null, warningKey));
     }
 
     /** Report a warning, unless suppressed by the  -nowarn option or the
@@ -168,7 +230,16 @@
      *  @param args   Fields of the warning message.
      */
     public void warning(DiagnosticPosition pos, String key, Object ... args) {
-        report(diags.warning(source, pos, key, args));
+        warning(pos, diags.warningKey(key, args));
+    }
+
+    /** Report a warning, unless suppressed by the  -nowarn option or the
+     *  maximum number of warnings has been reached.
+     *  @param pos    The source position at which to report the warning.
+     *  @param warningKey    The key for the localized warning message.
+     */
+    public void warning(DiagnosticPosition pos, Warning warningKey) {
+        report(diags.warning(null, source, pos, warningKey));
     }
 
     /** Report a lint warning, unless suppressed by the  -nowarn option or the
@@ -179,7 +250,17 @@
      *  @param args   Fields of the warning message.
      */
     public void warning(LintCategory lc, DiagnosticPosition pos, String key, Object ... args) {
-        report(diags.warning(lc, source, pos, key, args));
+        warning(lc, pos, diags.warningKey(key, args));
+    }
+
+    /** Report a lint warning, unless suppressed by the  -nowarn option or the
+     *  maximum number of warnings has been reached.
+     *  @param lc     The lint category for the diagnostic
+     *  @param pos    The source position at which to report the warning.
+     *  @param warningKey    The key for the localized warning message.
+     */
+    public void warning(LintCategory lc, DiagnosticPosition pos, Warning warningKey) {
+        report(diags.warning(lc, source, pos, warningKey));
     }
 
     /** Report a warning, unless suppressed by the  -nowarn option or the
@@ -189,7 +270,16 @@
      *  @param args   Fields of the warning message.
      */
     public void warning(int pos, String key, Object ... args) {
-        report(diags.warning(source, wrap(pos), key, args));
+        warning(pos, diags.warningKey(key, args));
+    }
+
+    /** Report a warning, unless suppressed by the  -nowarn option or the
+     *  maximum number of warnings has been reached.
+     *  @param pos    The source position at which to report the warning.
+     *  @param warningKey    The key for the localized warning message.
+     */
+    public void warning(int pos, Warning warningKey) {
+        report(diags.warning(null, source, wrap(pos), warningKey));
     }
 
     /** Report a warning.
@@ -198,7 +288,15 @@
      *  @param args   Fields of the warning message.
      */
     public void mandatoryWarning(DiagnosticPosition pos, String key, Object ... args) {
-        report(diags.mandatoryWarning(source, pos, key, args));
+        mandatoryWarning(pos, diags.warningKey(key, args));
+    }
+
+    /** Report a warning.
+     *  @param pos    The source position at which to report the warning.
+     *  @param warningKey    The key for the localized warning message.
+     */
+    public void mandatoryWarning(DiagnosticPosition pos, Warning warningKey) {
+        report(diags.mandatoryWarning(null, source, pos, warningKey));
     }
 
     /** Report a warning.
@@ -208,7 +306,16 @@
      *  @param args   Fields of the warning message.
      */
     public void mandatoryWarning(LintCategory lc, DiagnosticPosition pos, String key, Object ... args) {
-        report(diags.mandatoryWarning(lc, source, pos, key, args));
+        mandatoryWarning(lc, pos, diags.warningKey(key, args));
+    }
+
+    /** Report a warning.
+     *  @param lc     The lint category for the diagnostic
+     *  @param pos    The source position at which to report the warning.
+     *  @param warningKey    The key for the localized warning message.
+     */
+    public void mandatoryWarning(LintCategory lc, DiagnosticPosition pos, Warning warningKey) {
+        report(diags.mandatoryWarning(lc, source, pos, warningKey));
     }
 
     /** Provide a non-fatal notification, unless suppressed by the -nowarn option.
@@ -216,7 +323,14 @@
      *  @param args   Fields of the notint an error or warning message:
      */
     public void note(String key, Object ... args) {
-        report(diags.note(source, null, key, args));
+        note(diags.noteKey(key, args));
+    }
+
+    /** Provide a non-fatal notification, unless suppressed by the -nowarn option.
+     *  @param noteKey    The key for the localized notification message.
+     */
+    public void note(Note noteKey) {
+        report(diags.note(source, null, noteKey));
     }
 
     /** Provide a non-fatal notification, unless suppressed by the -nowarn option.
@@ -224,7 +338,14 @@
      *  @param args   Fields of the notification message.
      */
     public void note(DiagnosticPosition pos, String key, Object ... args) {
-        report(diags.note(source, pos, key, args));
+        note(pos, diags.noteKey(key, args));
+    }
+
+    /** Provide a non-fatal notification, unless suppressed by the -nowarn option.
+     *  @param noteKey    The key for the localized notification message.
+     */
+    public void note(DiagnosticPosition pos, Note noteKey) {
+        report(diags.note(source, pos, noteKey));
     }
 
     /** Provide a non-fatal notification, unless suppressed by the -nowarn option.
@@ -232,7 +353,14 @@
      *  @param args   Fields of the notification message.
      */
     public void note(int pos, String key, Object ... args) {
-        report(diags.note(source, wrap(pos), key, args));
+        note(pos, diags.noteKey(key, args));
+    }
+
+    /** Provide a non-fatal notification, unless suppressed by the -nowarn option.
+     *  @param noteKey    The key for the localized notification message.
+     */
+    public void note(int pos, Note noteKey) {
+        report(diags.note(source, wrap(pos), noteKey));
     }
 
     /** Provide a non-fatal notification, unless suppressed by the -nowarn option.
@@ -240,7 +368,14 @@
      *  @param args   Fields of the notification message.
      */
     public void note(JavaFileObject file, String key, Object ... args) {
-        report(diags.note(getSource(file), null, key, args));
+        note(file, diags.noteKey(key, args));
+    }
+
+    /** Provide a non-fatal notification, unless suppressed by the -nowarn option.
+     *  @param noteKey    The key for the localized notification message.
+     */
+    public void note(JavaFileObject file, Note noteKey) {
+        report(diags.note(getSource(file), null, noteKey));
     }
 
     /** Provide a non-fatal notification, unless suppressed by the -nowarn option.
@@ -248,7 +383,14 @@
      *  @param args   Fields of the notification message.
      */
     public void mandatoryNote(final JavaFileObject file, String key, Object ... args) {
-        report(diags.mandatoryNote(getSource(file), key, args));
+        mandatoryNote(file, diags.noteKey(key, args));
+    }
+
+    /** Provide a non-fatal notification, unless suppressed by the -nowarn option.
+     *  @param noteKey    The key for the localized notification message.
+     */
+    public void mandatoryNote(final JavaFileObject file, Note noteKey) {
+        report(diags.mandatoryNote(getSource(file), noteKey));
     }
 
     protected abstract void report(JCDiagnostic diagnostic);
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/JCDiagnostic.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/JCDiagnostic.java	Mon Jan 19 11:35:45 2015 +0000
@@ -28,6 +28,7 @@
 import java.util.EnumSet;
 import java.util.Locale;
 import java.util.Set;
+import java.util.stream.Stream;
 
 import javax.tools.Diagnostic;
 import javax.tools.JavaFileObject;
@@ -92,28 +93,30 @@
         }
 
         /**
-         * Create an error diagnostic.
+         * Create an error diagnostic
          *  @param source The source of the compilation unit, if any, in which to report the error.
          *  @param pos    The source position at which to report the error.
          *  @param key    The key for the localized error message.
          *  @param args   Fields of the error message.
          */
         public JCDiagnostic error(
-                DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) {
-            return create(ERROR, null, defaultErrorFlags, source, pos, key, args);
+                DiagnosticFlag flag, DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) {
+            return error(flag, source, pos, errorKey(key, args));
         }
 
         /**
-         * Create a warning diagnostic that will not be hidden by the -nowarn or -Xlint:none options.
-         *  @param source The source of the compilation unit, if any, in which to report the warning.
-         *  @param pos    The source position at which to report the warning.
-         *  @param key    The key for the localized warning message.
-         *  @param args   Fields of the warning message.
-         *  @see MandatoryWarningHandler
+         * Create an error diagnostic
+         *  @param source The source of the compilation unit, if any, in which to report the error.
+         *  @param pos    The source position at which to report the error.
+         *  @param errorKey    The key for the localized error message.
          */
-        public JCDiagnostic mandatoryWarning(
-                DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) {
-            return create(WARNING, null, EnumSet.of(DiagnosticFlag.MANDATORY), source, pos, key, args);
+        public JCDiagnostic error(
+                DiagnosticFlag flag, DiagnosticSource source, DiagnosticPosition pos, Error errorKey) {
+            JCDiagnostic diag = create(null, defaultErrorFlags, source, pos, errorKey);
+            if (flag != null) {
+                diag.setFlag(flag);
+            }
+            return diag;
         }
 
         /**
@@ -128,31 +131,35 @@
         public JCDiagnostic mandatoryWarning(
                 LintCategory lc,
                 DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) {
-            return create(WARNING, lc, EnumSet.of(DiagnosticFlag.MANDATORY), source, pos, key, args);
+            return mandatoryWarning(lc, source, pos, warningKey(key, args));
+        }
+
+        /**
+         * Create a warning diagnostic that will not be hidden by the -nowarn or -Xlint:none options.
+         *  @param lc     The lint category for the diagnostic
+         *  @param source The source of the compilation unit, if any, in which to report the warning.
+         *  @param pos    The source position at which to report the warning.
+         *  @param warningKey    The key for the localized warning message.
+         *  @see MandatoryWarningHandler
+         */
+        public JCDiagnostic mandatoryWarning(
+                LintCategory lc,
+                DiagnosticSource source, DiagnosticPosition pos, Warning warningKey) {
+            return create(lc, EnumSet.of(DiagnosticFlag.MANDATORY), source, pos, warningKey);
         }
 
         /**
          * Create a warning diagnostic.
          *  @param lc     The lint category for the diagnostic
+         *  @param source The source of the compilation unit, if any, in which to report the warning.
+         *  @param pos    The source position at which to report the warning.
          *  @param key    The key for the localized error message.
          *  @param args   Fields of the warning message.
          *  @see MandatoryWarningHandler
          */
         public JCDiagnostic warning(
-                 LintCategory lc, String key, Object... args) {
-            return create(WARNING, lc, EnumSet.noneOf(DiagnosticFlag.class), null, null, key, args);
-        }
-
-        /**
-         * Create a warning diagnostic.
-         *  @param source The source of the compilation unit, if any, in which to report the warning.
-         *  @param pos    The source position at which to report the warning.
-         *  @param key    The key for the localized warning message.
-         *  @param args   Fields of the warning message.
-         */
-        public JCDiagnostic warning(
-                DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) {
-            return create(WARNING, null, EnumSet.noneOf(DiagnosticFlag.class), source, pos, key, args);
+                LintCategory lc, DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) {
+            return warning(lc, source, pos, warningKey(key, args));
         }
 
         /**
@@ -160,23 +167,32 @@
          *  @param lc     The lint category for the diagnostic
          *  @param source The source of the compilation unit, if any, in which to report the warning.
          *  @param pos    The source position at which to report the warning.
+         *  @param warningKey    The key for the localized warning message.
+         *  @see MandatoryWarningHandler
+         */
+        public JCDiagnostic warning(
+                LintCategory lc, DiagnosticSource source, DiagnosticPosition pos, Warning warningKey) {
+            return create(lc, EnumSet.noneOf(DiagnosticFlag.class), source, pos, warningKey);
+        }
+
+        /**
+         * Create a note diagnostic that will not be hidden by the -nowarn or -Xlint:none options.
+         *  @param source The source of the compilation unit, if any, in which to report the warning.
          *  @param key    The key for the localized warning message.
          *  @param args   Fields of the warning message.
          *  @see MandatoryWarningHandler
          */
-        public JCDiagnostic warning(
-                 LintCategory lc, DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) {
-            return create(WARNING, lc, EnumSet.noneOf(DiagnosticFlag.class), source, pos, key, args);
+        public JCDiagnostic mandatoryNote(DiagnosticSource source, String key, Object... args) {
+            return mandatoryNote(source, noteKey(key, args));
         }
 
         /**
          * Create a note diagnostic that will not be hidden by the -nowarn or -Xlint:none options.
-         *  @param key    The key for the localized message.
-         *  @param args   Fields of the message.
+         *  @param noteKey    The key for the localized note message.
          *  @see MandatoryWarningHandler
          */
-        public JCDiagnostic mandatoryNote(DiagnosticSource source, String key, Object... args) {
-            return create(NOTE, null, EnumSet.of(DiagnosticFlag.MANDATORY), source, null, key, args);
+        public JCDiagnostic mandatoryNote(DiagnosticSource source, Note noteKey) {
+            return create(null, EnumSet.of(DiagnosticFlag.MANDATORY), source, null, noteKey);
         }
 
         /**
@@ -184,20 +200,20 @@
          *  @param key    The key for the localized error message.
          *  @param args   Fields of the message.
          */
-        public JCDiagnostic note(String key, Object... args) {
-            return create(NOTE, null, EnumSet.noneOf(DiagnosticFlag.class), null, null, key, args);
+        public JCDiagnostic note(
+                DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) {
+            return note(source, pos, noteKey(key, args));
         }
 
         /**
          * Create a note diagnostic.
          *  @param source The source of the compilation unit, if any, in which to report the note.
          *  @param pos    The source position at which to report the note.
-         *  @param key    The key for the localized message.
-         *  @param args   Fields of the message.
+         *  @param noteKey    The key for the localized note message.
          */
         public JCDiagnostic note(
-                DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) {
-            return create(NOTE, null, EnumSet.noneOf(DiagnosticFlag.class), source, pos, key, args);
+                DiagnosticSource source, DiagnosticPosition pos, Note noteKey) {
+            return create(null, EnumSet.noneOf(DiagnosticFlag.class), source, pos, noteKey);
         }
 
         /**
@@ -206,7 +222,15 @@
          *  @param args   Fields of the message.
          */
         public JCDiagnostic fragment(String key, Object... args) {
-            return create(FRAGMENT, null, EnumSet.noneOf(DiagnosticFlag.class), null, null, key, args);
+            return fragment(fragmentKey(key, args));
+        }
+
+        /**
+         * Create a fragment diagnostic, for use as an argument in other diagnostics
+         *  @param fragmentKey    The key for the localized subdiagnostic message.
+         */
+        public JCDiagnostic fragment(Fragment fragmentKey) {
+            return create(null, EnumSet.noneOf(DiagnosticFlag.class), null, null, fragmentKey);
         }
 
         /**
@@ -220,7 +244,19 @@
          */
         public JCDiagnostic create(
                 DiagnosticType kind, DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) {
-            return create(kind, null, EnumSet.noneOf(DiagnosticFlag.class), source, pos, key, args);
+            return create(null, EnumSet.noneOf(DiagnosticFlag.class), source, pos, DiagnosticInfo.of(kind, prefix, key, args));
+        }
+
+        /**
+         * Create a new diagnostic of the given kind, which is not mandatory and which has
+         * no lint category.
+         *  @param source      The source of the compilation unit, if any, in which to report the message.
+         *  @param pos         The source position at which to report the message.
+         *  @param diagnosticInfo         The key for the localized message.
+         */
+        public JCDiagnostic create(
+                DiagnosticSource source, DiagnosticPosition pos, DiagnosticInfo diagnosticInfo) {
+            return create(null, EnumSet.noneOf(DiagnosticFlag.class), source, pos, diagnosticInfo);
         }
 
         /**
@@ -233,13 +269,59 @@
          *  @param key         The key for the localized message.
          *  @param args        Fields of the message.
          */
-        public JCDiagnostic create(
-                DiagnosticType kind, LintCategory lc, Set<DiagnosticFlag> flags, DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) {
-            return new JCDiagnostic(formatter, kind, lc, flags, source, pos, qualify(kind, key), args);
+        public JCDiagnostic create(DiagnosticType kind,
+                LintCategory lc, Set<DiagnosticFlag> flags, DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) {
+            return create(lc, flags, source, pos, DiagnosticInfo.of(kind, prefix, key, args));
         }
 
-        protected String qualify(DiagnosticType t, String key) {
-            return prefix + "." + t.key + "." + key;
+        /**
+         * Create a new diagnostic with given key.
+         *  @param lc          The lint category, if applicable, or null
+         *  @param flags       The set of flags for the diagnostic
+         *  @param source      The source of the compilation unit, if any, in which to report the message.
+         *  @param pos         The source position at which to report the message.
+         *  @param diagnosticInfo    The key for the localized message.
+         */
+        public JCDiagnostic create(
+                LintCategory lc, Set<DiagnosticFlag> flags, DiagnosticSource source, DiagnosticPosition pos, DiagnosticInfo diagnosticInfo) {
+            return new JCDiagnostic(formatter, normalize(diagnosticInfo), lc, flags, source, pos);
+        }
+        //where
+            DiagnosticInfo normalize(DiagnosticInfo diagnosticInfo) {
+                //replace all nested FragmentKey with full-blown JCDiagnostic objects
+                return DiagnosticInfo.of(diagnosticInfo.type, diagnosticInfo.prefix, diagnosticInfo.code,
+                        Stream.of(diagnosticInfo.args).map(o -> {
+                            return (o instanceof Fragment) ?
+                                    fragment((Fragment)o) : o;
+                        }).toArray());
+            }
+
+        /**
+         * Create a new error key.
+         */
+        Error errorKey(String code, Object... args) {
+            return (Error)DiagnosticInfo.of(ERROR, prefix, code, args);
+        }
+
+        /**
+         * Create a new warning key.
+         */
+        Warning warningKey(String code, Object... args) {
+            return (Warning)DiagnosticInfo.of(WARNING, prefix, code, args);
+        }
+
+        /**
+         * Create a new note key.
+         */
+        Note noteKey(String code, Object... args) {
+            return (Note)DiagnosticInfo.of(NOTE, prefix, code, args);
+        }
+
+        /**
+         * Create a new fragment key.
+         */
+        Fragment fragmentKey(String code, Object... args) {
+            return (Fragment)DiagnosticInfo.of(FRAGMENT, prefix, code, args);
         }
     }
 
@@ -254,13 +336,14 @@
     @Deprecated
     public static JCDiagnostic fragment(String key, Object... args) {
         return new JCDiagnostic(getFragmentFormatter(),
-                              FRAGMENT,
+                              DiagnosticInfo.of(FRAGMENT,
+                                      "compiler",
+                                      key,
+                                      args),
                               null,
                               EnumSet.noneOf(DiagnosticFlag.class),
                               null,
-                              null,
-                              "compiler." + FRAGMENT.key + "." + key,
-                              args);
+                              null);
     }
     //where
     @Deprecated
@@ -352,11 +435,9 @@
         COMPRESSED
     }
 
-    private final DiagnosticType type;
     private final DiagnosticSource source;
     private final DiagnosticPosition position;
-    private final String key;
-    protected final Object[] args;
+    private final DiagnosticInfo diagnosticInfo;
     private final Set<DiagnosticFlag> flags;
     private final LintCategory lintCategory;
 
@@ -391,34 +472,120 @@
     }
 
     /**
+     * A diagnostic key object encapsulates basic properties of a diagnostic, such as the resource key,
+     * the arguments and the kind associated with the diagnostic object. Diagnostic keys can be either
+     * created programmatically (by using the supplied factory method) or obtained through build-time
+     * generated factory methods.
+     */
+    public static abstract class DiagnosticInfo {
+
+        /** The diagnostic kind (i.e. error). */
+        DiagnosticType type;
+
+        /** The diagnostic prefix (i.e. 'javac'); used to compute full resource key. */
+        String prefix;
+
+        /** The diagnostic code (i.e. 'cannot.resolve.sym'); together with {@code prefix} it forms
+         * the full resource key. */
+        String code;
+
+        /** The diagnostic arguments. */
+        Object[] args;
+
+        private DiagnosticInfo(DiagnosticType type, String prefix, String code, Object... args) {
+            this.type = type;
+            this.prefix = prefix;
+            this.code = code;
+            this.args = args;
+        }
+
+        /**
+         * Compute the resource key.
+         */
+        public String key() {
+            return prefix + "." + type.key + "." + code;
+        }
+
+        /**
+         * Static factory method; build a custom diagnostic key using given kind, prefix, code and args.
+         */
+        public static DiagnosticInfo of(DiagnosticType type, String prefix, String code, Object... args) {
+            switch (type) {
+                case ERROR:
+                    return new Error(prefix, code, args);
+                case WARNING:
+                    return new Warning(prefix, code, args);
+                case NOTE:
+                    return new Note(prefix, code, args);
+                case FRAGMENT:
+                    return new Fragment(prefix, code, args);
+                default:
+                    Assert.error("Wrong diagnostic type: " + type);
+                    return null;
+            }
+        }
+
+    }
+
+    /**
+     * Class representing error diagnostic keys.
+     */
+    public static final class Error extends DiagnosticInfo {
+        public Error(String prefix, String key, Object... args) {
+            super(DiagnosticType.ERROR, prefix, key, args);
+        }
+    }
+
+    /**
+     * Class representing warning diagnostic keys.
+     */
+    public static final class Warning extends DiagnosticInfo {
+        public Warning(String prefix, String key, Object... args) {
+            super(DiagnosticType.WARNING, prefix, key, args);
+        }
+    }
+
+    /**
+     * Class representing note diagnostic keys.
+     */
+    public static final class Note extends DiagnosticInfo {
+        public Note(String prefix, String key, Object... args) {
+            super(DiagnosticType.NOTE, prefix, key, args);
+        }
+    }
+
+    /**
+     * Class representing fragment diagnostic keys.
+     */
+    public static final class Fragment extends DiagnosticInfo {
+        public Fragment(String prefix, String key, Object... args) {
+            super(DiagnosticType.FRAGMENT, prefix, key, args);
+        }
+    }
+
+    /**
      * Create a diagnostic object.
      * @param formatter the formatter to use for the diagnostic
-     * @param dt the type of diagnostic
+     * @param diagnosticInfo the diagnostic key
      * @param lc     the lint category for the diagnostic
      * @param source the name of the source file, or null if none.
      * @param pos the character offset within the source file, if given.
-     * @param key a resource key to identify the text of the diagnostic
-     * @param args arguments to be included in the text of the diagnostic
      */
     protected JCDiagnostic(DiagnosticFormatter<JCDiagnostic> formatter,
-                       DiagnosticType dt,
+                       DiagnosticInfo diagnosticInfo,
                        LintCategory lc,
                        Set<DiagnosticFlag> flags,
                        DiagnosticSource source,
-                       DiagnosticPosition pos,
-                       String key,
-                       Object... args) {
+                       DiagnosticPosition pos) {
         if (source == null && pos != null && pos.getPreferredPosition() != Position.NOPOS)
             throw new IllegalArgumentException();
 
         this.defaultFormatter = formatter;
-        this.type = dt;
+        this.diagnosticInfo = diagnosticInfo;
         this.lintCategory = lc;
         this.flags = flags;
         this.source = source;
         this.position = pos;
-        this.key = key;
-        this.args = args;
     }
 
     /**
@@ -426,7 +593,7 @@
      * @return the type of this diagnostic
      */
     public DiagnosticType getType() {
-        return type;
+        return diagnosticInfo.type;
     }
 
     /**
@@ -543,7 +710,7 @@
      * @return  the arguments to be included in the text of the diagnostic
      */
     public Object[] getArgs() {
-        return args;
+        return diagnosticInfo.args;
     }
 
     /**
@@ -551,7 +718,7 @@
      * @return the prefix string associated with this type of diagnostic
      */
     public String getPrefix() {
-        return getPrefix(type);
+        return getPrefix(diagnosticInfo.type);
     }
 
     /**
@@ -567,7 +734,7 @@
      */
     @Override
     public String toString() {
-        return defaultFormatter.format(this,Locale.getDefault());
+        return defaultFormatter.format(this, Locale.getDefault());
     }
 
     private DiagnosticFormatter<JCDiagnostic> defaultFormatter;
@@ -578,7 +745,7 @@
 
     @DefinedBy(Api.COMPILER)
     public Diagnostic.Kind getKind() {
-        switch (type) {
+        switch (diagnosticInfo.type) {
         case NOTE:
             return Diagnostic.Kind.NOTE;
         case WARNING:
@@ -594,7 +761,7 @@
 
     @DefinedBy(Api.COMPILER)
     public String getCode() {
-        return key;
+        return diagnosticInfo.key();
     }
 
     @DefinedBy(Api.COMPILER)
@@ -605,7 +772,7 @@
     public void setFlag(DiagnosticFlag flag) {
         flags.add(flag);
 
-        if (type == DiagnosticType.ERROR) {
+        if (diagnosticInfo.type == DiagnosticType.ERROR) {
             switch (flag) {
                 case SYNTAX:
                     flags.remove(DiagnosticFlag.RECOVERABLE);
@@ -627,13 +794,11 @@
 
         public MultilineDiagnostic(JCDiagnostic other, List<JCDiagnostic> subdiagnostics) {
             super(other.defaultFormatter,
-                  other.getType(),
+                  other.diagnosticInfo,
                   other.getLintCategory(),
                   other.flags,
                   other.getDiagnosticSource(),
-                  other.position,
-                  other.getCode(),
-                  other.getArgs());
+                  other.position);
             this.subdiagnostics = subdiagnostics;
         }
 
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/Log.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/Log.java	Mon Jan 19 11:35:45 2015 +0000
@@ -535,7 +535,7 @@
      *  @param args   Fields of the warning message.
      */
     public void strictWarning(DiagnosticPosition pos, String key, Object ... args) {
-        writeDiagnostic(diags.warning(source, pos, key, args));
+        writeDiagnostic(diags.warning(null, source, pos, key, args));
         nwarnings++;
     }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/BranchToFewerDefines.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8067429
+ * @summary java.lang.VerifyError: Inconsistent stackmap frames at branch target
+ * @author srikanth
+ *
+ * @compile  BranchToFewerDefines.java
+ * @run main BranchToFewerDefines
+ */
+
+public class BranchToFewerDefines {
+        public static void main(String[] args) {
+        }
+        private void problematicMethod(int p) {
+                switch (p) {
+                        case 3:
+                                long n;
+                                while (true) {
+                                        if (false) {
+                                                break;
+                                        }
+                                }
+                                break;
+                        case 2:
+                                loop: while (true) {
+                                        while (true) {
+                                                int i = 4;
+                                                if (p != 16) {
+                                                        return;
+                                                }
+                                                break loop;
+                                        }
+                                }
+                                break;
+                        default:
+                                while (true) {
+                                        if (false) {
+                                                break;
+                                        }
+                                }
+                                break;
+                }
+                long b;
+                if (p != 7) {
+                        switch (p) {
+                                case 1:
+                                        long a = 17;
+                                        break;
+                                case 2:
+                                        break;
+                                default:
+                                        break;
+                        }
+                }
+        }
+        private void problematicMethod2(int p) {
+                switch (p) {
+                        case 3:
+                                long n;
+                                {
+                                        int i = 4;
+                                        break;
+                                }
+                        case 2:
+                                {
+                                        int i = 4;
+                                        break;
+                                }
+                        default:
+                                {
+                                        int i = 4;
+                                        break;
+                                }
+                }
+                long b;
+                if (p != 7) {
+                        switch (p) {
+                                case 1:
+                                        long a = 17;
+                                        break;
+                                case 2:
+                                        break;
+                                default:
+                                        break;
+                        }
+                }
+        }
+}
--- a/langtools/test/tools/javac/ConstFoldTest.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/test/tools/javac/ConstFoldTest.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,8 @@
  */
 
 import java.net.URL;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.List;
 
 public class ConstFoldTest {
@@ -75,9 +77,10 @@
         ToolBox tb = new ToolBox();
 
         URL url = ConstFoldTest.class.getResource("ConstFoldTest$CFTest.class");
+        Path file = Paths.get(url.toURI());
         List<String> result = tb.new JavapTask()
                 .options("-c")
-                .classes(url.getFile())
+                .classes(file.toString())
                 .run()
                 .write(ToolBox.OutputKind.DIRECT)
                 .getOutputLines(ToolBox.OutputKind.DIRECT);
--- a/langtools/test/tools/javac/Diagnostics/6769027/T6769027.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/test/tools/javac/Diagnostics/6769027/T6769027.java	Mon Jan 19 11:35:45 2015 +0000
@@ -387,7 +387,7 @@
         messages.add("tester");
         JCDiagnostic.Factory diags = JCDiagnostic.Factory.instance(ctx);
         log.useSource(new MyFileObject("This is a source line"));
-        JCDiagnostic d = diags.error(log.currentSource(),
+        JCDiagnostic d = diags.error(null, log.currentSource(),
             posKind.pos(),
             errorKind.key(), "Hello!");
         if (multiKind != MultilineKind.NONE) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/Diagnostics/compressed/8067883/T8067883.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,29 @@
+/*
+ * @test /nodynamiccopyright/
+ * @bug 8067883
+ * @summary Javac misses some opportunities for diagnostic simplification
+ *
+ * @compile/fail/ref=T8067883a.out -Xdiags:compact -XDrawDiagnostics T8067883.java
+ * @compile/fail/ref=T8067883b.out -Xdiags:verbose -XDrawDiagnostics T8067883.java
+ *
+ */
+
+import java.util.List;
+
+class T8067883 {
+    void testMethod(List<Integer> li) {
+        m(null, li);
+        m(1, li);
+    }
+
+    void testDiamond(List<Integer> li) {
+        new Box<>(null, li);
+        new Box<>(1, li);
+    }
+
+    <Z> void m(List<Z> z, List<String> ls) { }
+
+    static class Box<X> {
+        Box(List<X> z, List<String> ls) { }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/Diagnostics/compressed/8067883/T8067883a.out	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,6 @@
+T8067883.java:15:17: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: java.util.List<java.lang.Integer>, java.util.List<java.lang.String>)
+T8067883.java:16:9: compiler.err.cant.apply.symbol: kindname.method, m, java.util.List<Z>,java.util.List<java.lang.String>, int,java.util.List<java.lang.Integer>, kindname.class, T8067883, (compiler.misc.infer.no.conforming.assignment.exists: Z, (compiler.misc.inconvertible.types: int, java.util.List<Z>))
+T8067883.java:20:25: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: java.util.List<java.lang.Integer>, java.util.List<java.lang.String>)
+T8067883.java:21:9: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: T8067883.Box), (compiler.misc.infer.no.conforming.assignment.exists: X, (compiler.misc.inconvertible.types: int, java.util.List<X>))
+- compiler.note.compressed.diags
+4 errors
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/Diagnostics/compressed/8067883/T8067883b.out	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,5 @@
+T8067883.java:15:9: compiler.err.cant.apply.symbol: kindname.method, m, java.util.List<Z>,java.util.List<java.lang.String>, compiler.misc.type.null,java.util.List<java.lang.Integer>, kindname.class, T8067883, (compiler.misc.infer.no.conforming.assignment.exists: Z, (compiler.misc.inconvertible.types: java.util.List<java.lang.Integer>, java.util.List<java.lang.String>))
+T8067883.java:16:9: compiler.err.cant.apply.symbol: kindname.method, m, java.util.List<Z>,java.util.List<java.lang.String>, int,java.util.List<java.lang.Integer>, kindname.class, T8067883, (compiler.misc.infer.no.conforming.assignment.exists: Z, (compiler.misc.inconvertible.types: int, java.util.List<Z>))
+T8067883.java:20:9: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: T8067883.Box), (compiler.misc.infer.no.conforming.assignment.exists: X, (compiler.misc.inconvertible.types: java.util.List<java.lang.Integer>, java.util.List<java.lang.String>))
+T8067883.java:21:9: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: T8067883.Box), (compiler.misc.infer.no.conforming.assignment.exists: X, (compiler.misc.inconvertible.types: int, java.util.List<X>))
+4 errors
--- a/langtools/test/tools/javac/SerialWarn.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/test/tools/javac/SerialWarn.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,34 +1,11 @@
 /*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
+ * @test /nodynamiccopyright/
  * @bug 4854628
  * @summary include Throwable subclasses in missing serialVersionUID warning
  * @author gafter
  *
  * @compile                    -Werror SerialWarn.java
- * @compile/fail -Xlint:serial -Werror SerialWarn.java
+ * @compile/fail/ref=SerialWarn.out -XDrawDiagnostics -Xlint:serial -Werror SerialWarn.java
  */
 
 class SerialWarn extends Throwable {}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/SerialWarn.out	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,4 @@
+SerialWarn.java:11:1: compiler.warn.missing.SVUID: SerialWarn
+- compiler.err.warnings.and.werror
+1 error
+1 warning
--- a/langtools/test/tools/javac/T4994049/DeprecatedYES.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/test/tools/javac/T4994049/DeprecatedYES.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,33 +1,10 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
+ * @test    /nodynamiccopyright/
  * @bug     6229758
  * @summary deprecatedNOT! is
  * @author  Peter von der Ah\u00e9
  * @compile -Xlint:deprecation DeprecatedYES.java
- * @compile/fail -Werror -Xlint:deprecation DeprecatedYES.java
+ * @compile/fail/ref=DeprecatedYES.out -XDrawDiagnostics -Werror -Xlint:deprecation DeprecatedYES.java
  */
 
 class A {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/T4994049/DeprecatedYES.out	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,4 @@
+DeprecatedYES.java:18:10: compiler.warn.has.been.deprecated: foo(), A
+- compiler.err.warnings.and.werror
+1 error
+1 warning
--- a/langtools/test/tools/javac/T6231847.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/test/tools/javac/T6231847.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,9 +1,8 @@
 /*
- * @test  /nodynamiccopyright/
+ * @test    /nodynamiccopyright/
  * @bug     6231847
  * @summary Crash in com.sun.tools.javac.comp.Attr.visitNewClass:1352
  * @author  Peter von der Ah\u00e9
- * @compile/fail -XDdev T6231847.java
  * @compile/fail/ref=T6231847.out -XDdev -XDrawDiagnostics T6231847.java
  */
 
--- a/langtools/test/tools/javac/T6231847.out	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/test/tools/javac/T6231847.out	Mon Jan 19 11:35:45 2015 +0000
@@ -1,9 +1,9 @@
-T6231847.java:15:21: compiler.err.anon.class.impl.intf.no.typeargs
-T6231847.java:16:30: compiler.err.anon.class.impl.intf.no.args
+T6231847.java:14:21: compiler.err.anon.class.impl.intf.no.typeargs
+T6231847.java:15:30: compiler.err.anon.class.impl.intf.no.args
+T6231847.java:16:16: compiler.err.anon.class.impl.intf.no.qual.for.new
 T6231847.java:17:16: compiler.err.anon.class.impl.intf.no.qual.for.new
-T6231847.java:18:16: compiler.err.anon.class.impl.intf.no.qual.for.new
-T6231847.java:18:41: compiler.err.anon.class.impl.intf.no.args
-T6231847.java:18:23: compiler.err.anon.class.impl.intf.no.typeargs
-T6231847.java:19:16: compiler.err.qualified.new.of.static.class: T6231847.T6231847C
-T6231847.java:19:34: compiler.err.illegal.qual.not.icls: T6231847.T6231847C
+T6231847.java:17:41: compiler.err.anon.class.impl.intf.no.args
+T6231847.java:17:23: compiler.err.anon.class.impl.intf.no.typeargs
+T6231847.java:18:16: compiler.err.qualified.new.of.static.class: T6231847.T6231847C
+T6231847.java:18:34: compiler.err.illegal.qual.not.icls: T6231847.T6231847C
 8 errors
--- a/langtools/test/tools/javac/annotations/6214965/T6214965.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/test/tools/javac/annotations/6214965/T6214965.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,9 +23,10 @@
 
 /**
  * @test
- * @bug     6214965 6365854
+ * @bug     6214965 6365854 8068639
  * @summary Compiler crash on redefing nested annotation types
  * @compile CompilerAnnotationTest.java CompilerAnnotationTest2.java
  * @compile CompilerAnnotationTest2bad.java
- * @compile/ref=T6214965.out -XDrawDiagnostics CompilerAnnotationTest2bad.java
+ * @compile/ref=T6214965.out -XDrawDiagnostics -Xlint:classfile CompilerAnnotationTest2bad.java
+ * @compile -Werror CompilerAnnotationTest2bad.java
  */
--- a/langtools/test/tools/javac/annotations/6365854/T6365854.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/test/tools/javac/annotations/6365854/T6365854.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
 
 /**
  * @test
- * @bug     6365854
+ * @bug     6365854 8068639
  * @summary javac crashes when compiling against an annotated class
  * @compile TestAnnotation.java TestCore.java
  * @clean test.annotation.TestAnnotation
@@ -33,11 +33,11 @@
  *
  * @compile TestAnnotation.java TestCore.java
  * @clean test.annotation.TestAnnotation
- * @compile/ref=test1.out -XDrawDiagnostics T6365854.java
+ * @compile/ref=test1.out -XDrawDiagnostics -Xlint:classfile T6365854.java
  * @run main T6365854
- * @compile/ref=test2.out -XDrawDiagnostics evolve/TestAnnotation.java T6365854.java
+ * @compile/ref=test2.out -XDrawDiagnostics -Xlint:classfile evolve/TestAnnotation.java T6365854.java
  * @run main T6365854
- * @compile/ref=test2.out -XDrawDiagnostics T6365854.java
+ * @compile/ref=test2.out -XDrawDiagnostics -Xlint:classfile T6365854.java
  * @run main T6365854
  */
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/api/file/MyStandardJavaFileManager.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.io.File;
+import java.io.IOException;
+import javax.tools.ForwardingJavaFileManager;
+import javax.tools.JavaFileManager;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
+
+
+class MyStandardJavaFileManager
+        extends ForwardingJavaFileManager<StandardJavaFileManager>
+        implements StandardJavaFileManager {
+    MyStandardJavaFileManager(StandardJavaFileManager delegate) {
+        super(delegate);
+    }
+
+    @Override
+    public Iterable<? extends JavaFileObject> getJavaFileObjectsFromFiles(Iterable<? extends File> files) {
+        return fileManager.getJavaFileObjectsFromFiles(files);
+    }
+
+    @Override
+    public Iterable<? extends JavaFileObject> getJavaFileObjects(File... files) {
+        return fileManager.getJavaFileObjects(files);
+    }
+
+    @Override
+    public Iterable<? extends JavaFileObject> getJavaFileObjectsFromStrings(Iterable<String> names) {
+        return fileManager.getJavaFileObjectsFromStrings(names);
+    }
+
+    @Override
+    public Iterable<? extends JavaFileObject> getJavaFileObjects(String... names) {
+        return fileManager.getJavaFileObjects(names);
+    }
+
+    @Override
+    public void setLocation(JavaFileManager.Location location, Iterable<? extends File> files) throws IOException {
+        fileManager.setLocation(location, files);
+    }
+
+    @Override
+    public Iterable<? extends File> getLocation(JavaFileManager.Location location) {
+        return fileManager.getLocation(location);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/api/file/SJFM_AsPath.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8059977
+ * @summary StandardJavaFileManager should support java.nio.file.Path.
+ *          Test asPath method.
+ * @build SJFM_TestBase
+ * @run main SJFM_AsPath
+ */
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
+
+/**
+ * For those paths which are supported by a file manager, such that
+ * a file object can encapsulate the path, verify that the underlying
+ * path can be recovered from the file object.
+ */
+public class SJFM_AsPath extends SJFM_TestBase {
+    public static void main(String... args) throws Exception {
+        new SJFM_AsPath().run();
+    }
+
+    @Test
+    void test_asPath(StandardJavaFileManager fm) throws IOException {
+        test_asPath(fm, getTestFilePaths());
+        test_asPath(fm, getTestZipPaths());
+    }
+
+    /**
+     * Tests the asPath method for a specific file manager and a series
+     * of paths.
+     *
+     * Note: instances of MyStandardJavaFileManager only support
+     * encapsulating paths for files in the default file system,
+     * and throw UnsupportedOperationException for asPath.
+     *
+     * @param fm  the file manager to be tested
+     * @param paths  the paths to be tested
+     * @throws IOException
+     */
+    void test_asPath(StandardJavaFileManager fm, List<Path> paths) throws IOException {
+        if (!isGetFileObjectsSupported(fm, paths))
+            return;
+        boolean expectException = (fm instanceof MyStandardJavaFileManager);
+
+        Set<Path> ref = new HashSet<>(paths);
+        for (JavaFileObject fo : fm.getJavaFileObjectsFromPaths(paths)) {
+            try {
+                Path path = fm.asPath(fo);
+                if (expectException)
+                    error("expected exception not thrown: " + UnsupportedOperationException.class.getName());
+                boolean found = ref.remove(path);
+                if (!found) {
+                    error("Unexpected path found: " + path + "; expected one of " + ref);
+                }
+            } catch (Exception e) {
+                if (expectException && e instanceof UnsupportedOperationException)
+                    continue;
+                error("unexpected exception thrown: " + e);
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/api/file/SJFM_GetFileObjects.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,138 @@
+/*
+ * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8059977
+ * @summary StandardJavaFileManager should support java.nio.file.Path.
+ *          Test getFileObject methods.
+ * @build SJFM_TestBase
+ * @run main SJFM_GetFileObjects
+ */
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.Collections;
+import java.util.List;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.StandardLocation;
+
+/**
+ * For those paths supported by a file manager, verify that the paths
+ * can be encapsulated by file objects, such that the file objects can
+ * be used by a tool such as javac.
+ */
+public class SJFM_GetFileObjects extends SJFM_TestBase {
+    public static void main(String... args) throws Exception {
+        new SJFM_GetFileObjects().run();
+    }
+
+    @Test
+    void test_getJavaFileObjects(StandardJavaFileManager fm) throws IOException {
+        test_getJavaFileObjects(fm, getTestFilePaths());
+        test_getJavaFileObjects(fm, getTestZipPaths());
+    }
+
+    /**
+     * Tests the getJavaFileObjects method for a specific file manager
+     * and a series of paths.
+     *
+     * Note: instances of MyStandardJavaFileManager only support
+     * encapsulating paths for files in the default file system.
+     *
+     * @param fm  the file manager to be tested
+     * @param paths  the paths to be tested
+     * @throws IOException
+     */
+    void test_getJavaFileObjects(StandardJavaFileManager fm, List<Path> paths) throws IOException {
+        boolean expectException = !isGetFileObjectsSupported(fm, paths);
+        try {
+            compile(fm.getJavaFileObjects(paths.toArray(new Path[paths.size()])));
+            if (expectException)
+                error("expected exception not thrown");
+        } catch (RuntimeException e) {
+            if (expectException && e instanceof IllegalArgumentException)
+                return;
+            error("unexpected exception thrown: " + e);
+        }
+    }
+
+    //----------------------------------------------------------------------------------------------
+
+    @Test
+    void test_getJavaFileObjectsFromPaths(StandardJavaFileManager fm) throws IOException {
+        test_getJavaFileObjectsFromPaths(fm, getTestFilePaths());
+        test_getJavaFileObjectsFromPaths(fm, getTestZipPaths());
+    }
+
+    /**
+     * Tests the getJavaFileObjectsFromPaths method for a specific file manager
+     * and a series of paths.
+     *
+     * Note: instances of MyStandardJavaFileManager only support
+     * encapsulating paths for files in the default file system.
+     *
+     * @param fm  the file manager to be tested
+     * @param paths  the paths to be tested
+     * @throws IOException
+     */
+    void test_getJavaFileObjectsFromPaths(StandardJavaFileManager fm, List<Path> paths)
+            throws IOException {
+        boolean expectException = !isGetFileObjectsSupported(fm, paths);
+        try {
+            compile(fm.getJavaFileObjectsFromPaths(paths));
+            if (expectException)
+                error("expected exception not thrown: " + IllegalArgumentException.class.getName());
+        } catch (RuntimeException e) {
+            if (expectException && e instanceof IllegalArgumentException)
+                return;
+            error("unexpected exception thrown: " + e);
+        }
+    }
+
+
+    //----------------------------------------------------------------------------------------------
+
+    /**
+     * Compiles a set of files.
+     *
+     * @param files the files to be compiled.
+     * @throws IOException
+     */
+    void compile(Iterable<? extends JavaFileObject> files) throws IOException {
+        String name = "compile" + (compileCount++);
+        try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
+            File f = new File(name);
+            f.mkdirs();
+            // use setLocation(Iterable<File>) to avoid relying on setLocationFromPaths
+            fm.setLocation(StandardLocation.CLASS_OUTPUT, Collections.singleton(f));
+            boolean ok = comp.getTask(null, fm, null, null, null, files).call();
+            if (!ok)
+                error(name + ": compilation failed");
+        }
+    }
+
+    int compileCount;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/api/file/SJFM_IsSameFile.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8059977
+ * @summary StandardJavaFileManager should support java.nio.file.Path.
+ *          Test isSameFile method.
+ * @build SJFM_TestBase
+ * @run main SJFM_IsSameFile
+ */
+
+import java.nio.file.Path;
+import java.util.List;
+import java.util.concurrent.Callable;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
+
+/**
+ * For those paths which are supported by a file manager, such that
+ * a file object can encapsulate the path, verify that the underlying
+ * paths can be compared.
+ */
+public class SJFM_IsSameFile extends SJFM_TestBase {
+    public static void main(String... args) throws Exception {
+        new SJFM_IsSameFile().run();
+    }
+
+    @Test
+    void test_isSameFile(StandardJavaFileManager fm) throws Exception {
+        test_isSameFile(fm, () -> getTestFilePaths());
+        test_isSameFile(fm, () -> getTestZipPaths());
+    }
+
+    /**
+     * Tests the isSameFile method for a specific file manager
+     * and a series of paths.
+     *
+     * Note: instances of MyStandardJavaFileManager only support
+     * encapsulating paths for files in the default file system.
+     *
+     * @param fm  the file manager to be tested
+     * @param paths  a generator for the paths to be tested
+     * @throws IOException
+     */
+    void test_isSameFile(StandardJavaFileManager fm, Callable<List<Path>> paths) throws Exception {
+        if (!isGetFileObjectsSupported(fm, paths.call()))
+            return;
+
+        // use distinct paths and file objects in the following two sets
+        Iterable<? extends JavaFileObject> setA = fm.getJavaFileObjectsFromPaths(paths.call());
+        Iterable<? extends JavaFileObject> setB = fm.getJavaFileObjectsFromPaths(paths.call());
+        for (JavaFileObject a : setA) {
+            for (JavaFileObject b : setB) {
+                System.err.println("compare: a: " + a);
+                System.err.println("         b: " + b);
+                // Use the fileObject getName method to determine the expected result.
+                // For the files being tested, getName is the absolute path.
+                boolean expect = a.getName().equals(b.getName());
+                boolean actual = fm.isSameFile(a, b);
+                if (actual != expect) {
+                    error("mismatch: actual:" + (actual ? "same" : "not same")
+                            + ", expect:" + (expect ? "same" : "not same"));
+                }
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/api/file/SJFM_Locations.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,179 @@
+/*
+ * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8059977
+ * @summary StandardJavaFileManager should support java.nio.file.Path.
+ *          Test get/setLocation methods.
+ * @build SJFM_TestBase
+ * @run main SJFM_Locations
+ */
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import javax.tools.JavaFileManager;
+import javax.tools.StandardJavaFileManager;
+
+/**
+ * For those paths which are supported by a file manager, verify
+ * that setLocation can accept such paths, and that getLocation
+ * can subsequently return the same paths.
+ *
+ * In addition, for files in the default file system, verify
+ * the combinations of setting a location using files or paths
+ * and then subsequently getting the location as files or paths.
+ */
+public class SJFM_Locations extends SJFM_TestBase {
+    public static void main(String... args) throws Exception {
+        new SJFM_Locations().run();
+    }
+
+    @Test
+    void test_locations(StandardJavaFileManager fm) throws IOException {
+        test_setFiles_getFiles(fm, getTestFileDirs());
+        test_setFiles_getPaths(fm, getTestFileDirs());
+        test_setPaths_getFiles(fm, getTestFilePathDirs());
+        test_setPaths_getPaths(fm, getTestFilePathDirs());
+//        test_setPaths_getPaths(fm, getTestZipPathDirs());
+    }
+
+    void test_setFiles_getFiles(StandardJavaFileManager fm, List<File> inFiles) throws IOException {
+        System.err.println("test_setFiles_getFiles");
+        JavaFileManager.Location l = newLocation();
+        fm.setLocation(l, inFiles);
+        Iterable<? extends File> outFiles = fm.getLocation(l);
+        compare(inFiles, outFiles);
+    }
+
+    void test_setFiles_getPaths(StandardJavaFileManager fm, List<File> inFiles) throws IOException {
+        System.err.println("test_setFiles_getPaths");
+        JavaFileManager.Location l = newLocation();
+        fm.setLocation(l, inFiles);
+        Iterable<? extends Path> outPaths = fm.getLocationAsPaths(l);
+        compare(inFiles, outPaths);
+    }
+
+    void test_setPaths_getFiles(StandardJavaFileManager fm, List<Path> inPaths) throws IOException {
+        System.err.println("test_setPaths_getFiles");
+        JavaFileManager.Location l = newLocation();
+        fm.setLocationFromPaths(l, inPaths);
+        Iterable<? extends File> outFiles = fm.getLocation(l);
+        compare(inPaths, outFiles);
+    }
+
+    void test_setPaths_getPaths(StandardJavaFileManager fm, List<Path> inPaths) throws IOException {
+        System.err.println("test_setPaths_getPaths");
+        JavaFileManager.Location l = newLocation();
+        fm.setLocationFromPaths(l, inPaths);
+        Iterable<? extends Path> outPaths = fm.getLocationAsPaths(l);
+        compare(inPaths, outPaths);
+    }
+
+    //----------------------------------------------------------------------------------------------
+
+    /**
+     * Gets a representative series of directories in the default file system,
+     * derived from the test.src directory and test.classes path.
+     *
+     * @return a list of directories, represented with {@code File}
+     * @throws IOException
+     */
+    List<File> getTestFileDirs() throws IOException {
+        return Stream.of("test.src", "test.classes")
+                .map(s -> System.getProperty(s))
+                .flatMap(s -> Stream.of(s.split(File.pathSeparator, 0)))
+                .filter(s -> !s.isEmpty())
+                .map(s -> new File(s))
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * Gets a representative series of directories in the default file system,
+     * derived from the test.src directory and test.classes path.
+     *
+     * @return a list of directories, represented with {@code Path}
+     * @throws IOException
+     */
+    List<Path> getTestFilePathDirs() throws IOException {
+        return Stream.of("test.src", "test.classes")
+                .map(s -> System.getProperty(s))
+                .flatMap(s -> Stream.of(s.split(File.pathSeparator, 0)))
+                .filter(s -> !s.isEmpty())
+                .map(s -> Paths.get(s))
+                .collect(Collectors.toList());
+    }
+
+
+    /**
+     * Compares two lists of items by comparing their individual string representations.
+     *
+     * @param in   the first set of items to be compared
+     * @param out  the second set of items to be compared
+     */
+    void compare(Iterable<?> in, Iterable<?> out) {
+        List<String> ins = toString(in);
+        List<String> outs = toString(out);
+        if (!ins.equals(outs)) {
+            error("mismatch in comparison");
+            System.err.println("in:");
+            for (String s: ins) System.err.println(s);
+            System.err.println("out:");
+            for (String s: outs) System.err.println(s);
+        }
+    }
+
+    List<String> toString(Iterable<?> iter) {
+        List<String> strings = new ArrayList<>();
+        for (Object item: iter)
+            strings.add(item.toString());
+        return strings;
+    }
+
+    /**
+     * Create an instance of a location.
+     * @return a location
+     */
+    JavaFileManager.Location newLocation() {
+        final String name = "locn" + (count++);
+        return new JavaFileManager.Location() {
+            @Override
+            public String getName() {
+                return name;
+            }
+
+            @Override
+            public boolean isOutputLocation() {
+                return false;
+            }
+        };
+    }
+
+    int count = 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/api/file/SJFM_TestBase.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,226 @@
+/*
+ * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.UncheckedIOException;
+import java.lang.annotation.Annotation;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.nio.file.FileSystem;
+import java.nio.file.FileSystems;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+import javax.tools.JavaCompiler;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.ToolProvider;
+
+/**
+ * Base class for unit tests for StandardJavaFileManager.
+ */
+class SJFM_TestBase {
+
+    /** Shared compiler instance. */
+    JavaCompiler comp;
+
+    /** A list of items to be closed when the test is complete. */
+    List<AutoCloseable> closeables;
+
+    /**
+     * Runs a test. This is the primary entry point and should generally be
+     * called from each test's main method.
+     * It calls all methods annotated with {@code @Test} with the instances
+     * of StandardJavaFileManager to be tested.
+     *
+     * @throws Exception if the test fails.
+     */
+    void run() throws Exception {
+        comp = ToolProvider.getSystemJavaCompiler();
+        closeables = new ArrayList<>();
+
+        try (StandardJavaFileManager systemFileManager = comp.getStandardFileManager(null, null, null);
+                StandardJavaFileManager customFileManager = new MyStandardJavaFileManager(systemFileManager)) {
+            test(systemFileManager);
+            test(customFileManager);
+        } finally {
+            for (AutoCloseable c: closeables) {
+                try {
+                    c.close();
+                } catch (IOException e) {
+                    error("Exception closing " + c + ": " + e);
+                }
+            }
+        }
+
+        if (errors > 0)
+            throw new Exception(errors + " errors occurred");
+    }
+
+    /**
+     * Get the file managers to be tested.
+     *
+     * Currently, two are provided:
+     * <ol>
+     * <li>the system-provided file manager
+     * <li>a custom file manager, which relies on the default methods provided in the
+     *     StandardJavaFileManager interface
+     * </li>
+     *
+     * @return the file managers to be tested
+     */
+    List<StandardJavaFileManager> getTestFileManagers() {
+        StandardJavaFileManager systemFileManager = comp.getStandardFileManager(null, null, null);
+        StandardJavaFileManager customFileManager = new MyStandardJavaFileManager(systemFileManager);
+        return Arrays.asList(systemFileManager, customFileManager);
+    }
+
+    /**
+     * Tests a specific file manager, by calling all methods annotated
+     * with {@code @Test} passing this file manager as an argument.
+     *
+     * @param fm the file manager to be tested
+     * @throws Exception if the test fails
+     */
+    void test(StandardJavaFileManager fm) throws Exception {
+        System.err.println("Testing " + fm);
+        for (Method m: getClass().getDeclaredMethods()) {
+            Annotation a = m.getAnnotation(Test.class);
+            if (a != null) {
+                try {
+                    System.err.println("Test " + m.getName());
+                    m.invoke(this, new Object[] { fm });
+                } catch (InvocationTargetException e) {
+                    Throwable cause = e.getCause();
+                    throw (cause instanceof Exception) ? ((Exception) cause) : e;
+                }
+                System.err.println();
+            }
+        }
+    }
+
+    /** Marker annotation for test cases. */
+    @Retention(RetentionPolicy.RUNTIME)
+    @interface Test { }
+
+    /**
+     * Returns a series of paths for artifacts in the default file system.
+     * The paths are for the .java files in the test.src directory.
+     *
+     * @return a list of paths
+     * @throws IOException
+     */
+    List<Path> getTestFilePaths() throws IOException {
+        String testSrc = System.getProperty("test.src");
+        return Files.list(Paths.get(testSrc))
+                .filter(p -> p.getFileName().toString().endsWith(".java"))
+                .collect(Collectors.toList());
+    }
+
+    private FileSystem zipfs;
+    private List<Path> zipPaths;
+
+    /**
+     * Returns a series of paths for artifacts in a non-default file system.
+     * A zip file is created containing copies of the .java files in the
+     * test.src directory. The paths that are returned refer to these files.
+     *
+     * @return a list of paths
+     * @throws IOException
+     */
+    List<Path> getTestZipPaths() throws IOException {
+        if (zipfs == null) {
+            Path testZip = createSourceZip();
+            zipfs = FileSystems.newFileSystem(testZip, null);
+            closeables.add(zipfs);
+            zipPaths = Files.list(zipfs.getRootDirectories().iterator().next())
+                .filter(p -> p.getFileName().toString().endsWith(".java"))
+                .collect(Collectors.toList());
+        }
+        return zipPaths;
+    }
+
+    /**
+     * Create a zip file containing the contents of the test.src directory.
+     *
+     * @return a path for the zip file.
+     * @throws IOException if there is a problem creating the file
+     */
+    private Path createSourceZip() throws IOException {
+        Path testSrc = Paths.get(System.getProperty("test.src"));
+        Path testZip = Paths.get("test.zip");
+        try (OutputStream os = Files.newOutputStream(testZip)) {
+            try (ZipOutputStream zos = new ZipOutputStream(os)) {
+                Files.list(testSrc)
+                    .filter(p -> p.getFileName().toString().endsWith(".java"))
+                    .forEach(p -> {
+                        try {
+                            zos.putNextEntry(new ZipEntry(p.getFileName().toString()));
+                            zos.write(Files.readAllBytes(p));
+                            zos.closeEntry();
+                        } catch (IOException ex) {
+                            throw new UncheckedIOException(ex);
+                        }
+                    });
+            }
+        }
+        return testZip;
+    }
+
+    /**
+     * Tests whether it is expected that a file manager will be able
+     * to create a series of file objects from a series of paths.
+     *
+     * MyStandardJavaFileManager does not support paths referring to
+     * non-default file systems.
+     *
+     * @param fm  the file manager to be tested
+     * @param paths  the paths to be tested
+     * @return
+     */
+    boolean isGetFileObjectsSupported(StandardJavaFileManager fm, List<Path> paths) {
+        return !(fm instanceof MyStandardJavaFileManager
+                && (paths.get(0).getFileSystem() != FileSystems.getDefault()));
+    }
+
+    /**
+     * Report an error.
+     */
+    void error(String msg) {
+        System.err.println("Error: " + msg);
+        errors++;
+    }
+
+    /** Count of errors reported. */
+    int errors;
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/conditional/ConditionalWithFinalStrings.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8066871
+ * @summary java.lang.VerifyError: Bad local variable type - local final String
+ * @author Srikanth Sankaran
+ *
+ * @compile -g:none ConditionalWithFinalStrings.java
+ * @run main ConditionalWithFinalStrings
+ */
+
+public class ConditionalWithFinalStrings {
+
+        interface I {
+            String foo();
+        }
+
+        static class Tmp {
+                private String value;
+                public void setValue(String tmpStr) {
+                        this.value = tmpStr;
+                        if (!this.value.equals("YES"))
+                            throw new AssertionError();
+                }
+        }
+
+        void goo(I i) {
+            if (!i.foo().equals("YES"))
+                throw new AssertionError();
+        }
+
+        public void test() {
+                final String y = "YES";
+                final String n = "NO";
+                Tmp tmp = new Tmp();
+                tmp.setValue(true ? y : n);
+                goo (() -> y);
+
+        }
+        public static void main(String[] args) {
+                new ConditionalWithFinalStrings().test();
+                if (!id("Hello!").equals("Hello!"))
+                    throw new AssertionError();
+
+        }
+        static <Z> Z id(Z z) { return z; }
+}
--- a/langtools/test/tools/javac/diags/MessageFile.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/test/tools/javac/diags/MessageFile.java	Mon Jan 19 11:35:45 2015 +0000
@@ -31,7 +31,9 @@
  */
 class MessageFile {
     static final Pattern emptyOrCommentPattern = Pattern.compile("( *#.*)?");
-    static final Pattern infoPattern = Pattern.compile("# ([0-9]+: [-A-Za-z ]+, )*[0-9]+: [-A-Za-z ]+");
+    static final Pattern typePattern = Pattern.compile("[-\\\\'A-Z\\.a-z ]+( \\([A-Za-z 0-9]+\\))?");
+    static final Pattern infoPattern = Pattern.compile(String.format("# ([0-9]+: %s, )*[0-9]+: %s",
+            typePattern.pattern(), typePattern.pattern()));
 
     /**
      * A line of text within the message file.
--- a/langtools/test/tools/javac/flow/LVTHarness.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/test/tools/javac/flow/LVTHarness.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 7047734 8027660 8037937 8047719 8058708
+ * @bug 7047734 8027660 8037937 8047719 8058708 8064857
  * @summary The LVT is not generated correctly during some try/catch scenarios
  *          javac crash while creating LVT entry for a local variable defined in
  *          an inner block
@@ -147,7 +147,7 @@
     }
 
     void checkMethod(ConstantPool constantPool, Method method, AliveRanges ranges)
-            throws InvalidIndex, UnexpectedEntry {
+            throws InvalidIndex, UnexpectedEntry, ConstantPoolException {
         Code_attribute code = (Code_attribute) method.attributes.get(Attribute.Code);
         LocalVariableTable_attribute lvt =
             (LocalVariableTable_attribute) (code.attributes.get(Attribute.LocalVariableTable));
@@ -169,7 +169,7 @@
         }
 
         if (i < infoFromRanges.size()) {
-            error(infoFromLVT, infoFromRanges);
+            error(infoFromLVT, infoFromRanges, method.getName(constantPool).toString());
         }
     }
 
@@ -205,9 +205,10 @@
         return sb.toString();
     }
 
-    protected void error(List<String> infoFromLVT, List<String> infoFromRanges) {
+    protected void error(List<String> infoFromLVT, List<String> infoFromRanges, String methodName) {
         nerrors++;
         System.err.printf("Error occurred while checking file: %s\n", jfo.getName());
+        System.err.printf("at method: %s\n", methodName);
         System.err.println("The range info from the annotations is");
         printStringListToErrOutput(infoFromRanges);
         System.err.println();
--- a/langtools/test/tools/javac/flow/tests/TestCaseFor.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/test/tools/javac/flow/tests/TestCaseFor.java	Mon Jan 19 11:35:45 2015 +0000
@@ -2,7 +2,7 @@
 
 public class TestCaseFor {
 
-    @AliveRange(varName="o", bytecodeStart=10, bytecodeLength=8)
+    @AliveRange(varName="o", bytecodeStart=10, bytecodeLength=11)
     @AliveRange(varName="o", bytecodeStart=24, bytecodeLength=1)
     void m1(String[] args) {
         Object o;
@@ -13,7 +13,7 @@
         o = "";
     }
 
-    @AliveRange(varName="o", bytecodeStart=10, bytecodeLength=8)
+    @AliveRange(varName="o", bytecodeStart=10, bytecodeLength=11)
     @AliveRange(varName="o", bytecodeStart=24, bytecodeLength=1)
     void m2(String[] args) {
         Object o;
--- a/langtools/test/tools/javac/flow/tests/TestCaseForEach.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/test/tools/javac/flow/tests/TestCaseForEach.java	Mon Jan 19 11:35:45 2015 +0000
@@ -2,7 +2,7 @@
 
 public class TestCaseForEach {
 
-    @AliveRange(varName="o", bytecodeStart=25, bytecodeLength=8)
+    @AliveRange(varName="o", bytecodeStart=25, bytecodeLength=11)
     @AliveRange(varName="o", bytecodeStart=39, bytecodeLength=1)
     void m(String[] args) {
         Object o;
--- a/langtools/test/tools/javac/flow/tests/TestCaseIfElse.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/test/tools/javac/flow/tests/TestCaseIfElse.java	Mon Jan 19 11:35:45 2015 +0000
@@ -60,4 +60,19 @@
         }
         return null;
     }
+
+    @AliveRange(varName="i", bytecodeStart=6, bytecodeLength=2)
+    int m4(boolean flag) {
+        int i;
+        label:
+        {
+            if (flag) {
+                i = 1;
+            } else {
+                break label;
+            }
+            return i;
+        }
+        return -1;
+    }
 }
--- a/langtools/test/tools/javac/flow/tests/TestCaseSwitch.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/test/tools/javac/flow/tests/TestCaseSwitch.java	Mon Jan 19 11:35:45 2015 +0000
@@ -81,4 +81,26 @@
         o = "finish";
     }
 
+    @AliveRange(varName="oCache", bytecodeStart=30, bytecodeLength=6)
+    @AliveRange(varName="cache", bytecodeStart=41, bytecodeLength=3)
+    @AliveRange(varName="cache", bytecodeStart=54, bytecodeLength=2)
+    @AliveRange(varName="service", bytecodeStart=39, bytecodeLength=5)
+    Object m4(int i) {
+        Object cache;
+        switch (i) {
+            case 0:
+                Object oCache = null;
+                if (oCache != null) {
+                    return oCache;
+                }
+            case 1:
+                Object service = null;
+                cache = null;
+                break;
+            default:
+                throw new AssertionError("");
+            }
+        return cache;
+    }
+
 }
--- a/langtools/test/tools/javac/flow/tests/TestCaseTry.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/test/tools/javac/flow/tests/TestCaseTry.java	Mon Jan 19 11:35:45 2015 +0000
@@ -17,7 +17,8 @@
     }
 
     @AliveRange(varName="o", bytecodeStart=3, bytecodeLength=16)
-    @AliveRange(varName="o", bytecodeStart=23, bytecodeLength=23)
+    @AliveRange(varName="o", bytecodeStart=23, bytecodeLength=8)
+    @AliveRange(varName="o", bytecodeStart=35, bytecodeLength=11)
     void m1() {
         Object o;
         try {
@@ -33,7 +34,8 @@
     }
 
     @AliveRange(varName="o", bytecodeStart=3, bytecodeLength=16)
-    @AliveRange(varName="o", bytecodeStart=23, bytecodeLength=31)
+    @AliveRange(varName="o", bytecodeStart=23, bytecodeLength=16)
+    @AliveRange(varName="o", bytecodeStart=43, bytecodeLength=11)
     void m2() {
         Object o;
         try {
@@ -51,7 +53,8 @@
     }
 
     @AliveRange(varName="o", bytecodeStart=22, bytecodeLength=38)
-    @AliveRange(varName="o", bytecodeStart=103, bytecodeLength=8)
+    @AliveRange(varName="o", bytecodeStart=103, bytecodeLength=3)
+    @AliveRange(varName="o", bytecodeStart=110, bytecodeLength=1)
     void m3() {
         Object o;
         try (BufferedReader br =
--- a/langtools/test/tools/javac/flow/tests/TestCaseWhile.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/test/tools/javac/flow/tests/TestCaseWhile.java	Mon Jan 19 11:35:45 2015 +0000
@@ -2,7 +2,7 @@
 
 public class TestCaseWhile {
 
-    @AliveRange(varName="o", bytecodeStart=9, bytecodeLength=5)
+    @AliveRange(varName="o", bytecodeStart=9, bytecodeLength=8)
     @AliveRange(varName="o", bytecodeStart=20, bytecodeLength=1)
     void m(String[] args) {
         Object o;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/generics/MissingCast2.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8043741
+ * @summary VerifyError due to missing checkcast
+ * @author srikanth
+ *
+ * @compile  MissingCast2.java
+ * @run main MissingCast2
+ */
+
+import java.util.*;
+
+public class MissingCast2 {
+  public static void main(String[] args) {
+          new E();
+  }
+}
+
+class S<T> {
+    T t;
+}
+
+class C {
+    class I { };
+}
+
+class E extends S<C> {
+    {
+        t = new C();
+        t.new I() { };
+    }
+};
--- a/langtools/test/tools/javac/overrridecrash/B.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/test/tools/javac/overrridecrash/B.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,33 +1,10 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
+ * @test /nodynamiccopyright/
  * @bug 4909690
  * @summary AssertionError(com.sun.tools.javac.v8.code.Symbol$MethodSymbol.isOverridableIn)
  * @author gafter
  *
- * @compile/fail B.java
+ * @compile/fail/ref=B.out -XDrawDiagnostics B.java
  */
 
 public class B extends A
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/overrridecrash/B.out	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,3 @@
+B.java:12:27: compiler.err.illegal.combination.of.modifiers: private, protected
+A.java:25:27: compiler.err.illegal.combination.of.modifiers: private, protected
+2 errors
--- a/langtools/test/tools/javac/processing/6365040/T6365040.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/test/tools/javac/processing/6365040/T6365040.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,28 +1,5 @@
 /*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
+ * @test /nodynamiccopyright/
  * @bug 6365040 6358129
  * @summary Test -processor foo,bar,baz
  * @author  Joseph D. Darcy
@@ -34,8 +11,8 @@
  * @compile      -processor ProcFoo,ProcBar,T6365040  -proc:only T6365040.java
  * @compile      -processor T6365040                  -proc:only T6365040.java
  * @compile      -processor T6365040,NotThere,        -proc:only T6365040.java
- * @compile/fail -processor NotThere                  -proc:only T6365040.java
- * @compile/fail -processor NotThere,T6365040         -proc:only T6365040.java
+ * @compile/fail/ref=T6365040.out -XDrawDiagnostics -processor NotThere -proc:only T6365040.java
+ * @compile/fail/ref=T6365040.out -XDrawDiagnostics -processor NotThere,T6365040 -proc:only T6365040.java
  */
 
 import java.util.Set;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/processing/6365040/T6365040.out	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,4 @@
+- compiler.err.proc.processor.not.found: NotThere
+- compiler.warn.proc.proc-only.requested.no.procs
+1 error
+1 warning
--- a/langtools/test/tools/javac/processing/6511613/clss41701.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/test/tools/javac/processing/6511613/clss41701.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,35 +1,11 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
+ * @test /nodynamiccopyright/
  * @bug 6511613
  * @summary javac unexpectedly doesn't fail in some cases if an annotation processor specified
- *
  * @library /tools/javac/lib
  * @build JavacTestingAbstractProcessor DummyProcessor
- * @compile/fail clss41701.java
- * @compile/fail -processor DummyProcessor clss41701.java
+ * @compile/fail/ref=clss41701.out -XDrawDiagnostics clss41701.java
+ * @compile/fail/ref=clss41701.out -XDrawDiagnostics -processor DummyProcessor clss41701.java
  */
 
 import java.io.PrintStream;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/processing/6511613/clss41701.out	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,2 @@
+clss41701.java:19:30: compiler.err.type.var.may.not.be.followed.by.other.bounds
+1 error
--- a/langtools/test/tools/javac/processing/errors/TestFatalityOfParseErrors.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/test/tools/javac/processing/errors/TestFatalityOfParseErrors.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,28 +1,5 @@
 /*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
+ * @test /nodynamiccopyright/
  * @bug 6403459
  * @summary Test that generating programs with syntax errors is a fatal condition
  * @author  Joseph D. Darcy
@@ -30,7 +7,7 @@
  * @build JavacTestingAbstractProcessor
  * @compile TestReturnCode.java
  * @compile TestFatalityOfParseErrors.java
- * @compile/fail -XprintRounds -processor TestFatalityOfParseErrors -proc:only TestFatalityOfParseErrors.java
+ * @compile/fail/ref=TestFatalityOfParseErrors.out -XDrawDiagnostics -XprintRounds -processor TestFatalityOfParseErrors -proc:only TestFatalityOfParseErrors.java
  */
 
 import java.util.Set;
@@ -49,41 +26,12 @@
  * is marked as an error.
  */
 public class TestFatalityOfParseErrors extends JavacTestingAbstractProcessor {
-    int round = 0;
 
     public boolean process(Set<? extends TypeElement> annotations,
                            RoundEnvironment roundEnvironment) {
-        try {
-            PrintWriter pw = null;
-            round++;
-
-            switch (round) {
-            case 1:
-                pw = new PrintWriter(filer.createSourceFile("SyntaxError").openWriter());
-                pw.println("class SyntaxError {");
-                pw.close();
-                break;
-
-            case 2:
-                pw = new PrintWriter(filer.createSourceFile("SimpleClass").openWriter());
-                pw.println("class SimpleClass {}");
-                pw.close();
-
-                if (!roundEnvironment.errorRaised() || !roundEnvironment.processingOver() ) {
-                    System.err.println(roundEnvironment);
-                    throw new RuntimeException("Second round not erroneous as expected.");
-                }
-                if (!roundEnvironment.getRootElements().isEmpty()) {
-                    System.err.println(roundEnvironment);
-                    throw new RuntimeException("Root elements not empty as expected.");
-                }
-                break;
-
-            default:
-                throw new RuntimeException("Unexpected round number " + round);
-            }
+        try (PrintWriter pw = new PrintWriter(filer.createSourceFile("SyntaxError").openWriter())) {
+            pw.println("class SyntaxError {");
         } catch (IOException ioException) {
-            throw new RuntimeException(ioException);
         }
         return true;
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/processing/errors/TestFatalityOfParseErrors.out	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,10 @@
+Round 1:
+	input files: {TestFatalityOfParseErrors}
+	annotations: []
+	last round: false
+Round 2:
+	input files: {}
+	annotations: []
+	last round: true
+SyntaxError.java:1:20: compiler.err.premature.eof
+1 error
--- a/langtools/test/tools/javac/processing/messager/MessagerBasics.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/test/tools/javac/processing/messager/MessagerBasics.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,28 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
+ * @test    /nodynamiccopyright/
  * @bug     6341173 6341072
  * @summary Test presence of Messager methods
  * @author  Joseph D. Darcy
@@ -30,9 +7,9 @@
  * @build   JavacTestingAbstractProcessor
  * @compile MessagerBasics.java
  * @compile -processor MessagerBasics -proc:only MessagerBasics.java
- * @compile/fail -processor MessagerBasics -proc:only -AfinalError MessagerBasics.java
+ * @compile/fail/ref=MessagerBasics.out -XDrawDiagnostics -processor MessagerBasics -proc:only -AfinalError MessagerBasics.java
  * @compile -processor MessagerBasics MessagerBasics.java
- * @compile/fail -processor MessagerBasics -AfinalError MessagerBasics.java
+ * @compile/fail/ref=MessagerBasics.out -XDrawDiagnostics -processor MessagerBasics -AfinalError MessagerBasics.java
  */
 
 import java.util.Set;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/processing/messager/MessagerBasics.out	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,2 @@
+- compiler.err.proc.messager: Does not compute
+1 error
--- a/langtools/test/tools/javac/staticQualifiedNew/StaticQualifiedNew.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/langtools/test/tools/javac/staticQualifiedNew/StaticQualifiedNew.java	Mon Jan 19 11:35:45 2015 +0000
@@ -1,33 +1,9 @@
 /*
- * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
+ * @test /nodynamiccopyright/
  * @bug 4295650
  * @summary Verify that qualified 'new' of static class is forbidden.
  * @author maddox (after gbracha)
- *
- * @compile/fail StaticQualifiedNew.java
+ * @compile/fail/ref=StaticQualifiedNew.out -XDrawDiagnostics StaticQualifiedNew.java
  */
 
 import p2.X;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/staticQualifiedNew/StaticQualifiedNew.out	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,2 @@
+StaticQualifiedNew.java:13:11: compiler.err.qualified.new.of.static.class: p2.X.M
+1 error
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/tree/8067914/E.out	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,16 @@
+
+class E extends S {
+    
+    E() {
+        super();
+    }
+    {
+        t = new C();
+        new I(<*nullchk*>((C)t)){
+            
+            (.C x0) {
+                x0.super();
+            }
+        };
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/tree/8067914/NukeExtraCast.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8067914
+ * @summary Redunant type cast nodes in AST (follow up from JDK-8043741)
+ * @library /tools/lib
+ * @build ToolBox
+ * @run compile -XD-printsource T8067914.java
+ * @run main NukeExtraCast
+ */
+
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+
+public class NukeExtraCast {
+
+    public static void main(String[] args) throws Exception {
+        ToolBox tb = new ToolBox();
+        Path path1 = Paths.get(ToolBox.testClasses, "E.java");
+        List<String> file1 = tb.readAllLines(path1);
+
+        Path path2 = Paths.get(ToolBox.testSrc, "E.out");
+        List<String> file2 = tb.readAllLines(path2);
+        tb.checkEqual(file1, file2);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/tree/8067914/T8067914.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+class S<T> { T t; }
+class C { class I { }; }
+class E extends S<C> {{
+  t = new C();
+  ((C) t).new I() { };
+}};
+class X {
+  public static void main(String[] args) { new E(); }
+}
+
--- a/make/Jprt.gmk	Mon Jan 19 09:32:40 2015 +0100
+++ b/make/Jprt.gmk	Mon Jan 19 11:35:45 2015 +0000
@@ -35,6 +35,9 @@
   ifdef JPRT_ARCHIVE_INSTALL_BUNDLE
     override JPRT_ARCHIVE_INSTALL_BUNDLE := $(shell $(CYGPATH) -u $(JPRT_ARCHIVE_INSTALL_BUNDLE))
   endif
+  ifdef JPRT_ARCHIVE_TEST_BUNDLE
+    override JPRT_ARCHIVE_TEST_BUNDLE := $(shell $(CYGPATH) -u $(JPRT_ARCHIVE_TEST_BUNDLE))
+  endif
 endif
 
 # When running in JPRT these will be provided. Need defaults so that this makefile
@@ -45,13 +48,16 @@
 ifndef JPRT_ARCHIVE_INSTALL_BUNDLE
   JPRT_ARCHIVE_INSTALL_BUNDLE=/tmp/jprt_bundles/product-install.zip
 endif
+ifndef JPRT_ARCHIVE_TEST_BUNDLE
+  JPRT_ARCHIVE_TEST_BUNDLE=/tmp/jprt_bundles/test-image.zip
+endif
 
 ifeq ($(SKIP_BOOT_CYCLE), false)
   jprt_bundle: bootcycle-images
 endif
 
 # This target must be called in the context of a SPEC file
-jprt_bundle: $(JPRT_ARCHIVE_BUNDLE)
+jprt_bundle: $(JPRT_ARCHIVE_BUNDLE) $(JPRT_ARCHIVE_TEST_BUNDLE)
 
 # This target must be called in the context of a SPEC file
 $(JPRT_ARCHIVE_BUNDLE): bundles
@@ -59,8 +65,14 @@
 	$(RM) $@
 	$(CP) $(BUILD_OUTPUT)/bundles/$(JDK_IMAGE_SUBDIR).zip $@
 
+$(JPRT_ARCHIVE_TEST_BUNDLE): bundles
+	$(MKDIR) -p $(@D)
+	$(RM) $@
+	$(CP) $(BUILD_OUTPUT)/bundles/$(TEST_IMAGE_SUBDIR).zip $@
+
 SRC_JDK_IMAGE_DIR := $(JDK_IMAGE_DIR)
 SRC_JRE_IMAGE_DIR := $(JRE_IMAGE_DIR)
+SRC_TEST_IMAGE_DIR := $(TEST_IMAGE_DIR)
 SRC_JDK_BUNDLE_DIR := $(JDK_BUNDLE_DIR)
 SRC_JRE_BUNDLE_DIR := $(JRE_BUNDLE_DIR)
 
@@ -70,6 +82,7 @@
 	$(MKDIR) -p $(BUILD_OUTPUT)/bundles
 	$(CD) $(SRC_JDK_IMAGE_DIR) && $(ZIP) -y -q -r $(BUILD_OUTPUT)/bundles/$(JDK_IMAGE_SUBDIR).zip .
 	$(CD) $(SRC_JRE_IMAGE_DIR) && $(ZIP) -y -q -r $(BUILD_OUTPUT)/bundles/$(JRE_IMAGE_SUBDIR).zip .
+	$(CD) $(SRC_TEST_IMAGE_DIR) && $(ZIP) -y -q -r $(BUILD_OUTPUT)/bundles/$(TEST_IMAGE_SUBDIR).zip .
 	if [ -d $(BUILD_OUTPUT)/install/bundles ] ; then \
 	  $(CD) $(BUILD_OUTPUT)/install/bundles && $(ZIP) -y -q -r $(JPRT_ARCHIVE_INSTALL_BUNDLE) . ; \
 	fi
--- a/make/Main.gmk	Mon Jan 19 09:32:40 2015 +0100
+++ b/make/Main.gmk	Mon Jan 19 11:35:45 2015 +0000
@@ -238,8 +238,12 @@
 mac-bundles:
 	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f MacBundles.gmk)
 
+prepare-test-image:
+	$(MKDIR) -p $(TEST_IMAGE_DIR)
+	$(ECHO) > $(TEST_IMAGE_DIR)/Readme.txt 'JDK test image'
+
 ALL_TARGETS += source-tips bootcycle-images zip-security zip-source strip-binaries \
-    jrtfs-jar jimages profiles mac-bundles
+    jrtfs-jar jimages profiles mac-bundles prepare-test-image
 
 ################################################################################
 # Docs targets
@@ -442,7 +446,7 @@
 # alias for ease of use.
 jdk: exploded-image
 
-images: jimages demos samples zip-security
+images: test-image jimages demos samples zip-security
 
 ifeq ($(OPENJDK_TARGET_OS), macosx)
   images: mac-bundles
@@ -450,9 +454,11 @@
 
 docs: docs-javadoc docs-jvmtidoc
 
+test-image: prepare-test-image
+
 ALL_TARGETS += buildtools gensrc gendata copy java rmic libs launchers \
     jdk.jdwp.agent-gensrc $(ALL_MODULE_TARGETS) exploded-image jdk images \
-    docs
+    docs test-image
 
 ################################################################################
 
--- a/modules.xml	Mon Jan 19 09:32:40 2015 +0100
+++ b/modules.xml	Mon Jan 19 11:35:45 2015 +0000
@@ -482,6 +482,7 @@
     <depend>java.logging</depend>
     <depend>java.naming</depend>
     <depend re-exports="true">java.rmi</depend>
+    <depend>java.transaction</depend>
     <export>
       <name>javax.activity</name>
     </export>
@@ -492,9 +493,6 @@
       <name>javax.rmi.CORBA</name>
     </export>
     <export>
-      <name>javax.transaction</name>
-    </export>
-    <export>
       <name>org.omg.CORBA</name>
     </export>
     <export>
@@ -888,8 +886,8 @@
     <depend re-exports="true">java.compact3</depend>
     <depend re-exports="true">java.corba</depend>
     <depend re-exports="true">java.desktop</depend>
+    <depend re-exports="true">java.transaction</depend>
     <depend re-exports="true">java.xml.bind</depend>
-    <depend re-exports="true">java.xml.soap</depend>
     <depend re-exports="true">java.xml.ws</depend>
   </module>
   <module>
@@ -982,6 +980,14 @@
     </export>
   </module>
   <module>
+    <name>java.transaction</name>
+    <depend>java.base</depend>
+    <depend re-exports="true">java.rmi</depend>
+    <export>
+      <name>javax.transaction</name>
+    </export>
+  </module>
+  <module>
     <name>java.xml</name>
     <depend>java.base</depend>
     <export>
@@ -1056,17 +1062,17 @@
     <export>
       <name>org.xml.sax.helpers</name>
     </export>
-    <export>
-      <name>com.sun.org.apache.xerces.internal.dom</name>
-      <to>java.xml.soap</to>
-    </export>
-    <export>
-      <name>com.sun.org.apache.xerces.internal.jaxp</name>
-      <to>java.xml.soap</to>
-    </export>
-    <export>
-      <name>com.sun.org.apache.xerces.internal.util</name>
-      <to>java.xml.soap</to>
+     <export>
+       <name>com.sun.org.apache.xerces.internal.dom</name>
+       <to>java.xml.ws</to>
+     </export>
+     <export>
+       <name>com.sun.org.apache.xerces.internal.jaxp</name>
+       <to>java.xml.ws</to>
+     </export>
+     <export>
+       <name>com.sun.org.apache.xerces.internal.util</name>
+       <to>java.xml.ws</to>
     </export>
     <export>
       <name>com.sun.org.apache.xml.internal.dtm</name>
@@ -1262,17 +1268,14 @@
     </export>
     <export>
       <name>com.sun.xml.internal.org.jvnet.mimepull</name>
-      <to>java.xml.soap</to>
       <to>java.xml.ws</to>
     </export>
     <export>
       <name>com.sun.xml.internal.org.jvnet.staxex</name>
-      <to>java.xml.soap</to>
       <to>java.xml.ws</to>
     </export>
     <export>
       <name>com.sun.xml.internal.org.jvnet.staxex.util</name>
-      <to>java.xml.soap</to>
       <to>java.xml.ws</to>
     </export>
     <export>
@@ -1319,29 +1322,16 @@
     </export>
   </module>
   <module>
-    <name>java.xml.soap</name>
-    <depend re-exports="true">java.activation</depend>
-    <depend>java.base</depend>
-    <depend>java.desktop</depend>
-    <depend>java.logging</depend>
-    <depend re-exports="true">java.xml</depend>
-    <depend>java.xml.bind</depend>
-    <export>
-      <name>javax.xml.soap</name>
-    </export>
-  </module>
-  <module>
     <name>java.xml.ws</name>
-    <depend>java.activation</depend>
     <depend>java.annotations.common</depend>
     <depend>java.base</depend>
     <depend>java.desktop</depend>
     <depend>java.logging</depend>
     <depend>java.management</depend>
     <depend>java.rmi</depend>
+    <depend re-exports="true">java.activation</depend>
     <depend re-exports="true">java.xml</depend>
     <depend re-exports="true">java.xml.bind</depend>
-    <depend re-exports="true">java.xml.soap</depend>
     <depend>jdk.httpserver</depend>
     <export>
       <name>javax.jws</name>
@@ -1350,6 +1340,9 @@
       <name>javax.jws.soap</name>
     </export>
     <export>
+      <name>javax.xml.soap</name>
+    </export>
+    <export>
       <name>javax.xml.ws</name>
     </export>
     <export>
--- a/nashorn/.hgtags	Mon Jan 19 09:32:40 2015 +0100
+++ b/nashorn/.hgtags	Mon Jan 19 11:35:45 2015 +0000
@@ -278,3 +278,4 @@
 498d1d6c4219086143b764b3bf61afe65dcece47 jdk9-b42
 8ae8dff2a28f3b8831cce97ae0c7a957c5dc650a jdk9-b43
 50ee576062726e536d1bb9a5eadd8fd4470128fc jdk9-b44
+3c2bbeda038aef7061455fec604db7d8a342fac5 jdk9-b45
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/samples/jd.js	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,94 @@
+#// Usage: jjs -cp <asmtools.jar> jd.js -- <classname> [jdis|jdec]
+
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *   - Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ *
+ *   - Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ *   - Neither the name of Oracle nor the names of its
+ *     contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// javap-like disassembler/decoder tool that disassembles/decodes 
+// java classes but with OpenJDK AsmTools disassembler/decoder syntax.
+// You need to build asmtool.jar from OpenJDK codetools project
+// specify it with -cp option.
+
+// See also https://wiki.openjdk.java.net/display/CodeTools/AsmTools
+
+function usage() {
+    print("Usage: jjs -cp <asmtools.jar> jd.js -- <classname> [jdis|jdec]");
+    exit(1);
+}
+
+if (arguments.length == 0) {
+    usage();
+}
+
+// argument handling
+// convert to internal class name
+var className = arguments[0].replaceAll('\\.', '/');
+var tool;
+if (arguments.length > 1) {
+    tool = arguments[1];
+    switch (tool) {
+        case 'jdis':
+        case 'jdec':
+            break;
+        default:
+            usage();
+    }
+} else {
+    tool = "jdis"; // default tool
+}
+
+// Java classes used
+var AsmTools = Java.type("org.openjdk.asmtools.Main");
+var Files = Java.type("java.nio.file.Files");
+var StandardCopyOption = Java.type("java.nio.file.StandardCopyOption");
+
+// retrive input stream for .class bytes
+var cl = AsmTools.class.classLoader;
+var res = cl.getResource(className + ".class");
+
+if (res) {
+    var is = res.openStream();
+    var tmpPath;
+    try {
+        // copy the content of the .class to a temp file
+        tmpPath = Files.createTempFile("asmtools-", ".class");
+        // mark as delete-on-exit
+        tmpPath.toFile().deleteOnExit();
+        Files.copy(is, tmpPath, [ StandardCopyOption.REPLACE_EXISTING ]);
+    } finally {
+        is.close();
+    } 
+
+    // invoke asmtools Main
+    AsmTools.main([ tool, tmpPath.toString() ]);
+} else {
+    print("no such class: " + arguments[0]);
+    exit(1);
+}
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/AbstractJSObject.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/AbstractJSObject.java	Mon Jan 19 11:35:45 2015 +0000
@@ -36,7 +36,10 @@
  * treat objects of such classes just like nashorn script objects. Usual nashorn
  * operations like obj[i], obj.foo, obj.func(), delete obj.foo will be glued
  * to appropriate method call of this class.
+ *
+ * @since 1.8u40
  */
+@jdk.Exported
 public abstract class AbstractJSObject implements JSObject {
     /**
      * Call this object as a JavaScript function. This is equivalent to
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ClassFilter.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ClassFilter.java	Mon Jan 19 11:35:45 2015 +0000
@@ -28,7 +28,10 @@
  * Class filter (optional) to be used by nashorn script engine.
  * jsr-223 program embedding nashorn script can set ClassFilter instance
  * to be used when an engine instance is created.
+ *
+ * @since 1.8u40
  */
+@jdk.Exported
 public interface ClassFilter {
      /**
       * Should the Java class of the specified name be exposed to scripts?
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/JSObject.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/JSObject.java	Mon Jan 19 11:35:45 2015 +0000
@@ -33,7 +33,10 @@
  * treat objects of such classes just like nashorn script objects. Usual nashorn
  * operations like obj[i], obj.foo, obj.func(), delete obj.foo will be glued
  * to appropriate method call of this interface.
+ *
+ * @since 1.8u40
  */
+@jdk.Exported
 public interface JSObject {
     /**
      * Call this object as a JavaScript function. This is equivalent to
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornException.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornException.java	Mon Jan 19 11:35:45 2015 +0000
@@ -41,7 +41,10 @@
  * script object or Java access to script object properties via java.util.Map
  * interface. In these cases, user code will get an instance of this or
  * implementation defined subclass.
+ *
+ * @since 1.8u40
  */
+@jdk.Exported
 @SuppressWarnings("serial")
 public abstract class NashornException extends RuntimeException {
     // script file name
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornScriptEngine.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornScriptEngine.java	Mon Jan 19 11:35:45 2015 +0000
@@ -65,8 +65,10 @@
  * {@link NashornScriptEngineFactory#getScriptEngine()}. Note that this engine implements the {@link Compilable} and
  * {@link Invocable} interfaces, allowing for efficient precompilation and repeated execution of scripts.
  * @see NashornScriptEngineFactory
+ *
+ * @since 1.8u40
  */
-
+@jdk.Exported
 public final class NashornScriptEngine extends AbstractScriptEngine implements Compilable, Invocable {
     /**
      * Key used to associate Nashorn global object mirror with arbitrary Bindings instance.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornScriptEngineFactory.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornScriptEngineFactory.java	Mon Jan 19 11:35:45 2015 +0000
@@ -44,7 +44,10 @@
  * </ul>
  * Programs executing in engines created using {@link #getScriptEngine(String[])} will have the passed arguments
  * accessible as a global variable named {@code "arguments"}.
+ *
+ * @since 1.8u40
  */
+@jdk.Exported
 public final class NashornScriptEngineFactory implements ScriptEngineFactory {
     @Override
     public String getEngineName() {
@@ -120,7 +123,7 @@
             // used to execute scripts concurrently on multiple threads.
             return null;
         default:
-            throw new IllegalArgumentException("Invalid key");
+            return null;
         }
     }
 
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ScriptObjectMirror.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ScriptObjectMirror.java	Mon Jan 19 11:35:45 2015 +0000
@@ -54,7 +54,10 @@
 
 /**
  * Mirror object that wraps a given Nashorn Script object.
+ *
+ * @since 1.8u40
  */
+@jdk.Exported
 public final class ScriptObjectMirror extends AbstractJSObject implements Bindings {
     private static AccessControlContext getContextAccCtxt() {
         final Permissions perms = new Permissions();
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ScriptUtils.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ScriptUtils.java	Mon Jan 19 11:35:45 2015 +0000
@@ -36,7 +36,10 @@
 
 /**
  * Utilities that are to be called from script code.
+ *
+ * @since 1.8u40
  */
+@jdk.Exported
 public final class ScriptUtils {
     private ScriptUtils() {}
 
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/URLReader.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/URLReader.java	Mon Jan 19 11:35:45 2015 +0000
@@ -35,7 +35,10 @@
 /**
  * A Reader that reads from a URL. Used to make sure that the reader
  * reads content from given URL and can be trusted to do so.
+ *
+ * @since 1.8u40
  */
+@jdk.Exported
 public final class URLReader extends Reader {
     // underlying URL
     private final URL url;
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/package-info.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/package-info.java	Mon Jan 19 11:35:45 2015 +0000
@@ -35,5 +35,8 @@
  * interfaces, allowing for efficient pre-compilation and repeated execution of scripts. In addition,
  * this package provides nashorn specific extension classes, interfaces and methods. See
  * {@link jdk.nashorn.api.scripting.NashornScriptEngineFactory} for further details.
+ *
+ * @since 1.8u40
  */
+@jdk.Exported
 package jdk.nashorn.api.scripting;
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CodeGenerator.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CodeGenerator.java	Mon Jan 19 11:35:45 2015 +0000
@@ -38,7 +38,6 @@
 import static jdk.nashorn.internal.codegen.CompilerConstants.SPLIT_PREFIX;
 import static jdk.nashorn.internal.codegen.CompilerConstants.THIS;
 import static jdk.nashorn.internal.codegen.CompilerConstants.VARARGS;
-import static jdk.nashorn.internal.codegen.CompilerConstants.constructorNoLookup;
 import static jdk.nashorn.internal.codegen.CompilerConstants.interfaceCallNoLookup;
 import static jdk.nashorn.internal.codegen.CompilerConstants.methodDescriptor;
 import static jdk.nashorn.internal.codegen.CompilerConstants.staticCallNoLookup;
@@ -186,9 +185,6 @@
 
     private static final String GLOBAL_OBJECT = Type.getInternalName(Global.class);
 
-    private static final String SCRIPTFUNCTION_IMPL_NAME = Type.getInternalName(ScriptFunctionImpl.class);
-    private static final Type   SCRIPTFUNCTION_IMPL_TYPE   = Type.typeFor(ScriptFunction.class);
-
     private static final Call CREATE_REWRITE_EXCEPTION = CompilerConstants.staticCallNoLookup(RewriteException.class,
             "create", RewriteException.class, UnwarrantedOptimismException.class, Object[].class, String[].class);
     private static final Call CREATE_REWRITE_EXCEPTION_REST_OF = CompilerConstants.staticCallNoLookup(RewriteException.class,
@@ -201,6 +197,11 @@
     private static final Call ENSURE_NUMBER = CompilerConstants.staticCallNoLookup(OptimisticReturnFilters.class,
             "ensureNumber", double.class, Object.class, int.class);
 
+    private static final Call CREATE_FUNCTION_OBJECT = CompilerConstants.staticCallNoLookup(ScriptFunctionImpl.class,
+            "create", ScriptFunction.class, Object[].class, int.class, ScriptObject.class);
+    private static final Call CREATE_FUNCTION_OBJECT_NO_SCOPE = CompilerConstants.staticCallNoLookup(ScriptFunctionImpl.class,
+            "create", ScriptFunction.class, Object[].class, int.class);
+
     private static final Class<?> ITERATOR_CLASS = Iterator.class;
     static {
         assert ITERATOR_CLASS == CompilerConstants.ITERATOR_PREFIX.type();
@@ -2242,7 +2243,6 @@
         } else {
             methodEmitter.loadConstants().load(index).arrayload();
             if (object instanceof ArrayData) {
-                // avoid cast to non-public ArrayData subclass
                 methodEmitter.checkcast(ArrayData.class);
                 methodEmitter.invoke(virtualCallNoLookup(ArrayData.class, "copy", ArrayData.class));
             } else if (cls != Object.class) {
@@ -2251,6 +2251,10 @@
         }
     }
 
+    private void loadConstantsAndIndex(final Object object, final MethodEmitter methodEmitter) {
+        methodEmitter.loadConstants().load(compiler.getConstantData().add(object));
+    }
+
     // literal values
     private void loadLiteral(final LiteralNode<?> node, final TypeBounds resultBounds) {
         final Object value = node.getValue();
@@ -4323,15 +4327,13 @@
         final RecompilableScriptFunctionData data = compiler.getScriptFunctionData(functionNode.getId());
 
         if (functionNode.isProgram() && !compiler.isOnDemandCompilation()) {
-            final CompileUnit fnUnit = functionNode.getCompileUnit();
-            final MethodEmitter createFunction = fnUnit.getClassEmitter().method(
+            final MethodEmitter createFunction = functionNode.getCompileUnit().getClassEmitter().method(
                     EnumSet.of(Flag.PUBLIC, Flag.STATIC), CREATE_PROGRAM_FUNCTION.symbolName(),
                     ScriptFunction.class, ScriptObject.class);
             createFunction.begin();
-            createFunction._new(SCRIPTFUNCTION_IMPL_NAME, SCRIPTFUNCTION_IMPL_TYPE).dup();
-            loadConstant(data, fnUnit, createFunction);
+            loadConstantsAndIndex(data, createFunction);
             createFunction.load(SCOPE_TYPE, 0);
-            createFunction.invoke(constructorNoLookup(SCRIPTFUNCTION_IMPL_NAME, RecompilableScriptFunctionData.class, ScriptObject.class));
+            createFunction.invoke(CREATE_FUNCTION_OBJECT);
             createFunction._return();
             createFunction.end();
         }
@@ -4346,15 +4348,14 @@
             return;
         }
 
-        method._new(SCRIPTFUNCTION_IMPL_NAME, SCRIPTFUNCTION_IMPL_TYPE).dup();
-        loadConstant(data);
+        loadConstantsAndIndex(data, method);
 
         if (functionNode.needsParentScope()) {
             method.loadCompilerConstant(SCOPE);
+            method.invoke(CREATE_FUNCTION_OBJECT);
         } else {
-            method.loadNull();
-        }
-        method.invoke(constructorNoLookup(SCRIPTFUNCTION_IMPL_NAME, RecompilableScriptFunctionData.class, ScriptObject.class));
+            method.invoke(CREATE_FUNCTION_OBJECT_NO_SCOPE);
+        }
     }
 
     // calls on Global class.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/objects/ScriptFunctionImpl.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/objects/ScriptFunctionImpl.java	Mon Jan 19 11:35:45 2015 +0000
@@ -118,13 +118,26 @@
     }
 
     /**
-     * Constructor called by (compiler) generated code for {@link ScriptObject}s.
+     * Factory method called by compiler generated code for functions that need parent scope.
      *
-     * @param data static function data
-     * @param scope scope object
+     * @param constants the generated class' constant array
+     * @param index the index of the {@code RecompilableScriptFunctionData} object in the constants array.
+     * @param scope the parent scope object
+     * @return a newly created function object
      */
-    public ScriptFunctionImpl(final RecompilableScriptFunctionData data, final ScriptObject scope) {
-        this(data, scope, Global.instance());
+    public static ScriptFunction create(final Object[] constants, final int index, final ScriptObject scope) {
+        return new ScriptFunctionImpl((RecompilableScriptFunctionData)constants[index], scope, Global.instance());
+    }
+
+    /**
+     * Factory method called by compiler generated code for functions that don't need parent scope.
+     *
+     * @param constants the generated class' constant array
+     * @param index the index of the {@code RecompilableScriptFunctionData} object in the constants array.
+     * @return a newly created function object
+     */
+    public static ScriptFunction create(final Object[] constants, final int index) {
+        return create(constants, index, null);
     }
 
     /**
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/AdaptationResult.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/AdaptationResult.java	Mon Jan 19 11:35:45 2015 +0000
@@ -48,28 +48,25 @@
         ERROR_NO_ACCESSIBLE_CONSTRUCTOR,
         ERROR_MULTIPLE_SUPERCLASSES,
         ERROR_NO_COMMON_LOADER,
-        ERROR_FINAL_FINALIZER
+        ERROR_FINAL_FINALIZER,
+        ERROR_OTHER
     }
 
     static final AdaptationResult SUCCESSFUL_RESULT = new AdaptationResult(Outcome.SUCCESS, "");
 
     private final Outcome outcome;
-    private final String classList;
+    private final String[] messageArgs;
 
-    AdaptationResult(final Outcome outcome, final String classList) {
+    AdaptationResult(final Outcome outcome, final String... messageArgs) {
         this.outcome = outcome;
-        this.classList = classList;
+        this.messageArgs = messageArgs;
     }
 
     Outcome getOutcome() {
         return outcome;
     }
 
-    String getClassList() {
-        return classList;
-    }
-
     ECMAException typeError() {
-        return ECMAErrors.typeError("extend." + outcome, classList);
+        return ECMAErrors.typeError("extend." + outcome, messageArgs);
     }
 }
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java	Mon Jan 19 11:35:45 2015 +0000
@@ -184,7 +184,7 @@
         final ClassAndLoader definingClassAndLoader = ClassAndLoader.getDefiningClassAndLoader(types);
 
         final Map<List<Class<?>>, AdapterInfo> adapterInfoMap = ADAPTER_INFO_MAPS.get(definingClassAndLoader.getRepresentativeClass());
-        final List<Class<?>> typeList = types.length == 1 ? getSingletonClassList(types[0]) : Arrays.asList(types.clone());
+        final List<Class<?>> typeList = types.length == 1 ? Collections.<Class<?>>singletonList(types[0]) : Arrays.asList(types.clone());
         AdapterInfo adapterInfo;
         synchronized(adapterInfoMap) {
             adapterInfo = adapterInfoMap.get(typeList);
@@ -196,11 +196,6 @@
         return adapterInfo;
     }
 
-    @SuppressWarnings({ "unchecked", "rawtypes" })
-    private static List<Class<?>> getSingletonClassList(final Class<?> clazz) {
-        return (List)Collections.singletonList(clazz);
-    }
-
    /**
      * For a given class, create its adapter class and associated info.
      * @param type the class for which the adapter is created
@@ -241,6 +236,8 @@
                     return new AdapterInfo(effectiveSuperClass, interfaces, definingClassAndLoader);
                 } catch (final AdaptationException e) {
                     return new AdapterInfo(e.getAdaptationResult());
+                } catch (final RuntimeException e) {
+                    return new AdapterInfo(new AdaptationResult(AdaptationResult.Outcome.ERROR_OTHER, Arrays.toString(types), e.toString()));
                 }
             }
         }, CREATE_ADAPTER_INFO_ACC_CTXT);
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/Messages.properties	Mon Jan 19 09:32:40 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/Messages.properties	Mon Jan 19 11:35:45 2015 +0000
@@ -141,6 +141,7 @@
 type.error.extend.ERROR_MULTIPLE_SUPERCLASSES=Can not extend multiple classes {0}. At most one of the specified types can be a class, the rest must all be interfaces.
 type.error.extend.ERROR_NO_COMMON_LOADER=Can not find a common class loader for ScriptObject and {0}.
 type.error.extend.ERROR_FINAL_FINALIZER=Can not extend class because {0} has a final finalize method.
+type.error.extend.ERROR_OTHER=Can not extend/implement {0} because of {1}
 type.error.no.constructor.matches.args=Can not construct {0} with the passed arguments; they do not match any of its constructor signatures.
 type.error.no.method.matches.args=Can not invoke method {0} with the passed arguments; they do not match any of its method signatures.
 type.error.method.not.constructor=Java method {0} cannot be used as a constructor.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8068580.js	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ * 
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ * 
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ * 
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ * 
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * JDK-8068580: make JavaAdapterFactory.isAutoConvertibleFromFunction more robust
+ *
+ * @test
+ * @run
+ */
+
+var BigAbstract = Java.type("jdk.nashorn.test.models.BigAbstract")
+try {
+    new BigAbstract({});
+} catch (e) {
+    Assert.assertTrue(e instanceof TypeError);
+    Assert.assertEquals(e.message, "Can not extend/implement [class jdk.nashorn.test.models.BigAbstract] because of java.lang.RuntimeException: Method code too large!");
+}
+try {
+    BigAbstract.accept(function() { });
+} catch (e) {
+    Assert.assertSame(e.class, java.lang.ClassCastException.class);
+}
--- a/nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java	Mon Jan 19 09:32:40 2015 +0100
+++ b/nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java	Mon Jan 19 11:35:45 2015 +0000
@@ -27,6 +27,7 @@
 
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
 import static org.testng.Assert.fail;
 import java.io.StringReader;
@@ -668,6 +669,17 @@
         assertEquals("helloworld", inv.invokeMethod(ctx.get(), "join", ""));
     }
 
+    // @bug 8068524: NashornScriptEngineFactory.getParameter() throws IAE
+    // for an unknown key, doesn't conform to the general spec
+    @Test
+    public void getParameterInvalidKeyTest() throws Exception {
+        final ScriptEngineManager manager = new ScriptEngineManager();
+        final ScriptEngine e = manager.getEngineByName("nashorn");
+        // no exception expected here!
+        Object value = e.getFactory().getParameter("no value assigned to this key");
+        assertNull(value);
+    }
+
     private static void checkProperty(final ScriptEngine e, final String name)
         throws ScriptException {
         final String value = System.getProperty(name);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/src/jdk/nashorn/test/models/BigAbstract.java	Mon Jan 19 11:35:45 2015 +0000
@@ -0,0 +1,4709 @@
+/*
+ * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.nashorn.test.models;
+
+public abstract class BigAbstract {
+    public static void accept(BigAbstract ba) {
+    }
+
+    public abstract void f0();
+    public abstract void f1();
+    public abstract void f2();
+    public abstract void f3();
+    public abstract void f4();
+    public abstract void f5();
+    public abstract void f6();
+    public abstract void f7();
+    public abstract void f8();
+    public abstract void f9();
+    public abstract void f10();
+    public abstract void f11();
+    public abstract void f12();
+    public abstract void f13();
+    public abstract void f14();
+    public abstract void f15();
+    public abstract void f16();
+    public abstract void f17();
+    public abstract void f18();
+    public abstract void f19();
+    public abstract void f20();
+    public abstract void f21();
+    public abstract void f22();
+    public abstract void f23();
+    public abstract void f24();
+    public abstract void f25();
+    public abstract void f26();
+    public abstract void f27();
+    public abstract void f28();
+    public abstract void f29();
+    public abstract void f30();
+    public abstract void f31();
+    public abstract void f32();
+    public abstract void f33();
+    public abstract void f34();
+    public abstract void f35();
+    public abstract void f36();
+    public abstract void f37();
+    public abstract void f38();
+    public abstract void f39();
+    public abstract void f40();
+    public abstract void f41();
+    public abstract void f42();
+    public abstract void f43();
+    public abstract void f44();
+    public abstract void f45();
+    public abstract void f46();
+    public abstract void f47();
+    public abstract void f48();
+    public abstract void f49();
+    public abstract void f50();
+    public abstract void f51();
+    public abstract void f52();
+    public abstract void f53();
+    public abstract void f54();
+    public abstract void f55();
+    public abstract void f56();
+    public abstract void f57();
+    public abstract void f58();
+    public abstract void f59();
+    public abstract void f60();
+    public abstract void f61();
+    public abstract void f62();
+    public abstract void f63();
+    public abstract void f64();
+    public abstract void f65();
+    public abstract void f66();
+    public abstract void f67();
+    public abstract void f68();
+    public abstract void f69();
+    public abstract void f70();
+    public abstract void f71();
+    public abstract void f72();
+    public abstract void f73();
+    public abstract void f74();
+    public abstract void f75();
+    public abstract void f76();
+    public abstract void f77();
+    public abstract void f78();
+    public abstract void f79();
+    public abstract void f80();
+    public abstract void f81();
+    public abstract void f82();
+    public abstract void f83();
+    public abstract void f84();
+    public abstract void f85();
+    public abstract void f86();
+    public abstract void f87();
+    public abstract void f88();
+    public abstract void f89();
+    public abstract void f90();
+    public abstract void f91();
+    public abstract void f92();
+    public abstract void f93();
+    public abstract void f94();
+    public abstract void f95();
+    public abstract void f96();
+    public abstract void f97();
+    public abstract void f98();
+    public abstract void f99();
+    public abstract void f100();
+    public abstract void f101();
+    public abstract void f102();
+    public abstract void f103();
+    public abstract void f104();
+    public abstract void f105();
+    public abstract void f106();
+    public abstract void f107();
+    public abstract void f108();
+    public abstract void f109();
+    public abstract void f110();
+    public abstract void f111();
+    public abstract void f112();
+    public abstract void f113();
+    public abstract void f114();
+    public abstract void f115();
+    public abstract void f116();
+    public abstract void f117();
+    public abstract void f118();
+    public abstract void f119();
+    public abstract void f120();
+    public abstract void f121();
+    public abstract void f122();
+    public abstract void f123();
+    public abstract void f124();
+    public abstract void f125();
+    public abstract void f126();
+    public abstract void f127();
+    public abstract void f128();
+    public abstract void f129();
+    public abstract void f130();
+    public abstract void f131();
+    public abstract void f132();
+    public abstract void f133();
+    public abstract void f134();
+    public abstract void f135();
+    public abstract void f136();
+    public abstract void f137();
+    public abstract void f138();
+    public abstract void f139();
+    public abstract void f140();
+    public abstract void f141();
+    public abstract void f142();
+    public abstract void f143();
+    public abstract void f144();
+    public abstract void f145();
+    public abstract void f146();
+    public abstract void f147();
+    public abstract void f148();
+    public abstract void f149();
+    public abstract void f150();
+    public abstract void f151();
+    public abstract void f152();
+    public abstract void f153();
+    public abstract void f154();
+    public abstract void f155();
+    public abstract void f156();
+    public abstract void f157();
+    public abstract void f158();
+    public abstract void f159();
+    public abstract void f160();
+    public abstract void f161();
+    public abstract void f162();
+    public abstract void f163();
+    public abstract void f164();
+    public abstract void f165();
+    public abstract void f166();
+    public abstract void f167();
+    public abstract void f168();
+    public abstract void f169();
+    public abstract void f170();
+    public abstract void f171();
+    public abstract void f172();
+    public abstract void f173();
+    public abstract void f174();
+    public abstract void f175();
+    public abstract void f176();
+    public abstract void f177();
+    public abstract void f178();
+    public abstract void f179();
+    public abstract void f180();
+    public abstract void f181();
+    public abstract void f182();
+    public abstract void f183();
+    public abstract void f184();
+    public abstract void f185();
+    public abstract void f186();
+    public abstract void f187();
+    public abstract void f188();
+    public abstract void f189();
+    public abstract void f190();
+    public abstract void f191();
+    public abstract void f192();
+    public abstract void f193();
+    public abstract void f194();
+    public abstract void f195();
+    public abstract void f196();
+    public abstract void f197();
+    public abstract void f198();
+    public abstract void f199();
+    public abstract void f200();
+    public abstract void f201();
+    public abstract void f202();
+    public abstract void f203();
+    public abstract void f204();
+    public abstract void f205();
+    public abstract void f206();
+    public abstract void f207();
+    public abstract void f208();
+    public abstract void f209();
+    public abstract void f210();
+    public abstract void f211();
+    public abstract void f212();
+    public abstract void f213();
+    public abstract void f214();
+    public abstract void f215();
+    public abstract void f216();
+    public abstract void f217();
+    public abstract void f218();
+    public abstract void f219();
+    public abstract void f220();
+    public abstract void f221();
+    public abstract void f222();
+    public abstract void f223();
+    public abstract void f224();
+    public abstract void f225();
+    public abstract void f226();
+    public abstract void f227();
+    public abstract void f228();
+    public abstract void f229();
+    public abstract void f230();
+    public abstract void f231();
+    public abstract void f232();
+    public abstract void f233();
+    public abstract void f234();
+    public abstract void f235();
+    public abstract void f236();
+    public abstract void f237();
+    public abstract void f238();
+    public abstract void f239();
+    public abstract void f240();
+    public abstract void f241();
+    public abstract void f242();
+    public abstract void f243();
+    public abstract void f244();
+    public abstract void f245();
+    public abstract void f246();
+    public abstract void f247();
+    public abstract void f248();
+    public abstract void f249();
+    public abstract void f250();
+    public abstract void f251();
+    public abstract void f252();
+    public abstract void f253();
+    public abstract void f254();
+    public abstract void f255();
+    public abstract void f256();
+    public abstract void f257();
+    public abstract void f258();
+    public abstract void f259();
+    public abstract void f260();
+    public abstract void f261();
+    public abstract void f262();
+    public abstract void f263();
+    public abstract void f264();
+    public abstract void f265();
+    public abstract void f266();
+    public abstract void f267();
+    public abstract void f268();
+    public abstract void f269();
+    public abstract void f270();
+    public abstract void f271();
+    public abstract void f272();
+    public abstract void f273();
+    public abstract void f274();
+    public abstract void f275();
+    public abstract void f276();
+    public abstract void f277();
+    public abstract void f278();
+    public abstract void f279();
+    public abstract void f280();
+    public abstract void f281();
+    public abstract void f282();
+    public abstract void f283();
+    public abstract void f284();
+    public abstract void f285();
+    public abstract void f286();
+    public abstract void f287();
+    public abstract void f288();
+    public abstract void f289();
+    public abstract void f290();
+    public abstract void f291();
+    public abstract void f292();
+    public abstract void f293();
+    public abstract void f294();
+    public abstract void f295();
+    public abstract void f296();
+    public abstract void f297();
+    public abstract void f298();
+    public abstract void f299();
+    public abstract void f300();
+    public abstract void f301();
+    public abstract void f302();
+    public abstract void f303();
+    public abstract void f304();
+    public abstract void f305();
+    public abstract void f306();
+    public abstract void f307();
+    public abstract void f308();
+    public abstract void f309();
+    public abstract void f310();
+    public abstract void f311();
+    public abstract void f312();
+    public abstract void f313();
+    public abstract void f314();
+    public abstract void f315();
+    public abstract void f316();
+    public abstract void f317();
+    public abstract void f318();
+    public abstract void f319();
+    public abstract void f320();
+    public abstract void f321();
+    public abstract void f322();
+    public abstract void f323();
+    public abstract void f324();
+    public abstract void f325();
+    public abstract void f326();
+    public abstract void f327();
+    public abstract void f328();
+    public abstract void f329();
+    public abstract void f330();
+    public abstract void f331();
+    public abstract void f332();
+    public abstract void f333();
+    public abstract void f334();
+    public abstract void f335();
+    public abstract void f336();
+    public abstract void f337();
+    public abstract void f338();
+    public abstract void f339();
+    public abstract void f340();
+    public abstract void f341();
+    public abstract void f342();
+    public abstract void f343();
+    public abstract void f344();
+    public abstract void f345();
+    public abstract void f346();
+    public abstract void f347();
+    public abstract void f348();
+    public abstract void f349();
+    public abstract void f350();
+    public abstract void f351();
+    public abstract void f352();
+    public abstract void f353();
+    public abstract void f354();
+    public abstract void f355();
+    public abstract void f356();
+    public abstract void f357();
+    public abstract void f358();
+    public abstract void f359();
+    public abstract void f360();
+    public abstract void f361();
+    public abstract void f362();
+    public abstract void f363();
+    public abstract void f364();
+    public abstract void f365();
+    public abstract void f366();
+    public abstract void f367();
+    public abstract void f368();
+    public abstract void f369();
+    public abstract void f370();
+    public abstract void f371();
+    public abstract void f372();
+    public abstract void f373();
+    public abstract void f374();
+    public abstract void f375();
+    public abstract void f376();
+    public abstract void f377();
+    public abstract void f378();
+    public abstract void f379();
+    public abstract void f380();
+    public abstract void f381();
+    public abstract void f382();
+    public abstract void f383();
+    public abstract void f384();
+    public abstract void f385();
+    public abstract void f386();
+    public abstract void f387();
+    public abstract void f388();
+    public abstract void f389();
+    public abstract void f390();
+    public abstract void f391();
+    public abstract void f392();
+    public abstract void f393();
+    public abstract void f394();
+    public abstract void f395();
+    public abstract void f396();
+    public abstract void f397();
+    public abstract void f398();
+    public abstract void f399();
+    public abstract void f400();
+    public abstract void f401();
+    public abstract void f402();
+    public abstract void f403();
+    public abstract void f404();
+    public abstract void f405();
+    public abstract void f406();
+    public abstract void f407();
+    public abstract void f408();
+    public abstract void f409();
+    public abstract void f410();
+    public abstract void f411();
+    public abstract void f412();
+    public abstract void f413();
+    public abstract void f414();
+    public abstract void f415();
+    public abstract void f416();
+    public abstract void f417();
+    public abstract void f418();
+    public abstract void f419();
+    public abstract void f420();
+    public abstract void f421();
+    public abstract void f422();
+    public abstract void f423();
+    public abstract void f424();
+    public abstract void f425();
+    public abstract void f426();
+    public abstract void f427();
+    public abstract void f428();
+    public abstract void f429();
+    public abstract void f430();
+    public abstract void f431();
+    public abstract void f432();
+    public abstract void f433();
+    public abstract void f434();
+    public abstract void f435();
+    public abstract void f436();
+    public abstract void f437();
+    public abstract void f438();
+    public abstract void f439();
+    public abstract void f440();
+    public abstract void f441();
+    public abstract void f442();
+    public abstract void f443();
+    public abstract void f444();
+    public abstract void f445();
+    public abstract void f446();
+    public abstract void f447();
+    public abstract void f448();
+    public abstract void f449();
+    public abstract void f450();
+    public abstract void f451();
+    public abstract void f452();
+    public abstract void f453();
+    public abstract void f454();
+    public abstract void f455();
+    public abstract void f456();
+    public abstract void f457();
+    public abstract void f458();
+    public abstract void f459();
+    public abstract void f460();
+    public abstract void f461();
+    public abstract void f462();
+    public abstract void f463();
+    public abstract void f464();
+    public abstract void f465();
+    public abstract void f466();
+    public abstract void f467();
+    public abstract void f468();
+    public abstract void f469();
+    public abstract void f470();
+    public abstract void f471();
+    public abstract void f472();
+    public abstract void f473();
+    public abstract void f474();
+    public abstract void f475();
+    public abstract void f476();
+    public abstract void f477();
+    public abstract void f478();
+    public abstract void f479();
+    public abstract void f480();
+    public abstract void f481();
+    public abstract void f482();
+    public abstract void f483();
+    public abstract void f484();
+    public abstract void f485();
+    public abstract void f486();
+    public abstract void f487();
+    public abstract void f488();
+    public abstract void f489();
+    public abstract void f490();
+    public abstract void f491();
+    public abstract void f492();
+    public abstract void f493();
+    public abstract void f494();
+    public abstract void f495();
+    public abstract void f496();
+    public abstract void f497();
+    public abstract void f498();
+    public abstract void f499();
+    public abstract void f500();
+    public abstract void f501();
+    public abstract void f502();
+    public abstract void f503();
+    public abstract void f504();
+    public abstract void f505();
+    public abstract void f506();
+    public abstract void f507();
+    public abstract void f508();
+    public abstract void f509();
+    public abstract void f510();
+    public abstract void f511();
+    public abstract void f512();
+    public abstract void f513();
+    public abstract void f514();
+    public abstract void f515();
+    public abstract void f516();
+    public abstract void f517();
+    public abstract void f518();
+    public abstract void f519();
+    public abstract void f520();
+    public abstract void f521();
+    public abstract void f522();
+    public abstract void f523();
+    public abstract void f524();
+    public abstract void f525();
+    public abstract void f526();
+    public abstract void f527();
+    public abstract void f528();
+    public abstract void f529();
+    public abstract void f530();
+    public abstract void f531();
+    public abstract void f532();
+    public abstract void f533();
+    public abstract void f534();
+    public abstract void f535();
+    public abstract void f536();
+    public abstract void f537();
+    public abstract void f538();
+    public abstract void f539();
+    public abstract void f540();
+    public abstract void f541();
+    public abstract void f542();
+    public abstract void f543();
+    public abstract void f544();
+    public abstract void f545();
+    public abstract void f546();
+    public abstract void f547();
+    public abstract void f548();
+    public abstract void f549();
+    public abstract void f550();
+    public abstract void f551();
+    public abstract void f552();
+    public abstract void f553();
+    public abstract void f554();
+    public abstract void f555();
+    public abstract void f556();
+    public abstract void f557();
+    public abstract void f558();
+    public abstract void f559();
+    public abstract void f560();
+    public abstract void f561();
+    public abstract void f562();
+    public abstract void f563();
+    public abstract void f564();
+    public abstract void f565();
+    public abstract void f566();
+    public abstract void f567();
+    public abstract void f568();
+    public abstract void f569();
+    public abstract void f570();
+    public abstract void f571();
+    public abstract void f572();
+    public abstract void f573();
+    public abstract void f574();
+    public abstract void f575();
+    public abstract void f576();
+    public abstract void f577();
+    public abstract void f578();
+    public abstract void f579();
+    public abstract void f580();
+    public abstract void f581();
+    public abstract void f582();
+    public abstract void f583();
+    public abstract void f584();
+    public abstract void f585();
+    public abstract void f586();
+    public abstract void f587();
+    public abstract void f588();
+    public abstract void f589();
+    public abstract void f590();
+    public abstract void f591();
+    public abstract void f592();
+    public abstract void f593();
+    public abstract void f594();
+    public abstract void f595();
+    public abstract void f596();
+    public abstract void f597();
+    public abstract void f598();
+    public abstract void f599();
+    public abstract void f600();
+    public abstract void f601();
+    public abstract void f602();
+    public abstract void f603();
+    public abstract void f604();
+    public abstract void f605();
+    public abstract void f606();
+    public abstract void f607();
+    public abstract void f608();
+    public abstract void f609();
+    public abstract void f610();
+    public abstract void f611();
+    public abstract void f612();
+    public abstract void f613();
+    public abstract void f614();
+    public abstract void f615();
+    public abstract void f616();
+    public abstract void f617();
+    public abstract void f618();
+    public abstract void f619();
+    public abstract void f620();
+    public abstract void f621();
+    public abstract void f622();
+    public abstract void f623();
+    public abstract void f624();
+    public abstract void f625();
+    public abstract void f626();
+    public abstract void f627();
+    public abstract void f628();
+    public abstract void f629();
+    public abstract void f630();
+    public abstract void f631();
+    public abstract void f632();
+    public abstract void f633();
+    public abstract void f634();
+    public abstract void f635();
+    public abstract void f636();
+    public abstract void f637();
+    public abstract void f638();
+    public abstract void f639();
+    public abstract void f640();
+    public abstract void f641();
+    public abstract void f642();
+    public abstract void f643();
+    public abstract void f644();
+    public abstract void f645();
+    public abstract void f646();
+    public abstract void f647();
+    public abstract void f648();
+    public abstract void f649();
+    public abstract void f650();
+    public abstract void f651();
+    public abstract void f652();
+    public abstract void f653();
+    public abstract void f654();
+    public abstract void f655();
+    public abstract void f656();
+    public abstract void f657();
+    public abstract void f658();
+    public abstract void f659();
+    public abstract void f660();
+    public abstract void f661();
+    public abstract void f662();
+    public abstract void f663();
+    public abstract void f664();
+    public abstract void f665();
+    public abstract void f666();
+    public abstract void f667();
+    public abstract void f668();
+    public abstract void f669();
+    public abstract void f670();
+    public abstract void f671();
+    public abstract void f672();
+    public abstract void f673();
+    public abstract void f674();
+    public abstract void f675();
+    public abstract void f676();
+    public abstract void f677();
+    public abstract void f678();
+    public abstract void f679();
+    public abstract void f680();
+    public abstract void f681();
+    public abstract void f682();
+    public abstract void f683();
+    public abstract void f684();
+    public abstract void f685();
+    public abstract void f686();
+    public abstract void f687();
+    public abstract void f688();
+    public abstract void f689();
+    public abstract void f690();
+    public abstract void f691();
+    public abstract void f692();
+    public abstract void f693();
+    public abstract void f694();
+    public abstract void f695();
+    public abstract void f696();
+    public abstract void f697();
+    public abstract void f698();
+    public abstract void f699();
+    public abstract void f700();
+    public abstract void f701();
+    public abstract void f702();
+    public abstract void f703();
+    public abstract void f704();
+    public abstract void f705();
+    public abstract void f706();
+    public abstract void f707();
+    public abstract void f708();
+    public abstract void f709();
+    public abstract void f710();
+    public abstract void f711();
+    public abstract void f712();
+    public abstract void f713();
+    public abstract void f714();
+    public abstract void f715();
+    public abstract void f716();
+    public abstract void f717();
+    public abstract void f718();
+    public abstract void f719();
+    public abstract void f720();
+    public abstract void f721();
+    public abstract void f722();
+    public abstract void f723();
+    public abstract void f724();
+    public abstract void f725();
+    public abstract void f726();
+    public abstract void f727();
+    public abstract void f728();
+    public abstract void f729();
+    public abstract void f730();
+    public abstract void f731();
+    public abstract void f732();
+    public abstract void f733();
+    public abstract void f734();
+    public abstract void f735();
+    public abstract void f736();
+    public abstract void f737();
+    public abstract void f738();
+    public abstract void f739();
+    public abstract void f740();
+    public abstract void f741();
+    public abstract void f742();
+    public abstract void f743();
+    public abstract void f744();
+    public abstract void f745();
+    public abstract void f746();
+    public abstract void f747();
+    public abstract void f748();
+    public abstract void f749();
+    public abstract void f750();
+    public abstract void f751();
+    public abstract void f752();
+    public abstract void f753();
+    public abstract void f754();
+    public abstract void f755();
+    public abstract void f756();
+    public abstract void f757();
+    public abstract void f758();
+    public abstract void f759();
+    public abstract void f760();
+    public abstract void f761();
+    public abstract void f762();
+    public abstract void f763();
+    public abstract void f764();
+    public abstract void f765();
+    public abstract void f766();
+    public abstract void f767();
+    public abstract void f768();
+    public abstract void f769();
+    public abstract void f770();
+    public abstract void f771();
+    public abstract void f772();
+    public abstract void f773();
+    public abstract void f774();
+    public abstract void f775();
+    public abstract void f776();
+    public abstract void f777();
+    public abstract void f778();
+    public abstract void f779();
+    public abstract void f780();
+    public abstract void f781();
+    public abstract void f782();
+    public abstract void f783();
+    public abstract void f784();
+    public abstract void f785();
+    public abstract void f786();
+    public abstract void f787();
+    public abstract void f788();
+    public abstract void f789();
+    public abstract void f790();
+    public abstract void f791();
+    public abstract void f792();
+    public abstract void f793();
+    public abstract void f794();
+    public abstract void f795();
+    public abstract void f796();
+    public abstract void f797();
+    public abstract void f798();
+    public abstract void f799();
+    public abstract void f800();
+    public abstract void f801();
+    public abstract void f802();
+    public abstract void f803();
+    public abstract void f804();
+    public abstract void f805();
+    public abstract void f806();
+    public abstract void f807();
+    public abstract void f808();
+    public abstract void f809();
+    public abstract void f810();
+    public abstract void f811();
+    public abstract void f812();
+    public abstract void f813();
+    public abstract void f814();
+    public abstract void f815();
+    public abstract void f816();
+    public abstract void f817();
+    public abstract void f818();
+    public abstract void f819();
+    public abstract void f820();
+    public abstract void f821();
+    public abstract void f822();
+    public abstract void f823();
+    public abstract void f824();
+    public abstract void f825();
+    public abstract void f826();
+    public abstract void f827();
+    public abstract void f828();
+    public abstract void f829();
+    public abstract void f830();
+    public abstract void f831();
+    public abstract void f832();
+    public abstract void f833();
+    public abstract void f834();
+    public abstract void f835();
+    public abstract void f836();
+    public abstract void f837();
+    public abstract void f838();
+    public abstract void f839();
+    public abstract void f840();
+    public abstract void f841();
+    public abstract void f842();
+    public abstract void f843();
+    public abstract void f844();
+    public abstract void f845();
+    public abstract void f846();
+    public abstract void f847();
+    public abstract void f848();
+    public abstract void f849();
+    public abstract void f850();
+    public abstract void f851();
+    public abstract void f852();
+    public abstract void f853();
+    public abstract void f854();
+    public abstract void f855();
+    public abstract void f856();
+    public abstract void f857();
+    public abstract void f858();
+    public abstract void f859();
+    public abstract void f860();
+    public abstract void f861();
+    public abstract void f862();
+    public abstract void f863();
+    public abstract void f864();
+    public abstract void f865();
+    public abstract void f866();
+    public abstract void f867();
+    public abstract void f868();
+    public abstract void f869();
+    public abstract void f870();
+    public abstract void f871();
+    public abstract void f872();
+    public abstract void f873();
+    public abstract void f874();
+    public abstract void f875();
+    public abstract void f876();
+    public abstract void f877();
+    public abstract void f878();
+    public abstract void f879();
+    public abstract void f880();
+    public abstract void f881();
+    public abstract void f882();
+    public abstract void f883();
+    public abstract void f884();
+    public abstract void f885();
+    public abstract void f886();
+    public abstract void f887();
+    public abstract void f888();
+    public abstract void f889();
+    public abstract void f890();
+    public abstract void f891();
+    public abstract void f892();
+    public abstract void f893();
+    public abstract void f894();
+    public abstract void f895();
+    public abstract void f896();
+    public abstract void f897();
+    public abstract void f898();
+    public abstract void f899();
+    public abstract void f900();
+    public abstract void f901();
+    public abstract void f902();
+    public abstract void f903();
+    public abstract void f904();
+    public abstract void f905();
+    public abstract void f906();
+    public abstract void f907();
+    public abstract void f908();
+    public abstract void f909();
+    public abstract void f910();
+    public abstract void f911();
+    public abstract void f912();
+    public abstract void f913();
+    public abstract void f914();
+    public abstract void f915();
+    public abstract void f916();
+    public abstract void f917();
+    public abstract void f918();
+    public abstract void f919();
+    public abstract void f920();
+    public abstract void f921();
+    public abstract void f922();
+    public abstract void f923();
+    public abstract void f924();
+    public abstract void f925();
+    public abstract void f926();
+    public abstract void f927();
+    public abstract void f928();
+    public abstract void f929();
+    public abstract void f930();
+    public abstract void f931();
+    public abstract void f932();
+    public abstract void f933();
+    public abstract void f934();
+    public abstract void f935();
+    public abstract void f936();
+    public abstract void f937();
+    public abstract void f938();
+    public abstract void f939();
+    public abstract void f940();
+    public abstract void f941();
+    public abstract void f942();
+    public abstract void f943();
+    public abstract void f944();
+    public abstract void f945();
+    public abstract void f946();
+    public abstract void f947();
+    public abstract void f948();
+    public abstract void f949();
+    public abstract void f950();
+    public abstract void f951();
+    public abstract void f952();
+    public abstract void f953();
+    public abstract void f954();
+    public abstract void f955();
+    public abstract void f956();
+    public abstract void f957();
+    public abstract void f958();
+    public abstract void f959();
+    public abstract void f960();
+    public abstract void f961();
+    public abstract void f962();
+    public abstract void f963();
+    public abstract void f964();
+    public abstract void f965();
+    public abstract void f966();
+    public abstract void f967();
+    public abstract void f968();
+    public abstract void f969();
+    public abstract void f970();
+    public abstract void f971();
+    public abstract void f972();
+    public abstract void f973();
+    public abstract void f974();
+    public abstract void f975();
+    public abstract void f976();
+    public abstract void f977();
+    public abstract void f978();
+    public abstract void f979();
+    public abstract void f980();
+    public abstract void f981();
+    public abstract void f982();
+    public abstract void f983();
+    public abstract void f984();
+    public abstract void f985();
+    public abstract void f986();
+    public abstract void f987();
+    public abstract void f988();
+    public abstract void f989();
+    public abstract void f990();
+    public abstract void f991();
+    public abstract void f992();
+    public abstract void f993();
+    public abstract void f994();
+    public abstract void f995();
+    public abstract void f996();
+    public abstract void f997();
+    public abstract void f998();
+    public abstract void f999();
+    public abstract void f1000();
+    public abstract void f1001();
+    public abstract void f1002();
+    public abstract void f1003();
+    public abstract void f1004();
+    public abstract void f1005();
+    public abstract void f1006();
+    public abstract void f1007();
+    public abstract void f1008();
+    public abstract void f1009();
+    public abstract void f1010();
+    public abstract void f1011();
+    public abstract void f1012();
+    public abstract void f1013();
+    public abstract void f1014();
+    public abstract void f1015();
+    public abstract void f1016();
+    public abstract void f1017();
+    public abstract void f1018();
+    public abstract void f1019();
+    public abstract void f1020();
+    public abstract void f1021();
+    public abstract void f1022();
+    public abstract void f1023();
+    public abstract void f1024();
+    public abstract void f1025();
+    public abstract void f1026();
+    public abstract void f1027();
+    public abstract void f1028();
+    public abstract void f1029();
+    public abstract void f1030();
+    public abstract void f1031();
+    public abstract void f1032();
+    public abstract void f1033();
+    public abstract void f1034();
+    public abstract void f1035();
+    public abstract void f1036();
+    public abstract void f1037();
+    public abstract void f1038();
+    public abstract void f1039();
+    public abstract void f1040();
+    public abstract void f1041();
+    public abstract void f1042();
+    public abstract void f1043();
+    public abstract void f1044();
+    public abstract void f1045();
+    public abstract void f1046();
+    public abstract void f1047();
+    public abstract void f1048();
+    public abstract void f1049();
+    public abstract void f1050();
+    public abstract void f1051();
+    public abstract void f1052();
+    public abstract void f1053();
+    public abstract void f1054();
+    public abstract void f1055();
+    public abstract void f1056();
+    public abstract void f1057();
+    public abstract void f1058();
+    public abstract void f1059();
+    public abstract void f1060();
+    public abstract void f1061();
+    public abstract void f1062();
+    public abstract void f1063();
+    public abstract void f1064();
+    public abstract void f1065();
+    public abstract void f1066();
+    public abstract void f1067();
+    public abstract void f1068();
+    public abstract void f1069();
+    public abstract void f1070();
+    public abstract void f1071();
+    public abstract void f1072();
+    public abstract void f1073();
+    public abstract void f1074();
+    public abstract void f1075();
+    public abstract void f1076();
+    public abstract void f1077();
+    public abstract void f1078();
+    public abstract void f1079();
+    public abstract void f1080();
+    public abstract void f1081();
+    public abstract void f1082();
+    public abstract void f1083();
+    public abstract void f1084();
+    public abstract void f1085();
+    public abstract void f1086();
+    public abstract void f1087();
+    public abstract void f1088();
+    public abstract void f1089();
+    public abstract void f1090();
+    public abstract void f1091();
+    public abstract void f1092();
+    public abstract void f1093();
+    public abstract void f1094();
+    public abstract void f1095();
+    public abstract void f1096();
+    public abstract void f1097();
+    public abstract void f1098();
+    public abstract void f1099();
+    public abstract void f1100();
+    public abstract void f1101();
+    public abstract void f1102();
+    public abstract void f1103();
+    public abstract void f1104();
+    public abstract void f1105();
+    public abstract void f1106();
+    public abstract void f1107();
+    public abstract void f1108();
+    public abstract void f1109();
+    public abstract void f1110();
+    public abstract void f1111();
+    public abstract void f1112();
+    public abstract void f1113();
+    public abstract void f1114();
+    public abstract void f1115();
+    public abstract void f1116();
+    public abstract void f1117();
+    public abstract void f1118();
+    public abstract void f1119();
+    public abstract void f1120();
+    public abstract void f1121();
+    public abstract void f1122();
+    public abstract void f1123();
+    public abstract void f1124();
+    public abstract void f1125();
+    public abstract void f1126();
+    public abstract void f1127();
+    public abstract void f1128();
+    public abstract void f1129();
+    public abstract void f1130();
+    public abstract void f1131();
+    public abstract void f1132();
+    public abstract void f1133();
+    public abstract void f1134();
+    public abstract void f1135();
+    public abstract void f1136();
+    public abstract void f1137();
+    public abstract void f1138();
+    public abstract void f1139();
+    public abstract void f1140();
+    public abstract void f1141();
+    public abstract void f1142();
+    public abstract void f1143();
+    public abstract void f1144();
+    public abstract void f1145();
+    public abstract void f1146();
+    public abstract void f1147();
+    public abstract void f1148();
+    public abstract void f1149();
+    public abstract void f1150();
+    public abstract void f1151();
+    public abstract void f1152();
+    public abstract void f1153();
+    public abstract void f1154();
+    public abstract void f1155();
+    public abstract void f1156();
+    public abstract void f1157();
+    public abstract void f1158();
+    public abstract void f1159();
+    public abstract void f1160();
+    public abstract void f1161();
+    public abstract void f1162();
+    public abstract void f1163();
+    public abstract void f1164();
+    public abstract void f1165();
+    public abstract void f1166();
+    public abstract void f1167();
+    public abstract void f1168();
+    public abstract void f1169();
+    public abstract void f1170();
+    public abstract void f1171();
+    public abstract void f1172();
+    public abstract void f1173();
+    public abstract void f1174();
+    public abstract void f1175();
+    public abstract void f1176();
+    public abstract void f1177();
+    public abstract void f1178();
+    public abstract void f1179();
+    public abstract void f1180();
+    public abstract void f1181();
+    public abstract void f1182();
+    public abstract void f1183();
+    public abstract void f1184();
+    public abstract void f1185();
+    public abstract void f1186();
+    public abstract void f1187();
+    public abstract void f1188();
+    public abstract void f1189();
+    public abstract void f1190();
+    public abstract void f1191();
+    public abstract void f1192();
+    public abstract void f1193();
+    public abstract void f1194();
+    public abstract void f1195();
+    public abstract void f1196();
+    public abstract void f1197();
+    public abstract void f1198();
+    public abstract void f1199();
+    public abstract void f1200();
+    public abstract void f1201();
+    public abstract void f1202();
+    public abstract void f1203();
+    public abstract void f1204();
+    public abstract void f1205();
+    public abstract void f1206();
+    public abstract void f1207();
+    public abstract void f1208();
+    public abstract void f1209();
+    public abstract void f1210();
+    public abstract void f1211();
+    public abstract void f1212();
+    public abstract void f1213();
+    public abstract void f1214();
+    public abstract void f1215();
+    public abstract void f1216();
+    public abstract void f1217();
+    public abstract void f1218();
+    public abstract void f1219();
+    public abstract void f1220();
+    public abstract void f1221();
+    public abstract void f1222();
+    public abstract void f1223();
+    public abstract void f1224();
+    public abstract void f1225();
+    public abstract void f1226();
+    public abstract void f1227();
+    public abstract void f1228();
+    public abstract void f1229();
+    public abstract void f1230();
+    public abstract void f1231();
+    public abstract void f1232();
+    public abstract void f1233();
+    public abstract void f1234();
+    public abstract void f1235();
+    public abstract void f1236();
+    public abstract void f1237();
+    public abstract void f1238();
+    public abstract void f1239();
+    public abstract void f1240();
+    public abstract void f1241();
+    public abstract void f1242();
+    public abstract void f1243();
+    public abstract void f1244();
+    public abstract void f1245();
+    public abstract void f1246();
+    public abstract void f1247();
+    public abstract void f1248();
+    public abstract void f1249();
+    public abstract void f1250();
+    public abstract void f1251();
+    public abstract void f1252();
+    public abstract void f1253();
+    public abstract void f1254();
+    public abstract void f1255();
+    public abstract void f1256();
+    public abstract void f1257();
+    public abstract void f1258();
+    public abstract void f1259();
+    public abstract void f1260();
+    public abstract void f1261();
+    public abstract void f1262();
+    public abstract void f1263();
+    public abstract void f1264();
+    public abstract void f1265();
+    public abstract void f1266();
+    public abstract void f1267();
+    public abstract void f1268();
+    public abstract void f1269();
+    public abstract void f1270();
+    public abstract void f1271();
+    public abstract void f1272();
+    public abstract void f1273();
+    public abstract void f1274();
+    public abstract void f1275();
+    public abstract void f1276();
+    public abstract void f1277();
+    public abstract void f1278();
+    public abstract void f1279();
+    public abstract void f1280();
+    public abstract void f1281();
+    public abstract void f1282();
+    public abstract void f1283();
+    public abstract void f1284();
+    public abstract void f1285();
+    public abstract void f1286();
+    public abstract void f1287();
+    public abstract void f1288();
+    public abstract void f1289();
+    public abstract void f1290();
+    public abstract void f1291();
+    public abstract void f1292();
+    public abstract void f1293();
+    public abstract void f1294();
+    public abstract void f1295();
+    public abstract void f1296();
+    public abstract void f1297();
+    public abstract void f1298();
+    public abstract void f1299();
+    public abstract void f1300();
+    public abstract void f1301();
+    public abstract void f1302();
+    public abstract void f1303();
+    public abstract void f1304();
+    public abstract void f1305();
+    public abstract void f1306();
+    public abstract void f1307();
+    public abstract void f1308();
+    public abstract void f1309();
+    public abstract void f1310();
+    public abstract void f1311();
+    public abstract void f1312();
+    public abstract void f1313();
+    public abstract void f1314();
+    public abstract void f1315();
+    public abstract void f1316();
+    public abstract void f1317();
+    public abstract void f1318();
+    public abstract void f1319();
+    public abstract void f1320();
+    public abstract void f1321();
+    public abstract void f1322();
+    public abstract void f1323();
+    public abstract void f1324();
+    public abstract void f1325();
+    public abstract void f1326();
+    public abstract void f1327();
+    public abstract void f1328();
+    public abstract void f1329();
+    public abstract void f1330();
+    public abstract void f1331();
+    public abstract void f1332();
+    public abstract void f1333();
+    public abstract void f1334();
+    public abstract void f1335();
+    public abstract void f1336();
+    public abstract void f1337();
+    public abstract void f1338();
+    public abstract void f1339();
+    public abstract void f1340();
+    public abstract void f1341();
+    public abstract void f1342();
+    public abstract void f1343();
+    public abstract void f1344();
+    public abstract void f1345();
+    public abstract void f1346();
+    public abstract void f1347();
+    public abstract void f1348();
+    public abstract void f1349();
+    public abstract void f1350();
+    public abstract void f1351();
+    public abstract void f1352();
+    public abstract void f1353();
+    public abstract void f1354();
+    public abstract void f1355();
+    public abstract void f1356();
+    public abstract void f1357();
+    public abstract void f1358();
+    public abstract void f1359();
+    public abstract void f1360();
+    public abstract void f1361();
+    public abstract void f1362();
+    public abstract void f1363();
+    public abstract void f1364();
+    public abstract void f1365();
+    public abstract void f1366();
+    public abstract void f1367();
+    public abstract void f1368();
+    public abstract void f1369();
+    public abstract void f1370();
+    public abstract void f1371();
+    public abstract void f1372();
+    public abstract void f1373();
+    public abstract void f1374();
+    public abstract void f1375();
+    public abstract void f1376();
+    public abstract void f1377();
+    public abstract void f1378();
+    public abstract void f1379();
+    public abstract void f1380();
+    public abstract void f1381();
+    public abstract void f1382();
+    public abstract void f1383();
+    public abstract void f1384();
+    public abstract void f1385();
+    public abstract void f1386();
+    public abstract void f1387();
+    public abstract void f1388();
+    public abstract void f1389();
+    public abstract void f1390();
+    public abstract void f1391();
+    public abstract void f1392();
+    public abstract void f1393();
+    public abstract void f1394();
+    public abstract void f1395();
+    public abstract void f1396();
+    public abstract void f1397();
+    public abstract void f1398();
+    public abstract void f1399();
+    public abstract void f1400();
+    public abstract void f1401();
+    public abstract void f1402();
+    public abstract void f1403();
+    public abstract void f1404();
+    public abstract void f1405();
+    public abstract void f1406();
+    public abstract void f1407();
+    public abstract void f1408();
+    public abstract void f1409();
+    public abstract void f1410();
+    public abstract void f1411();
+    public abstract void f1412();
+    public abstract void f1413();
+    public abstract void f1414();
+    public abstract void f1415();
+    public abstract void f1416();
+    public abstract void f1417();
+    public abstract void f1418();
+    public abstract void f1419();
+    public abstract void f1420();
+    public abstract void f1421();
+    public abstract void f1422();
+    public abstract void f1423();
+    public abstract void f1424();
+    public abstract void f1425();
+    public abstract void f1426();
+    public abstract void f1427();
+    public abstract void f1428();
+    public abstract void f1429();
+    public abstract void f1430();
+    public abstract void f1431();
+    public abstract void f1432();
+    public abstract void f1433();
+    public abstract void f1434();
+    public abstract void f1435();
+    public abstract void f1436();
+    public abstract void f1437();
+    public abstract void f1438();
+    public abstract void f1439();
+    public abstract void f1440();
+    public abstract void f1441();
+    public abstract void f1442();
+    public abstract void f1443();
+    public abstract void f1444();
+    public abstract void f1445();
+    public abstract void f1446();
+    public abstract void f1447();
+    public abstract void f1448();
+    public abstract void f1449();
+    public abstract void f1450();
+    public abstract void f1451();
+    public abstract void f1452();
+    public abstract void f1453();
+    public abstract void f1454();
+    public abstract void f1455();
+    public abstract void f1456();
+    public abstract void f1457();
+    public abstract void f1458();
+    public abstract void f1459();
+    public abstract void f1460();
+    public abstract void f1461();
+    public abstract void f1462();
+    public abstract void f1463();
+    public abstract void f1464();
+    public abstract void f1465();
+    public abstract void f1466();
+    public abstract void f1467();
+    public abstract void f1468();
+    public abstract void f1469();
+    public abstract void f1470();
+    public abstract void f1471();
+    public abstract void f1472();
+    public abstract void f1473();
+    public abstract void f1474();
+    public abstract void f1475();
+    public abstract void f1476();
+    public abstract void f1477();
+    public abstract void f1478();
+    public abstract void f1479();
+    public abstract void f1480();
+    public abstract void f1481();
+    public abstract void f1482();
+    public abstract void f1483();
+    public abstract void f1484();
+    public abstract void f1485();
+    public abstract void f1486();
+    public abstract void f1487();
+    public abstract void f1488();
+    public abstract void f1489();
+    public abstract void f1490();
+    public abstract void f1491();
+    public abstract void f1492();
+    public abstract void f1493();
+    public abstract void f1494();
+    public abstract void f1495();
+    public abstract void f1496();
+    public abstract void f1497();
+    public abstract void f1498();
+    public abstract void f1499();
+    public abstract void f1500();
+    public abstract void f1501();
+    public abstract void f1502();
+    public abstract void f1503();
+    public abstract void f1504();
+    public abstract void f1505();
+    public abstract void f1506();
+    public abstract void f1507();
+    public abstract void f1508();
+    public abstract void f1509();
+    public abstract void f1510();
+    public abstract void f1511();
+    public abstract void f1512();
+    public abstract void f1513();
+    public abstract void f1514();
+    public abstract void f1515();
+    public abstract void f1516();
+    public abstract void f1517();
+    public abstract void f1518();
+    public abstract void f1519();
+    public abstract void f1520();
+    public abstract void f1521();
+    public abstract void f1522();
+    public abstract void f1523();
+    public abstract void f1524();
+    public abstract void f1525();
+    public abstract void f1526();
+    public abstract void f1527();
+    public abstract void f1528();
+    public abstract void f1529();
+    public abstract void f1530();
+    public abstract void f1531();
+    public abstract void f1532();
+    public abstract void f1533();
+    public abstract void f1534();
+    public abstract void f1535();
+    public abstract void f1536();
+    public abstract void f1537();
+    public abstract void f1538();
+    public abstract void f1539();
+    public abstract void f1540();
+    public abstract void f1541();
+    public abstract void f1542();
+    public abstract void f1543();
+    public abstract void f1544();
+    public abstract void f1545();
+    public abstract void f1546();
+    public abstract void f1547();
+    public abstract void f1548();
+    public abstract void f1549();
+    public abstract void f1550();
+    public abstract void f1551();
+    public abstract void f1552();
+    public abstract void f1553();
+    public abstract void f1554();
+    public abstract void f1555();
+    public abstract void f1556();
+    public abstract void f1557();
+    public abstract void f1558();
+    public abstract void f1559();
+    public abstract void f1560();
+    public abstract void f1561();
+    public abstract void f1562();
+    public abstract void f1563();
+    public abstract void f1564();
+    public abstract void f1565();
+    public abstract void f1566();
+    public abstract void f1567();
+    public abstract void f1568();
+    public abstract void f1569();
+    public abstract void f1570();
+    public abstract void f1571();
+    public abstract void f1572();
+    public abstract void f1573();
+    public abstract void f1574();
+    public abstract void f1575();
+    public abstract void f1576();
+    public abstract void f1577();
+    public abstract void f1578();
+    public abstract void f1579();
+    public abstract void f1580();
+    public abstract void f1581();
+    public abstract void f1582();
+    public abstract void f1583();
+    public abstract void f1584();
+    public abstract void f1585();
+    public abstract void f1586();
+    public abstract void f1587();
+    public abstract void f1588();
+    public abstract void f1589();
+    public abstract void f1590();
+    public abstract void f1591();
+    public abstract void f1592();
+    public abstract void f1593();
+    public abstract void f1594();
+    public abstract void f1595();
+    public abstract void f1596();
+    public abstract void f1597();
+    public abstract void f1598();
+    public abstract void f1599();
+    public abstract void f1600();
+    public abstract void f1601();
+    public abstract void f1602();
+    public abstract void f1603();
+    public abstract void f1604();
+    public abstract void f1605();
+    public abstract void f1606();
+    public abstract void f1607();
+    public abstract void f1608();
+    public abstract void f1609();
+    public abstract void f1610();
+    public abstract void f1611();
+    public abstract void f1612();
+    public abstract void f1613();
+    public abstract void f1614();
+    public abstract void f1615();
+    public abstract void f1616();
+    public abstract void f1617();
+    public abstract void f1618();
+    public abstract void f1619();
+    public abstract void f1620();
+    public abstract void f1621();
+    public abstract void f1622();
+    public abstract void f1623();
+    public abstract void f1624();
+    public abstract void f1625();
+    public abstract void f1626();
+    public abstract void f1627();
+    public abstract void f1628();
+    public abstract void f1629();
+    public abstract void f1630();
+    public abstract void f1631();
+    public abstract void f1632();
+    public abstract void f1633();
+    public abstract void f1634();
+    public abstract void f1635();
+    public abstract void f1636();
+    public abstract void f1637();
+    public abstract void f1638();
+    public abstract void f1639();
+    public abstract void f1640();
+    public abstract void f1641();
+    public abstract void f1642();
+    public abstract void f1643();
+    public abstract void f1644();
+    public abstract void f1645();
+    public abstract void f1646();
+    public abstract void f1647();
+    public abstract void f1648();
+    public abstract void f1649();
+    public abstract void f1650();
+    public abstract void f1651();
+    public abstract void f1652();
+    public abstract void f1653();
+    public abstract void f1654();
+    public abstract void f1655();
+    public abstract void f1656();
+    public abstract void f1657();
+    public abstract void f1658();
+    public abstract void f1659();
+    public abstract void f1660();
+    public abstract void f1661();
+    public abstract void f1662();
+    public abstract void f1663();
+    public abstract void f1664();
+    public abstract void f1665();
+    public abstract void f1666();
+    public abstract void f1667();
+    public abstract void f1668();
+    public abstract void f1669();
+    public abstract void f1670();
+    public abstract void f1671();
+    public abstract void f1672();
+    public abstract void f1673();
+    public abstract void f1674();
+    public abstract void f1675();
+    public abstract void f1676();
+    public abstract void f1677();
+    public abstract void f1678();
+    public abstract void f1679();
+    public abstract void f1680();
+    public abstract void f1681();
+    public abstract void f1682();
+    public abstract void f1683();
+    public abstract void f1684();
+    public abstract void f1685();
+    public abstract void f1686();
+    public abstract void f1687();
+    public abstract void f1688();
+    public abstract void f1689();
+    public abstract void f1690();
+    public abstract void f1691();
+    public abstract void f1692();
+    public abstract void f1693();
+    public abstract void f1694();
+    public abstract void f1695();
+    public abstract void f1696();
+    public abstract void f1697();
+    public abstract void f1698();
+    public abstract void f1699();
+    public abstract void f1700();
+    public abstract void f1701();
+    public abstract void f1702();
+    public abstract void f1703();
+    public abstract void f1704();
+    public abstract void f1705();
+    public abstract void f1706();
+    public abstract void f1707();
+    public abstract void f1708();
+    public abstract void f1709();
+    public abstract void f1710();
+    public abstract void f1711();
+    public abstract void f1712();
+    public abstract void f1713();
+    public abstract void f1714();
+    public abstract void f1715();
+    public abstract void f1716();
+    public abstract void f1717();
+    public abstract void f1718();
+    public abstract void f1719();
+    public abstract void f1720();
+    public abstract void f1721();
+    public abstract void f1722();
+    public abstract void f1723();
+    public abstract void f1724();
+    public abstract void f1725();
+    public abstract void f1726();
+    public abstract void f1727();
+    public abstract void f1728();
+    public abstract void f1729();
+    public abstract void f1730();
+    public abstract void f1731();
+    public abstract void f1732();
+    public abstract void f1733();
+    public abstract void f1734();
+    public abstract void f1735();
+    public abstract void f1736();
+    public abstract void f1737();
+    public abstract void f1738();
+    public abstract void f1739();
+    public abstract void f1740();
+    public abstract void f1741();
+    public abstract void f1742();
+    public abstract void f1743();
+    public abstract void f1744();
+    public abstract void f1745();
+    public abstract void f1746();
+    public abstract void f1747();
+    public abstract void f1748();
+    public abstract void f1749();
+    public abstract void f1750();
+    public abstract void f1751();
+    public abstract void f1752();
+    public abstract void f1753();
+    public abstract void f1754();
+    public abstract void f1755();
+    public abstract void f1756();
+    public abstract void f1757();
+    public abstract void f1758();
+    public abstract void f1759();
+    public abstract void f1760();
+    public abstract void f1761();
+    public abstract void f1762();
+    public abstract void f1763();
+    public abstract void f1764();
+    public abstract void f1765();
+    public abstract void f1766();
+    public abstract void f1767();
+    public abstract void f1768();
+    public abstract void f1769();
+    public abstract void f1770();
+    public abstract void f1771();
+    public abstract void f1772();
+    public abstract void f1773();
+    public abstract void f1774();
+    public abstract void f1775();
+    public abstract void f1776();
+    public abstract void f1777();
+    public abstract void f1778();
+    public abstract void f1779();
+    public abstract void f1780();
+    public abstract void f1781();
+    public abstract void f1782();
+    public abstract void f1783();
+    public abstract void f1784();
+    public abstract void f1785();
+    public abstract void f1786();
+    public abstract void f1787();
+    public abstract void f1788();
+    public abstract void f1789();
+    public abstract void f1790();
+    public abstract void f1791();
+    public abstract void f1792();
+    public abstract void f1793();
+    public abstract void f1794();
+    public abstract void f1795();
+    public abstract void f1796();
+    public abstract void f1797();
+    public abstract void f1798();
+    public abstract void f1799();
+    public abstract void f1800();
+    public abstract void f1801();
+    public abstract void f1802();
+    public abstract void f1803();
+    public abstract void f1804();
+    public abstract void f1805();
+    public abstract void f1806();
+    public abstract void f1807();
+    public abstract void f1808();
+    public abstract void f1809();
+    public abstract void f1810();
+    public abstract void f1811();
+    public abstract void f1812();
+    public abstract void f1813();
+    public abstract void f1814();
+    public abstract void f1815();
+    public abstract void f1816();
+    public abstract void f1817();
+    public abstract void f1818();
+    public abstract void f1819();
+    public abstract void f1820();
+    public abstract void f1821();
+    public abstract void f1822();
+    public abstract void f1823();
+    public abstract void f1824();
+    public abstract void f1825();
+    public abstract void f1826();
+    public abstract void f1827();
+    public abstract void f1828();
+    public abstract void f1829();
+    public abstract void f1830();
+    public abstract void f1831();
+    public abstract void f1832();
+    public abstract void f1833();
+    public abstract void f1834();
+    public abstract void f1835();
+    public abstract void f1836();
+    public abstract void f1837();
+    public abstract void f1838();
+    public abstract void f1839();
+    public abstract void f1840();
+    public abstract void f1841();
+    public abstract void f1842();
+    public abstract void f1843();
+    public abstract void f1844();
+    public abstract void f1845();
+    public abstract void f1846();
+    public abstract void f1847();
+    public abstract void f1848();
+    public abstract void f1849();
+    public abstract void f1850();
+    public abstract void f1851();
+    public abstract void f1852();
+    public abstract void f1853();
+    public abstract void f1854();
+    public abstract void f1855();
+    public abstract void f1856();
+    public abstract void f1857();
+    public abstract void f1858();
+    public abstract void f1859();
+    public abstract void f1860();
+    public abstract void f1861();
+    public abstract void f1862();
+    public abstract void f1863();
+    public abstract void f1864();
+    public abstract void f1865();
+    public abstract void f1866();
+    public abstract void f1867();
+    public abstract void f1868();
+    public abstract void f1869();
+    public abstract void f1870();
+    public abstract void f1871();
+    public abstract void f1872();
+    public abstract void f1873();
+    public abstract void f1874();
+    public abstract void f1875();
+    public abstract void f1876();
+    public abstract void f1877();
+    public abstract void f1878();
+    public abstract void f1879();
+    public abstract void f1880();
+    public abstract void f1881();
+    public abstract void f1882();
+    public abstract void f1883();
+    public abstract void f1884();
+    public abstract void f1885();
+    public abstract void f1886();
+    public abstract void f1887();
+    public abstract void f1888();
+    public abstract void f1889();
+    public abstract void f1890();
+    public abstract void f1891();
+    public abstract void f1892();
+    public abstract void f1893();
+    public abstract void f1894();
+    public abstract void f1895();
+    public abstract void f1896();
+    public abstract void f1897();
+    public abstract void f1898();
+    public abstract void f1899();
+    public abstract void f1900();
+    public abstract void f1901();
+    public abstract void f1902();
+    public abstract void f1903();
+    public abstract void f1904();
+    public abstract void f1905();
+    public abstract void f1906();
+    public abstract void f1907();
+    public abstract void f1908();
+    public abstract void f1909();
+    public abstract void f1910();
+    public abstract void f1911();
+    public abstract void f1912();
+    public abstract void f1913();
+    public abstract void f1914();
+    public abstract void f1915();
+    public abstract void f1916();
+    public abstract void f1917();
+    public abstract void f1918();
+    public abstract void f1919();
+    public abstract void f1920();
+    public abstract void f1921();
+    public abstract void f1922();
+    public abstract void f1923();
+    public abstract void f1924();
+    public abstract void f1925();
+    public abstract void f1926();
+    public abstract void f1927();
+    public abstract void f1928();
+    public abstract void f1929();
+    public abstract void f1930();
+    public abstract void f1931();
+    public abstract void f1932();
+    public abstract void f1933();
+    public abstract void f1934();
+    public abstract void f1935();
+    public abstract void f1936();
+    public abstract void f1937();
+    public abstract void f1938();
+    public abstract void f1939();
+    public abstract void f1940();
+    public abstract void f1941();
+    public abstract void f1942();
+    public abstract void f1943();
+    public abstract void f1944();
+    public abstract void f1945();
+    public abstract void f1946();
+    public abstract void f1947();
+    public abstract void f1948();
+    public abstract void f1949();
+    public abstract void f1950();
+    public abstract void f1951();
+    public abstract void f1952();
+    public abstract void f1953();
+    public abstract void f1954();
+    public abstract void f1955();
+    public abstract void f1956();
+    public abstract void f1957();
+    public abstract void f1958();
+    public abstract void f1959();
+    public abstract void f1960();
+    public abstract void f1961();
+    public abstract void f1962();
+    public abstract void f1963();
+    public abstract void f1964();
+    public abstract void f1965();
+    public abstract void f1966();
+    public abstract void f1967();
+    public abstract void f1968();
+    public abstract void f1969();
+    public abstract void f1970();
+    public abstract void f1971();
+    public abstract void f1972();
+    public abstract void f1973();
+    public abstract void f1974();
+    public abstract void f1975();
+    public abstract void f1976();
+    public abstract void f1977();
+    public abstract void f1978();
+    public abstract void f1979();
+    public abstract void f1980();
+    public abstract void f1981();
+    public abstract void f1982();
+    public abstract void f1983();
+    public abstract void f1984();
+    public abstract void f1985();
+    public abstract void f1986();
+    public abstract void f1987();
+    public abstract void f1988();
+    public abstract void f1989();
+    public abstract void f1990();
+    public abstract void f1991();
+    public abstract void f1992();
+    public abstract void f1993();
+    public abstract void f1994();
+    public abstract void f1995();
+    public abstract void f1996();
+    public abstract void f1997();
+    public abstract void f1998();
+    public abstract void f1999();
+    public abstract void f2000();
+    public abstract void f2001();
+    public abstract void f2002();
+    public abstract void f2003();
+    public abstract void f2004();
+    public abstract void f2005();
+    public abstract void f2006();
+    public abstract void f2007();
+    public abstract void f2008();
+    public abstract void f2009();
+    public abstract void f2010();
+    public abstract void f2011();
+    public abstract void f2012();
+    public abstract void f2013();
+    public abstract void f2014();
+    public abstract void f2015();
+    public abstract void f2016();
+    public abstract void f2017();
+    public abstract void f2018();
+    public abstract void f2019();
+    public abstract void f2020();
+    public abstract void f2021();
+    public abstract void f2022();
+    public abstract void f2023();
+    public abstract void f2024();
+    public abstract void f2025();
+    public abstract void f2026();
+    public abstract void f2027();
+    public abstract void f2028();
+    public abstract void f2029();
+    public abstract void f2030();
+    public abstract void f2031();
+    public abstract void f2032();
+    public abstract void f2033();
+    public abstract void f2034();
+    public abstract void f2035();
+    public abstract void f2036();
+    public abstract void f2037();
+    public abstract void f2038();
+    public abstract void f2039();
+    public abstract void f2040();
+    public abstract void f2041();
+    public abstract void f2042();
+    public abstract void f2043();
+    public abstract void f2044();
+    public abstract void f2045();
+    public abstract void f2046();
+    public abstract void f2047();
+    public abstract void f2048();
+    public abstract void f2049();
+    public abstract void f2050();
+    public abstract void f2051();
+    public abstract void f2052();
+    public abstract void f2053();
+    public abstract void f2054();
+    public abstract void f2055();
+    public abstract void f2056();
+    public abstract void f2057();
+    public abstract void f2058();
+    public abstract void f2059();
+    public abstract void f2060();
+    public abstract void f2061();
+    public abstract void f2062();
+    public abstract void f2063();
+    public abstract void f2064();
+    public abstract void f2065();
+    public abstract void f2066();
+    public abstract void f2067();
+    public abstract void f2068();
+    public abstract void f2069();
+    public abstract void f2070();
+    public abstract void f2071();
+    public abstract void f2072();
+    public abstract void f2073();
+    public abstract void f2074();
+    public abstract void f2075();
+    public abstract void f2076();
+    public abstract void f2077();
+    public abstract void f2078();
+    public abstract void f2079();
+    public abstract void f2080();
+    public abstract void f2081();
+    public abstract void f2082();
+    public abstract void f2083();
+    public abstract void f2084();
+    public abstract void f2085();
+    public abstract void f2086();
+    public abstract void f2087();
+    public abstract void f2088();
+    public abstract void f2089();
+    public abstract void f2090();
+    public abstract void f2091();
+    public abstract void f2092();
+    public abstract void f2093();
+    public abstract void f2094();
+    public abstract void f2095();
+    public abstract void f2096();
+    public abstract void f2097();
+    public abstract void f2098();
+    public abstract void f2099();
+    public abstract void f2100();
+    public abstract void f2101();
+    public abstract void f2102();
+    public abstract void f2103();
+    public abstract void f2104();
+    public abstract void f2105();
+    public abstract void f2106();
+    public abstract void f2107();
+    public abstract void f2108();
+    public abstract void f2109();
+    public abstract void f2110();
+    public abstract void f2111();
+    public abstract void f2112();
+    public abstract void f2113();
+    public abstract void f2114();
+    public abstract void f2115();
+    public abstract void f2116();
+    public abstract void f2117();
+    public abstract void f2118();
+    public abstract void f2119();
+    public abstract void f2120();
+    public abstract void f2121();
+    public abstract void f2122();
+    public abstract void f2123();
+    public abstract void f2124();
+    public abstract void f2125();
+    public abstract void f2126();
+    public abstract void f2127();
+    public abstract void f2128();
+    public abstract void f2129();
+    public abstract void f2130();
+    public abstract void f2131();
+    public abstract void f2132();
+    public abstract void f2133();
+    public abstract void f2134();
+    public abstract void f2135();
+    public abstract void f2136();
+    public abstract void f2137();
+    public abstract void f2138();
+    public abstract void f2139();
+    public abstract void f2140();
+    public abstract void f2141();
+    public abstract void f2142();
+    public abstract void f2143();
+    public abstract void f2144();
+    public abstract void f2145();
+    public abstract void f2146();
+    public abstract void f2147();
+    public abstract void f2148();
+    public abstract void f2149();
+    public abstract void f2150();
+    public abstract void f2151();
+    public abstract void f2152();
+    public abstract void f2153();
+    public abstract void f2154();
+    public abstract void f2155();
+    public abstract void f2156();
+    public abstract void f2157();
+    public abstract void f2158();
+    public abstract void f2159();
+    public abstract void f2160();
+    public abstract void f2161();
+    public abstract void f2162();
+    public abstract void f2163();
+    public abstract void f2164();
+    public abstract void f2165();
+    public abstract void f2166();
+    public abstract void f2167();
+    public abstract void f2168();
+    public abstract void f2169();
+    public abstract void f2170();
+    public abstract void f2171();
+    public abstract void f2172();
+    public abstract void f2173();
+    public abstract void f2174();
+    public abstract void f2175();
+    public abstract void f2176();
+    public abstract void f2177();
+    public abstract void f2178();
+    public abstract void f2179();
+    public abstract void f2180();
+    public abstract void f2181();
+    public abstract void f2182();
+    public abstract void f2183();
+    public abstract void f2184();
+    public abstract void f2185();
+    public abstract void f2186();
+    public abstract void f2187();
+    public abstract void f2188();
+    public abstract void f2189();
+    public abstract void f2190();
+    public abstract void f2191();
+    public abstract void f2192();
+    public abstract void f2193();
+    public abstract void f2194();
+    public abstract void f2195();
+    public abstract void f2196();
+    public abstract void f2197();
+    public abstract void f2198();
+    public abstract void f2199();
+    public abstract void f2200();
+    public abstract void f2201();
+    public abstract void f2202();
+    public abstract void f2203();
+    public abstract void f2204();
+    public abstract void f2205();
+    public abstract void f2206();
+    public abstract void f2207();
+    public abstract void f2208();
+    public abstract void f2209();
+    public abstract void f2210();
+    public abstract void f2211();
+    public abstract void f2212();
+    public abstract void f2213();
+    public abstract void f2214();
+    public abstract void f2215();
+    public abstract void f2216();
+    public abstract void f2217();
+    public abstract void f2218();
+    public abstract void f2219();
+    public abstract void f2220();
+    public abstract void f2221();
+    public abstract void f2222();
+    public abstract void f2223();
+    public abstract void f2224();
+    public abstract void f2225();
+    public abstract void f2226();
+    public abstract void f2227();
+    public abstract void f2228();
+    public abstract void f2229();
+    public abstract void f2230();
+    public abstract void f2231();
+    public abstract void f2232();
+    public abstract void f2233();
+    public abstract void f2234();
+    public abstract void f2235();
+    public abstract void f2236();
+    public abstract void f2237();
+    public abstract void f2238();
+    public abstract void f2239();
+    public abstract void f2240();
+    public abstract void f2241();
+    public abstract void f2242();
+    public abstract void f2243();
+    public abstract void f2244();
+    public abstract void f2245();
+    public abstract void f2246();
+    public abstract void f2247();
+    public abstract void f2248();
+    public abstract void f2249();
+    public abstract void f2250();
+    public abstract void f2251();
+    public abstract void f2252();
+    public abstract void f2253();
+    public abstract void f2254();
+    public abstract void f2255();
+    public abstract void f2256();
+    public abstract void f2257();
+    public abstract void f2258();
+    public abstract void f2259();
+    public abstract void f2260();
+    public abstract void f2261();
+    public abstract void f2262();
+    public abstract void f2263();
+    public abstract void f2264();
+    public abstract void f2265();
+    public abstract void f2266();
+    public abstract void f2267();
+    public abstract void f2268();
+    public abstract void f2269();
+    public abstract void f2270();
+    public abstract void f2271();
+    public abstract void f2272();
+    public abstract void f2273();
+    public abstract void f2274();
+    public abstract void f2275();
+    public abstract void f2276();
+    public abstract void f2277();
+    public abstract void f2278();
+    public abstract void f2279();
+    public abstract void f2280();
+    public abstract void f2281();
+    public abstract void f2282();
+    public abstract void f2283();
+    public abstract void f2284();
+    public abstract void f2285();
+    public abstract void f2286();
+    public abstract void f2287();
+    public abstract void f2288();
+    public abstract void f2289();
+    public abstract void f2290();
+    public abstract void f2291();
+    public abstract void f2292();
+    public abstract void f2293();
+    public abstract void f2294();
+    public abstract void f2295();
+    public abstract void f2296();
+    public abstract void f2297();
+    public abstract void f2298();
+    public abstract void f2299();
+    public abstract void f2300();
+    public abstract void f2301();
+    public abstract void f2302();
+    public abstract void f2303();
+    public abstract void f2304();
+    public abstract void f2305();
+    public abstract void f2306();
+    public abstract void f2307();
+    public abstract void f2308();
+    public abstract void f2309();
+    public abstract void f2310();
+    public abstract void f2311();
+    public abstract void f2312();
+    public abstract void f2313();
+    public abstract void f2314();
+    public abstract void f2315();
+    public abstract void f2316();
+    public abstract void f2317();
+    public abstract void f2318();
+    public abstract void f2319();
+    public abstract void f2320();
+    public abstract void f2321();
+    public abstract void f2322();
+    public abstract void f2323();
+    public abstract void f2324();
+    public abstract void f2325();
+    public abstract void f2326();
+    public abstract void f2327();
+    public abstract void f2328();
+    public abstract void f2329();
+    public abstract void f2330();
+    public abstract void f2331();
+    public abstract void f2332();
+    public abstract void f2333();
+    public abstract void f2334();
+    public abstract void f2335();
+    public abstract void f2336();
+    public abstract void f2337();
+    public abstract void f2338();
+    public abstract void f2339();
+    public abstract void f2340();
+    public abstract void f2341();
+    public abstract void f2342();
+    public abstract void f2343();
+    public abstract void f2344();
+    public abstract void f2345();
+    public abstract void f2346();
+    public abstract void f2347();
+    public abstract void f2348();
+    public abstract void f2349();
+    public abstract void f2350();
+    public abstract void f2351();
+    public abstract void f2352();
+    public abstract void f2353();
+    public abstract void f2354();
+    public abstract void f2355();
+    public abstract void f2356();
+    public abstract void f2357();
+    public abstract void f2358();
+    public abstract void f2359();
+    public abstract void f2360();
+    public abstract void f2361();
+    public abstract void f2362();
+    public abstract void f2363();
+    public abstract void f2364();
+    public abstract void f2365();
+    public abstract void f2366();
+    public abstract void f2367();
+    public abstract void f2368();
+    public abstract void f2369();
+    public abstract void f2370();
+    public abstract void f2371();
+    public abstract void f2372();
+    public abstract void f2373();
+    public abstract void f2374();
+    public abstract void f2375();
+    public abstract void f2376();
+    public abstract void f2377();
+    public abstract void f2378();
+    public abstract void f2379();
+    public abstract void f2380();
+    public abstract void f2381();
+    public abstract void f2382();
+    public abstract void f2383();
+    public abstract void f2384();
+    public abstract void f2385();
+    public abstract void f2386();
+    public abstract void f2387();
+    public abstract void f2388();
+    public abstract void f2389();
+    public abstract void f2390();
+    public abstract void f2391();
+    public abstract void f2392();
+    public abstract void f2393();
+    public abstract void f2394();
+    public abstract void f2395();
+    public abstract void f2396();
+    public abstract void f2397();
+    public abstract void f2398();
+    public abstract void f2399();
+    public abstract void f2400();
+    public abstract void f2401();
+    public abstract void f2402();
+    public abstract void f2403();
+    public abstract void f2404();
+    public abstract void f2405();
+    public abstract void f2406();
+    public abstract void f2407();
+    public abstract void f2408();
+    public abstract void f2409();
+    public abstract void f2410();
+    public abstract void f2411();
+    public abstract void f2412();
+    public abstract void f2413();
+    public abstract void f2414();
+    public abstract void f2415();
+    public abstract void f2416();
+    public abstract void f2417();
+    public abstract void f2418();
+    public abstract void f2419();
+    public abstract void f2420();
+    public abstract void f2421();
+    public abstract void f2422();
+    public abstract void f2423();
+    public abstract void f2424();
+    public abstract void f2425();
+    public abstract void f2426();
+    public abstract void f2427();
+    public abstract void f2428();
+    public abstract void f2429();
+    public abstract void f2430();
+    public abstract void f2431();
+    public abstract void f2432();
+    public abstract void f2433();
+    public abstract void f2434();
+    public abstract void f2435();
+    public abstract void f2436();
+    public abstract void f2437();
+    public abstract void f2438();
+    public abstract void f2439();
+    public abstract void f2440();
+    public abstract void f2441();
+    public abstract void f2442();
+    public abstract void f2443();
+    public abstract void f2444();
+    public abstract void f2445();
+    public abstract void f2446();
+    public abstract void f2447();
+    public abstract void f2448();
+    public abstract void f2449();
+    public abstract void f2450();
+    public abstract void f2451();
+    public abstract void f2452();
+    public abstract void f2453();
+    public abstract void f2454();
+    public abstract void f2455();
+    public abstract void f2456();
+    public abstract void f2457();
+    public abstract void f2458();
+    public abstract void f2459();
+    public abstract void f2460();
+    public abstract void f2461();
+    public abstract void f2462();
+    public abstract void f2463();
+    public abstract void f2464();
+    public abstract void f2465();
+    public abstract void f2466();
+    public abstract void f2467();
+    public abstract void f2468();
+    public abstract void f2469();
+    public abstract void f2470();
+    public abstract void f2471();
+    public abstract void f2472();
+    public abstract void f2473();
+    public abstract void f2474();
+    public abstract void f2475();
+    public abstract void f2476();
+    public abstract void f2477();
+    public abstract void f2478();
+    public abstract void f2479();
+    public abstract void f2480();
+    public abstract void f2481();
+    public abstract void f2482();
+    public abstract void f2483();
+    public abstract void f2484();
+    public abstract void f2485();
+    public abstract void f2486();
+    public abstract void f2487();
+    public abstract void f2488();
+    public abstract void f2489();
+    public abstract void f2490();
+    public abstract void f2491();
+    public abstract void f2492();
+    public abstract void f2493();
+    public abstract void f2494();
+    public abstract void f2495();
+    public abstract void f2496();
+    public abstract void f2497();
+    public abstract void f2498();
+    public abstract void f2499();
+    public abstract void f2500();
+    public abstract void f2501();
+    public abstract void f2502();
+    public abstract void f2503();
+    public abstract void f2504();
+    public abstract void f2505();
+    public abstract void f2506();
+    public abstract void f2507();
+    public abstract void f2508();
+    public abstract void f2509();
+    public abstract void f2510();
+    public abstract void f2511();
+    public abstract void f2512();
+    public abstract void f2513();
+    public abstract void f2514();
+    public abstract void f2515();
+    public abstract void f2516();
+    public abstract void f2517();
+    public abstract void f2518();
+    public abstract void f2519();
+    public abstract void f2520();
+    public abstract void f2521();
+    public abstract void f2522();
+    public abstract void f2523();
+    public abstract void f2524();
+    public abstract void f2525();
+    public abstract void f2526();
+    public abstract void f2527();
+    public abstract void f2528();
+    public abstract void f2529();
+    public abstract void f2530();
+    public abstract void f2531();
+    public abstract void f2532();
+    public abstract void f2533();
+    public abstract void f2534();
+    public abstract void f2535();
+    public abstract void f2536();
+    public abstract void f2537();
+    public abstract void f2538();
+    public abstract void f2539();
+    public abstract void f2540();
+    public abstract void f2541();
+    public abstract void f2542();
+    public abstract void f2543();
+    public abstract void f2544();
+    public abstract void f2545();
+    public abstract void f2546();
+    public abstract void f2547();
+    public abstract void f2548();
+    public abstract void f2549();
+    public abstract void f2550();
+    public abstract void f2551();
+    public abstract void f2552();
+    public abstract void f2553();
+    public abstract void f2554();
+    public abstract void f2555();
+    public abstract void f2556();
+    public abstract void f2557();
+    public abstract void f2558();
+    public abstract void f2559();
+    public abstract void f2560();
+    public abstract void f2561();
+    public abstract void f2562();
+    public abstract void f2563();
+    public abstract void f2564();
+    public abstract void f2565();
+    public abstract void f2566();
+    public abstract void f2567();
+    public abstract void f2568();
+    public abstract void f2569();
+    public abstract void f2570();
+    public abstract void f2571();
+    public abstract void f2572();
+    public abstract void f2573();
+    public abstract void f2574();
+    public abstract void f2575();
+    public abstract void f2576();
+    public abstract void f2577();
+    public abstract void f2578();
+    public abstract void f2579();
+    public abstract void f2580();
+    public abstract void f2581();
+    public abstract void f2582();
+    public abstract void f2583();
+    public abstract void f2584();
+    public abstract void f2585();
+    public abstract void f2586();
+    public abstract void f2587();
+    public abstract void f2588();
+    public abstract void f2589();
+    public abstract void f2590();
+    public abstract void f2591();
+    public abstract void f2592();
+    public abstract void f2593();
+    public abstract void f2594();
+    public abstract void f2595();
+    public abstract void f2596();
+    public abstract void f2597();
+    public abstract void f2598();
+    public abstract void f2599();
+    public abstract void f2600();
+    public abstract void f2601();
+    public abstract void f2602();
+    public abstract void f2603();
+    public abstract void f2604();
+    public abstract void f2605();
+    public abstract void f2606();
+    public abstract void f2607();
+    public abstract void f2608();
+    public abstract void f2609();
+    public abstract void f2610();
+    public abstract void f2611();
+    public abstract void f2612();
+    public abstract void f2613();
+    public abstract void f2614();
+    public abstract void f2615();
+    public abstract void f2616();
+    public abstract void f2617();
+    public abstract void f2618();
+    public abstract void f2619();
+    public abstract void f2620();
+    public abstract void f2621();
+    public abstract void f2622();
+    public abstract void f2623();
+    public abstract void f2624();
+    public abstract void f2625();
+    public abstract void f2626();
+    public abstract void f2627();
+    public abstract void f2628();
+    public abstract void f2629();
+    public abstract void f2630();
+    public abstract void f2631();
+    public abstract void f2632();
+    public abstract void f2633();
+    public abstract void f2634();
+    public abstract void f2635();
+    public abstract void f2636();
+    public abstract void f2637();
+    public abstract void f2638();
+    public abstract void f2639();
+    public abstract void f2640();
+    public abstract void f2641();
+    public abstract void f2642();
+    public abstract void f2643();
+    public abstract void f2644();
+    public abstract void f2645();
+    public abstract void f2646();
+    public abstract void f2647();
+    public abstract void f2648();
+    public abstract void f2649();
+    public abstract void f2650();
+    public abstract void f2651();
+    public abstract void f2652();
+    public abstract void f2653();
+    public abstract void f2654();
+    public abstract void f2655();
+    public abstract void f2656();
+    public abstract void f2657();
+    public abstract void f2658();
+    public abstract void f2659();
+    public abstract void f2660();
+    public abstract void f2661();
+    public abstract void f2662();
+    public abstract void f2663();
+    public abstract void f2664();
+    public abstract void f2665();
+    public abstract void f2666();
+    public abstract void f2667();
+    public abstract void f2668();
+    public abstract void f2669();
+    public abstract void f2670();
+    public abstract void f2671();
+    public abstract void f2672();
+    public abstract void f2673();
+    public abstract void f2674();
+    public abstract void f2675();
+    public abstract void f2676();
+    public abstract void f2677();
+    public abstract void f2678();
+    public abstract void f2679();
+    public abstract void f2680();
+    public abstract void f2681();
+    public abstract void f2682();
+    public abstract void f2683();
+    public abstract void f2684();
+    public abstract void f2685();
+    public abstract void f2686();
+    public abstract void f2687();
+    public abstract void f2688();
+    public abstract void f2689();
+    public abstract void f2690();
+    public abstract void f2691();
+    public abstract void f2692();
+    public abstract void f2693();
+    public abstract void f2694();
+    public abstract void f2695();
+    public abstract void f2696();
+    public abstract void f2697();
+    public abstract void f2698();
+    public abstract void f2699();
+    public abstract void f2700();
+    public abstract void f2701();
+    public abstract void f2702();
+    public abstract void f2703();
+    public abstract void f2704();
+    public abstract void f2705();
+    public abstract void f2706();
+    public abstract void f2707();
+    public abstract void f2708();
+    public abstract void f2709();
+    public abstract void f2710();
+    public abstract void f2711();
+    public abstract void f2712();
+    public abstract void f2713();
+    public abstract void f2714();
+    public abstract void f2715();
+    public abstract void f2716();
+    public abstract void f2717();
+    public abstract void f2718();
+    public abstract void f2719();
+    public abstract void f2720();
+    public abstract void f2721();
+    public abstract void f2722();
+    public abstract void f2723();
+    public abstract void f2724();
+    public abstract void f2725();
+    public abstract void f2726();
+    public abstract void f2727();
+    public abstract void f2728();
+    public abstract void f2729();
+    public abstract void f2730();
+    public abstract void f2731();
+    public abstract void f2732();
+    public abstract void f2733();
+    public abstract void f2734();
+    public abstract void f2735();
+    public abstract void f2736();
+    public abstract void f2737();
+    public abstract void f2738();
+    public abstract void f2739();
+    public abstract void f2740();
+    public abstract void f2741();
+    public abstract void f2742();
+    public abstract void f2743();
+    public abstract void f2744();
+    public abstract void f2745();
+    public abstract void f2746();
+    public abstract void f2747();
+    public abstract void f2748();
+    public abstract void f2749();
+    public abstract void f2750();
+    public abstract void f2751();
+    public abstract void f2752();
+    public abstract void f2753();
+    public abstract void f2754();
+    public abstract void f2755();
+    public abstract void f2756();
+    public abstract void f2757();
+    public abstract void f2758();
+    public abstract void f2759();
+    public abstract void f2760();
+    public abstract void f2761();
+    public abstract void f2762();
+    public abstract void f2763();
+    public abstract void f2764();
+    public abstract void f2765();
+    public abstract void f2766();
+    public abstract void f2767();
+    public abstract void f2768();
+    public abstract void f2769();
+    public abstract void f2770();
+    public abstract void f2771();
+    public abstract void f2772();
+    public abstract void f2773();
+    public abstract void f2774();
+    public abstract void f2775();
+    public abstract void f2776();
+    public abstract void f2777();
+    public abstract void f2778();
+    public abstract void f2779();
+    public abstract void f2780();
+    public abstract void f2781();
+    public abstract void f2782();
+    public abstract void f2783();
+    public abstract void f2784();
+    public abstract void f2785();
+    public abstract void f2786();
+    public abstract void f2787();
+    public abstract void f2788();
+    public abstract void f2789();
+    public abstract void f2790();
+    public abstract void f2791();
+    public abstract void f2792();
+    public abstract void f2793();
+    public abstract void f2794();
+    public abstract void f2795();
+    public abstract void f2796();
+    public abstract void f2797();
+    public abstract void f2798();
+    public abstract void f2799();
+    public abstract void f2800();
+    public abstract void f2801();
+    public abstract void f2802();
+    public abstract void f2803();
+    public abstract void f2804();
+    public abstract void f2805();
+    public abstract void f2806();
+    public abstract void f2807();
+    public abstract void f2808();
+    public abstract void f2809();
+    public abstract void f2810();
+    public abstract void f2811();
+    public abstract void f2812();
+    public abstract void f2813();
+    public abstract void f2814();
+    public abstract void f2815();
+    public abstract void f2816();
+    public abstract void f2817();
+    public abstract void f2818();
+    public abstract void f2819();
+    public abstract void f2820();
+    public abstract void f2821();
+    public abstract void f2822();
+    public abstract void f2823();
+    public abstract void f2824();
+    public abstract void f2825();
+    public abstract void f2826();
+    public abstract void f2827();
+    public abstract void f2828();
+    public abstract void f2829();
+    public abstract void f2830();
+    public abstract void f2831();
+    public abstract void f2832();
+    public abstract void f2833();
+    public abstract void f2834();
+    public abstract void f2835();
+    public abstract void f2836();
+    public abstract void f2837();
+    public abstract void f2838();
+    public abstract void f2839();
+    public abstract void f2840();
+    public abstract void f2841();
+    public abstract void f2842();
+    public abstract void f2843();
+    public abstract void f2844();
+    public abstract void f2845();
+    public abstract void f2846();
+    public abstract void f2847();
+    public abstract void f2848();
+    public abstract void f2849();
+    public abstract void f2850();
+    public abstract void f2851();
+    public abstract void f2852();
+    public abstract void f2853();
+    public abstract void f2854();
+    public abstract void f2855();
+    public abstract void f2856();
+    public abstract void f2857();
+    public abstract void f2858();
+    public abstract void f2859();
+    public abstract void f2860();
+    public abstract void f2861();
+    public abstract void f2862();
+    public abstract void f2863();
+    public abstract void f2864();
+    public abstract void f2865();
+    public abstract void f2866();
+    public abstract void f2867();
+    public abstract void f2868();
+    public abstract void f2869();
+    public abstract void f2870();
+    public abstract void f2871();
+    public abstract void f2872();
+    public abstract void f2873();
+    public abstract void f2874();
+    public abstract void f2875();
+    public abstract void f2876();
+    public abstract void f2877();
+    public abstract void f2878();
+    public abstract void f2879();
+    public abstract void f2880();
+    public abstract void f2881();
+    public abstract void f2882();
+    public abstract void f2883();
+    public abstract void f2884();
+    public abstract void f2885();
+    public abstract void f2886();
+    public abstract void f2887();
+    public abstract void f2888();
+    public abstract void f2889();
+    public abstract void f2890();
+    public abstract void f2891();
+    public abstract void f2892();
+    public abstract void f2893();
+    public abstract void f2894();
+    public abstract void f2895();
+    public abstract void f2896();
+    public abstract void f2897();
+    public abstract void f2898();
+    public abstract void f2899();
+    public abstract void f2900();
+    public abstract void f2901();
+    public abstract void f2902();
+    public abstract void f2903();
+    public abstract void f2904();
+    public abstract void f2905();
+    public abstract void f2906();
+    public abstract void f2907();
+    public abstract void f2908();
+    public abstract void f2909();
+    public abstract void f2910();
+    public abstract void f2911();
+    public abstract void f2912();
+    public abstract void f2913();
+    public abstract void f2914();
+    public abstract void f2915();
+    public abstract void f2916();
+    public abstract void f2917();
+    public abstract void f2918();
+    public abstract void f2919();
+    public abstract void f2920();
+    public abstract void f2921();
+    public abstract void f2922();
+    public abstract void f2923();
+    public abstract void f2924();
+    public abstract void f2925();
+    public abstract void f2926();
+    public abstract void f2927();
+    public abstract void f2928();
+    public abstract void f2929();
+    public abstract void f2930();
+    public abstract void f2931();
+    public abstract void f2932();
+    public abstract void f2933();
+    public abstract void f2934();
+    public abstract void f2935();
+    public abstract void f2936();
+    public abstract void f2937();
+    public abstract void f2938();
+    public abstract void f2939();
+    public abstract void f2940();
+    public abstract void f2941();
+    public abstract void f2942();
+    public abstract void f2943();
+    public abstract void f2944();
+    public abstract void f2945();
+    public abstract void f2946();
+    public abstract void f2947();
+    public abstract void f2948();
+    public abstract void f2949();
+    public abstract void f2950();
+    public abstract void f2951();
+    public abstract void f2952();
+    public abstract void f2953();
+    public abstract void f2954();
+    public abstract void f2955();
+    public abstract void f2956();
+    public abstract void f2957();
+    public abstract void f2958();
+    public abstract void f2959();
+    public abstract void f2960();
+    public abstract void f2961();
+    public abstract void f2962();
+    public abstract void f2963();
+    public abstract void f2964();
+    public abstract void f2965();
+    public abstract void f2966();
+    public abstract void f2967();
+    public abstract void f2968();
+    public abstract void f2969();
+    public abstract void f2970();
+    public abstract void f2971();
+    public abstract void f2972();
+    public abstract void f2973();
+    public abstract void f2974();
+    public abstract void f2975();
+    public abstract void f2976();
+    public abstract void f2977();
+    public abstract void f2978();
+    public abstract void f2979();
+    public abstract void f2980();
+    public abstract void f2981();
+    public abstract void f2982();
+    public abstract void f2983();
+    public abstract void f2984();
+    public abstract void f2985();
+    public abstract void f2986();
+    public abstract void f2987();
+    public abstract void f2988();
+    public abstract void f2989();
+    public abstract void f2990();
+    public abstract void f2991();
+    public abstract void f2992();
+    public abstract void f2993();
+    public abstract void f2994();
+    public abstract void f2995();
+    public abstract void f2996();
+    public abstract void f2997();
+    public abstract void f2998();
+    public abstract void f2999();
+    public abstract void f3000();
+    public abstract void f3001();
+    public abstract void f3002();
+    public abstract void f3003();
+    public abstract void f3004();
+    public abstract void f3005();
+    public abstract void f3006();
+    public abstract void f3007();
+    public abstract void f3008();
+    public abstract void f3009();
+    public abstract void f3010();
+    public abstract void f3011();
+    public abstract void f3012();
+    public abstract void f3013();
+    public abstract void f3014();
+    public abstract void f3015();
+    public abstract void f3016();
+    public abstract void f3017();
+    public abstract void f3018();
+    public abstract void f3019();
+    public abstract void f3020();
+    public abstract void f3021();
+    public abstract void f3022();
+    public abstract void f3023();
+    public abstract void f3024();
+    public abstract void f3025();
+    public abstract void f3026();
+    public abstract void f3027();
+    public abstract void f3028();
+    public abstract void f3029();
+    public abstract void f3030();
+    public abstract void f3031();
+    public abstract void f3032();
+    public abstract void f3033();
+    public abstract void f3034();
+    public abstract void f3035();
+    public abstract void f3036();
+    public abstract void f3037();
+    public abstract void f3038();
+    public abstract void f3039();
+    public abstract void f3040();
+    public abstract void f3041();
+    public abstract void f3042();
+    public abstract void f3043();
+    public abstract void f3044();
+    public abstract void f3045();
+    public abstract void f3046();
+    public abstract void f3047();
+    public abstract void f3048();
+    public abstract void f3049();
+    public abstract void f3050();
+    public abstract void f3051();
+    public abstract void f3052();
+    public abstract void f3053();
+    public abstract void f3054();
+    public abstract void f3055();
+    public abstract void f3056();
+    public abstract void f3057();
+    public abstract void f3058();
+    public abstract void f3059();
+    public abstract void f3060();
+    public abstract void f3061();
+    public abstract void f3062();
+    public abstract void f3063();
+    public abstract void f3064();
+    public abstract void f3065();
+    public abstract void f3066();
+    public abstract void f3067();
+    public abstract void f3068();
+    public abstract void f3069();
+    public abstract void f3070();
+    public abstract void f3071();
+    public abstract void f3072();
+    public abstract void f3073();
+    public abstract void f3074();
+    public abstract void f3075();
+    public abstract void f3076();
+    public abstract void f3077();
+    public abstract void f3078();
+    public abstract void f3079();
+    public abstract void f3080();
+    public abstract void f3081();
+    public abstract void f3082();
+    public abstract void f3083();
+    public abstract void f3084();
+    public abstract void f3085();
+    public abstract void f3086();
+    public abstract void f3087();
+    public abstract void f3088();
+    public abstract void f3089();
+    public abstract void f3090();
+    public abstract void f3091();
+    public abstract void f3092();
+    public abstract void f3093();
+    public abstract void f3094();
+    public abstract void f3095();
+    public abstract void f3096();
+    public abstract void f3097();
+    public abstract void f3098();
+    public abstract void f3099();
+    public abstract void f3100();
+    public abstract void f3101();
+    public abstract void f3102();
+    public abstract void f3103();
+    public abstract void f3104();
+    public abstract void f3105();
+    public abstract void f3106();
+    public abstract void f3107();
+    public abstract void f3108();
+    public abstract void f3109();
+    public abstract void f3110();
+    public abstract void f3111();
+    public abstract void f3112();
+    public abstract void f3113();
+    public abstract void f3114();
+    public abstract void f3115();
+    public abstract void f3116();
+    public abstract void f3117();
+    public abstract void f3118();
+    public abstract void f3119();
+    public abstract void f3120();
+    public abstract void f3121();
+    public abstract void f3122();
+    public abstract void f3123();
+    public abstract void f3124();
+    public abstract void f3125();
+    public abstract void f3126();
+    public abstract void f3127();
+    public abstract void f3128();
+    public abstract void f3129();
+    public abstract void f3130();
+    public abstract void f3131();
+    public abstract void f3132();
+    public abstract void f3133();
+    public abstract void f3134();
+    public abstract void f3135();
+    public abstract void f3136();
+    public abstract void f3137();
+    public abstract void f3138();
+    public abstract void f3139();
+    public abstract void f3140();
+    public abstract void f3141();
+    public abstract void f3142();
+    public abstract void f3143();
+    public abstract void f3144();
+    public abstract void f3145();
+    public abstract void f3146();
+    public abstract void f3147();
+    public abstract void f3148();
+    public abstract void f3149();
+    public abstract void f3150();
+    public abstract void f3151();
+    public abstract void f3152();
+    public abstract void f3153();
+    public abstract void f3154();
+    public abstract void f3155();
+    public abstract void f3156();
+    public abstract void f3157();
+    public abstract void f3158();
+    public abstract void f3159();
+    public abstract void f3160();
+    public abstract void f3161();
+    public abstract void f3162();
+    public abstract void f3163();
+    public abstract void f3164();
+    public abstract void f3165();
+    public abstract void f3166();
+    public abstract void f3167();
+    public abstract void f3168();
+    public abstract void f3169();
+    public abstract void f3170();
+    public abstract void f3171();
+    public abstract void f3172();
+    public abstract void f3173();
+    public abstract void f3174();
+    public abstract void f3175();
+    public abstract void f3176();
+    public abstract void f3177();
+    public abstract void f3178();
+    public abstract void f3179();
+    public abstract void f3180();
+    public abstract void f3181();
+    public abstract void f3182();
+    public abstract void f3183();
+    public abstract void f3184();
+    public abstract void f3185();
+    public abstract void f3186();
+    public abstract void f3187();
+    public abstract void f3188();
+    public abstract void f3189();
+    public abstract void f3190();
+    public abstract void f3191();
+    public abstract void f3192();
+    public abstract void f3193();
+    public abstract void f3194();
+    public abstract void f3195();
+    public abstract void f3196();
+    public abstract void f3197();
+    public abstract void f3198();
+    public abstract void f3199();
+    public abstract void f3200();
+    public abstract void f3201();
+    public abstract void f3202();
+    public abstract void f3203();
+    public abstract void f3204();
+    public abstract void f3205();
+    public abstract void f3206();
+    public abstract void f3207();
+    public abstract void f3208();
+    public abstract void f3209();
+    public abstract void f3210();
+    public abstract void f3211();
+    public abstract void f3212();
+    public abstract void f3213();
+    public abstract void f3214();
+    public abstract void f3215();
+    public abstract void f3216();
+    public abstract void f3217();
+    public abstract void f3218();
+    public abstract void f3219();
+    public abstract void f3220();
+    public abstract void f3221();
+    public abstract void f3222();
+    public abstract void f3223();
+    public abstract void f3224();
+    public abstract void f3225();
+    public abstract void f3226();
+    public abstract void f3227();
+    public abstract void f3228();
+    public abstract void f3229();
+    public abstract void f3230();
+    public abstract void f3231();
+    public abstract void f3232();
+    public abstract void f3233();
+    public abstract void f3234();
+    public abstract void f3235();
+    public abstract void f3236();
+    public abstract void f3237();
+    public abstract void f3238();
+    public abstract void f3239();
+    public abstract void f3240();
+    public abstract void f3241();
+    public abstract void f3242();
+    public abstract void f3243();
+    public abstract void f3244();
+    public abstract void f3245();
+    public abstract void f3246();
+    public abstract void f3247();
+    public abstract void f3248();
+    public abstract void f3249();
+    public abstract void f3250();
+    public abstract void f3251();
+    public abstract void f3252();
+    public abstract void f3253();
+    public abstract void f3254();
+    public abstract void f3255();
+    public abstract void f3256();
+    public abstract void f3257();
+    public abstract void f3258();
+    public abstract void f3259();
+    public abstract void f3260();
+    public abstract void f3261();
+    public abstract void f3262();
+    public abstract void f3263();
+    public abstract void f3264();
+    public abstract void f3265();
+    public abstract void f3266();
+    public abstract void f3267();
+    public abstract void f3268();
+    public abstract void f3269();
+    public abstract void f3270();
+    public abstract void f3271();
+    public abstract void f3272();
+    public abstract void f3273();
+    public abstract void f3274();
+    public abstract void f3275();
+    public abstract void f3276();
+    public abstract void f3277();
+    public abstract void f3278();
+    public abstract void f3279();
+    public abstract void f3280();
+    public abstract void f3281();
+    public abstract void f3282();
+    public abstract void f3283();
+    public abstract void f3284();
+    public abstract void f3285();
+    public abstract void f3286();
+    public abstract void f3287();
+    public abstract void f3288();
+    public abstract void f3289();
+    public abstract void f3290();
+    public abstract void f3291();
+    public abstract void f3292();
+    public abstract void f3293();
+    public abstract void f3294();
+    public abstract void f3295();
+    public abstract void f3296();
+    public abstract void f3297();
+    public abstract void f3298();
+    public abstract void f3299();
+    public abstract void f3300();
+    public abstract void f3301();
+    public abstract void f3302();
+    public abstract void f3303();
+    public abstract void f3304();
+    public abstract void f3305();
+    public abstract void f3306();
+    public abstract void f3307();
+    public abstract void f3308();
+    public abstract void f3309();
+    public abstract void f3310();
+    public abstract void f3311();
+    public abstract void f3312();
+    public abstract void f3313();
+    public abstract void f3314();
+    public abstract void f3315();
+    public abstract void f3316();
+    public abstract void f3317();
+    public abstract void f3318();
+    public abstract void f3319();
+    public abstract void f3320();
+    public abstract void f3321();
+    public abstract void f3322();
+    public abstract void f3323();
+    public abstract void f3324();
+    public abstract void f3325();
+    public abstract void f3326();
+    public abstract void f3327();
+    public abstract void f3328();
+    public abstract void f3329();
+    public abstract void f3330();
+    public abstract void f3331();
+    public abstract void f3332();
+    public abstract void f3333();
+    public abstract void f3334();
+    public abstract void f3335();
+    public abstract void f3336();
+    public abstract void f3337();
+    public abstract void f3338();
+    public abstract void f3339();
+    public abstract void f3340();
+    public abstract void f3341();
+    public abstract void f3342();
+    public abstract void f3343();
+    public abstract void f3344();
+    public abstract void f3345();
+    public abstract void f3346();
+    public abstract void f3347();
+    public abstract void f3348();
+    public abstract void f3349();
+    public abstract void f3350();
+    public abstract void f3351();
+    public abstract void f3352();
+    public abstract void f3353();
+    public abstract void f3354();
+    public abstract void f3355();
+    public abstract void f3356();
+    public abstract void f3357();
+    public abstract void f3358();
+    public abstract void f3359();
+    public abstract void f3360();
+    public abstract void f3361();
+    public abstract void f3362();
+    public abstract void f3363();
+    public abstract void f3364();
+    public abstract void f3365();
+    public abstract void f3366();
+    public abstract void f3367();
+    public abstract void f3368();
+    public abstract void f3369();
+    public abstract void f3370();
+    public abstract void f3371();
+    public abstract void f3372();
+    public abstract void f3373();
+    public abstract void f3374();
+    public abstract void f3375();
+    public abstract void f3376();
+    public abstract void f3377();
+    public abstract void f3378();
+    public abstract void f3379();
+    public abstract void f3380();
+    public abstract void f3381();
+    public abstract void f3382();
+    public abstract void f3383();
+    public abstract void f3384();
+    public abstract void f3385();
+    public abstract void f3386();
+    public abstract void f3387();
+    public abstract void f3388();
+    public abstract void f3389();
+    public abstract void f3390();
+    public abstract void f3391();
+    public abstract void f3392();
+    public abstract void f3393();
+    public abstract void f3394();
+    public abstract void f3395();
+    public abstract void f3396();
+    public abstract void f3397();
+    public abstract void f3398();
+    public abstract void f3399();
+    public abstract void f3400();
+    public abstract void f3401();
+    public abstract void f3402();
+    public abstract void f3403();
+    public abstract void f3404();
+    public abstract void f3405();
+    public abstract void f3406();
+    public abstract void f3407();
+    public abstract void f3408();
+    public abstract void f3409();
+    public abstract void f3410();
+    public abstract void f3411();
+    public abstract void f3412();
+    public abstract void f3413();
+    public abstract void f3414();
+    public abstract void f3415();
+    public abstract void f3416();
+    public abstract void f3417();
+    public abstract void f3418();
+    public abstract void f3419();
+    public abstract void f3420();
+    public abstract void f3421();
+    public abstract void f3422();
+    public abstract void f3423();
+    public abstract void f3424();
+    public abstract void f3425();
+    public abstract void f3426();
+    public abstract void f3427();
+    public abstract void f3428();
+    public abstract void f3429();
+    public abstract void f3430();
+    public abstract void f3431();
+    public abstract void f3432();
+    public abstract void f3433();
+    public abstract void f3434();
+    public abstract void f3435();
+    public abstract void f3436();
+    public abstract void f3437();
+    public abstract void f3438();
+    public abstract void f3439();
+    public abstract void f3440();
+    public abstract void f3441();
+    public abstract void f3442();
+    public abstract void f3443();
+    public abstract void f3444();
+    public abstract void f3445();
+    public abstract void f3446();
+    public abstract void f3447();
+    public abstract void f3448();
+    public abstract void f3449();
+    public abstract void f3450();
+    public abstract void f3451();
+    public abstract void f3452();
+    public abstract void f3453();
+    public abstract void f3454();
+    public abstract void f3455();
+    public abstract void f3456();
+    public abstract void f3457();
+    public abstract void f3458();
+    public abstract void f3459();
+    public abstract void f3460();
+    public abstract void f3461();
+    public abstract void f3462();
+    public abstract void f3463();
+    public abstract void f3464();
+    public abstract void f3465();
+    public abstract void f3466();
+    public abstract void f3467();
+    public abstract void f3468();
+    public abstract void f3469();
+    public abstract void f3470();
+    public abstract void f3471();
+    public abstract void f3472();
+    public abstract void f3473();
+    public abstract void f3474();
+    public abstract void f3475();
+    public abstract void f3476();
+    public abstract void f3477();
+    public abstract void f3478();
+    public abstract void f3479();
+    public abstract void f3480();
+    public abstract void f3481();
+    public abstract void f3482();
+    public abstract void f3483();
+    public abstract void f3484();
+    public abstract void f3485();
+    public abstract void f3486();
+    public abstract void f3487();
+    public abstract void f3488();
+    public abstract void f3489();
+    public abstract void f3490();
+    public abstract void f3491();
+    public abstract void f3492();
+    public abstract void f3493();
+    public abstract void f3494();
+    public abstract void f3495();
+    public abstract void f3496();
+    public abstract void f3497();
+    public abstract void f3498();
+    public abstract void f3499();
+    public abstract void f3500();
+    public abstract void f3501();
+    public abstract void f3502();
+    public abstract void f3503();
+    public abstract void f3504();
+    public abstract void f3505();
+    public abstract void f3506();
+    public abstract void f3507();
+    public abstract void f3508();
+    public abstract void f3509();
+    public abstract void f3510();
+    public abstract void f3511();
+    public abstract void f3512();
+    public abstract void f3513();
+    public abstract void f3514();
+    public abstract void f3515();
+    public abstract void f3516();
+    public abstract void f3517();
+    public abstract void f3518();
+    public abstract void f3519();
+    public abstract void f3520();
+    public abstract void f3521();
+    public abstract void f3522();
+    public abstract void f3523();
+    public abstract void f3524();
+    public abstract void f3525();
+    public abstract void f3526();
+    public abstract void f3527();
+    public abstract void f3528();
+    public abstract void f3529();
+    public abstract void f3530();
+    public abstract void f3531();
+    public abstract void f3532();
+    public abstract void f3533();
+    public abstract void f3534();
+    public abstract void f3535();
+    public abstract void f3536();
+    public abstract void f3537();
+    public abstract void f3538();
+    public abstract void f3539();
+    public abstract void f3540();
+    public abstract void f3541();
+    public abstract void f3542();
+    public abstract void f3543();
+    public abstract void f3544();
+    public abstract void f3545();
+    public abstract void f3546();
+    public abstract void f3547();
+    public abstract void f3548();
+    public abstract void f3549();
+    public abstract void f3550();
+    public abstract void f3551();
+    public abstract void f3552();
+    public abstract void f3553();
+    public abstract void f3554();
+    public abstract void f3555();
+    public abstract void f3556();
+    public abstract void f3557();
+    public abstract void f3558();
+    public abstract void f3559();
+    public abstract void f3560();
+    public abstract void f3561();
+    public abstract void f3562();
+    public abstract void f3563();
+    public abstract void f3564();
+    public abstract void f3565();
+    public abstract void f3566();
+    public abstract void f3567();
+    public abstract void f3568();
+    public abstract void f3569();
+    public abstract void f3570();
+    public abstract void f3571();
+    public abstract void f3572();
+    public abstract void f3573();
+    public abstract void f3574();
+    public abstract void f3575();
+    public abstract void f3576();
+    public abstract void f3577();
+    public abstract void f3578();
+    public abstract void f3579();
+    public abstract void f3580();
+    public abstract void f3581();
+    public abstract void f3582();
+    public abstract void f3583();
+    public abstract void f3584();
+    public abstract void f3585();
+    public abstract void f3586();
+    public abstract void f3587();
+    public abstract void f3588();
+    public abstract void f3589();
+    public abstract void f3590();
+    public abstract void f3591();
+    public abstract void f3592();
+    public abstract void f3593();
+    public abstract void f3594();
+    public abstract void f3595();
+    public abstract void f3596();
+    public abstract void f3597();
+    public abstract void f3598();
+    public abstract void f3599();
+    public abstract void f3600();
+    public abstract void f3601();
+    public abstract void f3602();
+    public abstract void f3603();
+    public abstract void f3604();
+    public abstract void f3605();
+    public abstract void f3606();
+    public abstract void f3607();
+    public abstract void f3608();
+    public abstract void f3609();
+    public abstract void f3610();
+    public abstract void f3611();
+    public abstract void f3612();
+    public abstract void f3613();
+    public abstract void f3614();
+    public abstract void f3615();
+    public abstract void f3616();
+    public abstract void f3617();
+    public abstract void f3618();
+    public abstract void f3619();
+    public abstract void f3620();
+    public abstract void f3621();
+    public abstract void f3622();
+    public abstract void f3623();
+    public abstract void f3624();
+    public abstract void f3625();
+    public abstract void f3626();
+    public abstract void f3627();
+    public abstract void f3628();
+    public abstract void f3629();
+    public abstract void f3630();
+    public abstract void f3631();
+    public abstract void f3632();
+    public abstract void f3633();
+    public abstract void f3634();
+    public abstract void f3635();
+    public abstract void f3636();
+    public abstract void f3637();
+    public abstract void f3638();
+    public abstract void f3639();
+    public abstract void f3640();
+    public abstract void f3641();
+    public abstract void f3642();
+    public abstract void f3643();
+    public abstract void f3644();
+    public abstract void f3645();
+    public abstract void f3646();
+    public abstract void f3647();
+    public abstract void f3648();
+    public abstract void f3649();
+    public abstract void f3650();
+    public abstract void f3651();
+    public abstract void f3652();
+    public abstract void f3653();
+    public abstract void f3654();
+    public abstract void f3655();
+    public abstract void f3656();
+    public abstract void f3657();
+    public abstract void f3658();
+    public abstract void f3659();
+    public abstract void f3660();
+    public abstract void f3661();
+    public abstract void f3662();
+    public abstract void f3663();
+    public abstract void f3664();
+    public abstract void f3665();
+    public abstract void f3666();
+    public abstract void f3667();
+    public abstract void f3668();
+    public abstract void f3669();
+    public abstract void f3670();
+    public abstract void f3671();
+    public abstract void f3672();
+    public abstract void f3673();
+    public abstract void f3674();
+    public abstract void f3675();
+    public abstract void f3676();
+    public abstract void f3677();
+    public abstract void f3678();
+    public abstract void f3679();
+    public abstract void f3680();
+    public abstract void f3681();
+    public abstract void f3682();
+    public abstract void f3683();
+    public abstract void f3684();
+    public abstract void f3685();
+    public abstract void f3686();
+    public abstract void f3687();
+    public abstract void f3688();
+    public abstract void f3689();
+    public abstract void f3690();
+    public abstract void f3691();
+    public abstract void f3692();
+    public abstract void f3693();
+    public abstract void f3694();
+    public abstract void f3695();
+    public abstract void f3696();
+    public abstract void f3697();
+    public abstract void f3698();
+    public abstract void f3699();
+    public abstract void f3700();
+    public abstract void f3701();
+    public abstract void f3702();
+    public abstract void f3703();
+    public abstract void f3704();
+    public abstract void f3705();
+    public abstract void f3706();
+    public abstract void f3707();
+    public abstract void f3708();
+    public abstract void f3709();
+    public abstract void f3710();
+    public abstract void f3711();
+    public abstract void f3712();
+    public abstract void f3713();
+    public abstract void f3714();
+    public abstract void f3715();
+    public abstract void f3716();
+    public abstract void f3717();
+    public abstract void f3718();
+    public abstract void f3719();
+    public abstract void f3720();
+    public abstract void f3721();
+    public abstract void f3722();
+    public abstract void f3723();
+    public abstract void f3724();
+    public abstract void f3725();
+    public abstract void f3726();
+    public abstract void f3727();
+    public abstract void f3728();
+    public abstract void f3729();
+    public abstract void f3730();
+    public abstract void f3731();
+    public abstract void f3732();
+    public abstract void f3733();
+    public abstract void f3734();
+    public abstract void f3735();
+    public abstract void f3736();
+    public abstract void f3737();
+    public abstract void f3738();
+    public abstract void f3739();
+    public abstract void f3740();
+    public abstract void f3741();
+    public abstract void f3742();
+    public abstract void f3743();
+    public abstract void f3744();
+    public abstract void f3745();
+    public abstract void f3746();
+    public abstract void f3747();
+    public abstract void f3748();
+    public abstract void f3749();
+    public abstract void f3750();
+    public abstract void f3751();
+    public abstract void f3752();
+    public abstract void f3753();
+    public abstract void f3754();
+    public abstract void f3755();
+    public abstract void f3756();
+    public abstract void f3757();
+    public abstract void f3758();
+    public abstract void f3759();
+    public abstract void f3760();
+    public abstract void f3761();
+    public abstract void f3762();
+    public abstract void f3763();
+    public abstract void f3764();
+    public abstract void f3765();
+    public abstract void f3766();
+    public abstract void f3767();
+    public abstract void f3768();
+    public abstract void f3769();
+    public abstract void f3770();
+    public abstract void f3771();
+    public abstract void f3772();
+    public abstract void f3773();
+    public abstract void f3774();
+    public abstract void f3775();
+    public abstract void f3776();
+    public abstract void f3777();
+    public abstract void f3778();
+    public abstract void f3779();
+    public abstract void f3780();
+    public abstract void f3781();
+    public abstract void f3782();
+    public abstract void f3783();
+    public abstract void f3784();
+    public abstract void f3785();
+    public abstract void f3786();
+    public abstract void f3787();
+    public abstract void f3788();
+    public abstract void f3789();
+    public abstract void f3790();
+    public abstract void f3791();
+    public abstract void f3792();
+    public abstract void f3793();
+    public abstract void f3794();
+    public abstract void f3795();
+    public abstract void f3796();
+    public abstract void f3797();
+    public abstract void f3798();
+    public abstract void f3799();
+    public abstract void f3800();
+    public abstract void f3801();
+    public abstract void f3802();
+    public abstract void f3803();
+    public abstract void f3804();
+    public abstract void f3805();
+    public abstract void f3806();
+    public abstract void f3807();
+    public abstract void f3808();
+    public abstract void f3809();
+    public abstract void f3810();
+    public abstract void f3811();
+    public abstract void f3812();
+    public abstract void f3813();
+    public abstract void f3814();
+    public abstract void f3815();
+    public abstract void f3816();
+    public abstract void f3817();
+    public abstract void f3818();
+    public abstract void f3819();
+    public abstract void f3820();
+    public abstract void f3821();
+    public abstract void f3822();
+    public abstract void f3823();
+    public abstract void f3824();
+    public abstract void f3825();
+    public abstract void f3826();
+    public abstract void f3827();
+    public abstract void f3828();
+    public abstract void f3829();
+    public abstract void f3830();
+    public abstract void f3831();
+    public abstract void f3832();
+    public abstract void f3833();
+    public abstract void f3834();
+    public abstract void f3835();
+    public abstract void f3836();
+    public abstract void f3837();
+    public abstract void f3838();
+    public abstract void f3839();
+    public abstract void f3840();
+    public abstract void f3841();
+    public abstract void f3842();
+    public abstract void f3843();
+    public abstract void f3844();
+    public abstract void f3845();
+    public abstract void f3846();
+    public abstract void f3847();
+    public abstract void f3848();
+    public abstract void f3849();
+    public abstract void f3850();
+    public abstract void f3851();
+    public abstract void f3852();
+    public abstract void f3853();
+    public abstract void f3854();
+    public abstract void f3855();
+    public abstract void f3856();
+    public abstract void f3857();
+    public abstract void f3858();
+    public abstract void f3859();
+    public abstract void f3860();
+    public abstract void f3861();
+    public abstract void f3862();
+    public abstract void f3863();
+    public abstract void f3864();
+    public abstract void f3865();
+    public abstract void f3866();
+    public abstract void f3867();
+    public abstract void f3868();
+    public abstract void f3869();
+    public abstract void f3870();
+    public abstract void f3871();
+    public abstract void f3872();
+    public abstract void f3873();
+    public abstract void f3874();
+    public abstract void f3875();
+    public abstract void f3876();
+    public abstract void f3877();
+    public abstract void f3878();
+    public abstract void f3879();
+    public abstract void f3880();
+    public abstract void f3881();
+    public abstract void f3882();
+    public abstract void f3883();
+    public abstract void f3884();
+    public abstract void f3885();
+    public abstract void f3886();
+    public abstract void f3887();
+    public abstract void f3888();
+    public abstract void f3889();
+    public abstract void f3890();
+    public abstract void f3891();
+    public abstract void f3892();
+    public abstract void f3893();
+    public abstract void f3894();
+    public abstract void f3895();
+    public abstract void f3896();
+    public abstract void f3897();
+    public abstract void f3898();
+    public abstract void f3899();
+    public abstract void f3900();
+    public abstract void f3901();
+    public abstract void f3902();
+    public abstract void f3903();
+    public abstract void f3904();
+    public abstract void f3905();
+    public abstract void f3906();
+    public abstract void f3907();
+    public abstract void f3908();
+    public abstract void f3909();
+    public abstract void f3910();
+    public abstract void f3911();
+    public abstract void f3912();
+    public abstract void f3913();
+    public abstract void f3914();
+    public abstract void f3915();
+    public abstract void f3916();
+    public abstract void f3917();
+    public abstract void f3918();
+    public abstract void f3919();
+    public abstract void f3920();
+    public abstract void f3921();
+    public abstract void f3922();
+    public abstract void f3923();
+    public abstract void f3924();
+    public abstract void f3925();
+    public abstract void f3926();
+    public abstract void f3927();
+    public abstract void f3928();
+    public abstract void f3929();
+    public abstract void f3930();
+    public abstract void f3931();
+    public abstract void f3932();
+    public abstract void f3933();
+    public abstract void f3934();
+    public abstract void f3935();
+    public abstract void f3936();
+    public abstract void f3937();
+    public abstract void f3938();
+    public abstract void f3939();
+    public abstract void f3940();
+    public abstract void f3941();
+    public abstract void f3942();
+    public abstract void f3943();
+    public abstract void f3944();
+    public abstract void f3945();
+    public abstract void f3946();
+    public abstract void f3947();
+    public abstract void f3948();
+    public abstract void f3949();
+    public abstract void f3950();
+    public abstract void f3951();
+    public abstract void f3952();
+    public abstract void f3953();
+    public abstract void f3954();
+    public abstract void f3955();
+    public abstract void f3956();
+    public abstract void f3957();
+    public abstract void f3958();
+    public abstract void f3959();
+    public abstract void f3960();
+    public abstract void f3961();
+    public abstract void f3962();
+    public abstract void f3963();
+    public abstract void f3964();
+    public abstract void f3965();
+    public abstract void f3966();
+    public abstract void f3967();
+    public abstract void f3968();
+    public abstract void f3969();
+    public abstract void f3970();
+    public abstract void f3971();
+    public abstract void f3972();
+    public abstract void f3973();
+    public abstract void f3974();
+    public abstract void f3975();
+    public abstract void f3976();
+    public abstract void f3977();
+    public abstract void f3978();
+    public abstract void f3979();
+    public abstract void f3980();
+    public abstract void f3981();
+    public abstract void f3982();
+    public abstract void f3983();
+    public abstract void f3984();
+    public abstract void f3985();
+    public abstract void f3986();
+    public abstract void f3987();
+    public abstract void f3988();
+    public abstract void f3989();
+    public abstract void f3990();
+    public abstract void f3991();
+    public abstract void f3992();
+    public abstract void f3993();
+    public abstract void f3994();
+    public abstract void f3995();
+    public abstract void f3996();
+    public abstract void f3997();
+    public abstract void f3998();
+    public abstract void f3999();
+    public abstract void f4000();
+    public abstract void f4001();
+    public abstract void f4002();
+    public abstract void f4003();
+    public abstract void f4004();
+    public abstract void f4005();
+    public abstract void f4006();
+    public abstract void f4007();
+    public abstract void f4008();
+    public abstract void f4009();
+    public abstract void f4010();
+    public abstract void f4011();
+    public abstract void f4012();
+    public abstract void f4013();
+    public abstract void f4014();
+    public abstract void f4015();
+    public abstract void f4016();
+    public abstract void f4017();
+    public abstract void f4018();
+    public abstract void f4019();
+    public abstract void f4020();
+    public abstract void f4021();
+    public abstract void f4022();
+    public abstract void f4023();
+    public abstract void f4024();
+    public abstract void f4025();
+    public abstract void f4026();
+    public abstract void f4027();
+    public abstract void f4028();
+    public abstract void f4029();
+    public abstract void f4030();
+    public abstract void f4031();
+    public abstract void f4032();
+    public abstract void f4033();
+    public abstract void f4034();
+    public abstract void f4035();
+    public abstract void f4036();
+    public abstract void f4037();
+    public abstract void f4038();
+    public abstract void f4039();
+    public abstract void f4040();
+    public abstract void f4041();
+    public abstract void f4042();
+    public abstract void f4043();
+    public abstract void f4044();
+    public abstract void f4045();
+    public abstract void f4046();
+    public abstract void f4047();
+    public abstract void f4048();
+    public abstract void f4049();
+    public abstract void f4050();
+    public abstract void f4051();
+    public abstract void f4052();
+    public abstract void f4053();
+    public abstract void f4054();
+    public abstract void f4055();
+    public abstract void f4056();
+    public abstract void f4057();
+    public abstract void f4058();
+    public abstract void f4059();
+    public abstract void f4060();
+    public abstract void f4061();
+    public abstract void f4062();
+    public abstract void f4063();
+    public abstract void f4064();
+    public abstract void f4065();
+    public abstract void f4066();
+    public abstract void f4067();
+    public abstract void f4068();
+    public abstract void f4069();
+    public abstract void f4070();
+    public abstract void f4071();
+    public abstract void f4072();
+    public abstract void f4073();
+    public abstract void f4074();
+    public abstract void f4075();
+    public abstract void f4076();
+    public abstract void f4077();
+    public abstract void f4078();
+    public abstract void f4079();
+    public abstract void f4080();
+    public abstract void f4081();
+    public abstract void f4082();
+    public abstract void f4083();
+    public abstract void f4084();
+    public abstract void f4085();
+    public abstract void f4086();
+    public abstract void f4087();
+    public abstract void f4088();
+    public abstract void f4089();
+    public abstract void f4090();
+    public abstract void f4091();
+    public abstract void f4092();
+    public abstract void f4093();
+    public abstract void f4094();
+    public abstract void f4095();
+    public abstract void f4096();
+    public abstract void f4097();
+    public abstract void f4098();
+    public abstract void f4099();
+    public abstract void f4100();
+    public abstract void f4101();
+    public abstract void f4102();
+    public abstract void f4103();
+    public abstract void f4104();
+    public abstract void f4105();
+    public abstract void f4106();
+    public abstract void f4107();
+    public abstract void f4108();
+    public abstract void f4109();
+    public abstract void f4110();
+    public abstract void f4111();
+    public abstract void f4112();
+    public abstract void f4113();
+    public abstract void f4114();
+    public abstract void f4115();
+    public abstract void f4116();
+    public abstract void f4117();
+    public abstract void f4118();
+    public abstract void f4119();
+    public abstract void f4120();
+    public abstract void f4121();
+    public abstract void f4122();
+    public abstract void f4123();
+    public abstract void f4124();
+    public abstract void f4125();
+    public abstract void f4126();
+    public abstract void f4127();
+    public abstract void f4128();
+    public abstract void f4129();
+    public abstract void f4130();
+    public abstract void f4131();
+    public abstract void f4132();
+    public abstract void f4133();
+    public abstract void f4134();
+    public abstract void f4135();
+    public abstract void f4136();
+    public abstract void f4137();
+    public abstract void f4138();
+    public abstract void f4139();
+    public abstract void f4140();
+    public abstract void f4141();
+    public abstract void f4142();
+    public abstract void f4143();
+    public abstract void f4144();
+    public abstract void f4145();
+    public abstract void f4146();
+    public abstract void f4147();
+    public abstract void f4148();
+    public abstract void f4149();
+    public abstract void f4150();
+    public abstract void f4151();
+    public abstract void f4152();
+    public abstract void f4153();
+    public abstract void f4154();
+    public abstract void f4155();
+    public abstract void f4156();
+    public abstract void f4157();
+    public abstract void f4158();
+    public abstract void f4159();
+    public abstract void f4160();
+    public abstract void f4161();
+    public abstract void f4162();
+    public abstract void f4163();
+    public abstract void f4164();
+    public abstract void f4165();
+    public abstract void f4166();
+    public abstract void f4167();
+    public abstract void f4168();
+    public abstract void f4169();
+    public abstract void f4170();
+    public abstract void f4171();
+    public abstract void f4172();
+    public abstract void f4173();
+    public abstract void f4174();
+    public abstract void f4175();
+    public abstract void f4176();
+    public abstract void f4177();
+    public abstract void f4178();
+    public abstract void f4179();
+    public abstract void f4180();
+    public abstract void f4181();
+    public abstract void f4182();
+    public abstract void f4183();
+    public abstract void f4184();
+    public abstract void f4185();
+    public abstract void f4186();
+    public abstract void f4187();
+    public abstract void f4188();
+    public abstract void f4189();
+    public abstract void f4190();
+    public abstract void f4191();
+    public abstract void f4192();
+    public abstract void f4193();
+    public abstract void f4194();
+    public abstract void f4195();
+    public abstract void f4196();
+    public abstract void f4197();
+    public abstract void f4198();
+    public abstract void f4199();
+    public abstract void f4200();
+    public abstract void f4201();
+    public abstract void f4202();
+    public abstract void f4203();
+    public abstract void f4204();
+    public abstract void f4205();
+    public abstract void f4206();
+    public abstract void f4207();
+    public abstract void f4208();
+    public abstract void f4209();
+    public abstract void f4210();
+    public abstract void f4211();
+    public abstract void f4212();
+    public abstract void f4213();
+    public abstract void f4214();
+    public abstract void f4215();
+    public abstract void f4216();
+    public abstract void f4217();
+    public abstract void f4218();
+    public abstract void f4219();
+    public abstract void f4220();
+    public abstract void f4221();
+    public abstract void f4222();
+    public abstract void f4223();
+    public abstract void f4224();
+    public abstract void f4225();
+    public abstract void f4226();
+    public abstract void f4227();
+    public abstract void f4228();
+    public abstract void f4229();
+    public abstract void f4230();
+    public abstract void f4231();
+    public abstract void f4232();
+    public abstract void f4233();
+    public abstract void f4234();
+    public abstract void f4235();
+    public abstract void f4236();
+    public abstract void f4237();
+    public abstract void f4238();
+    public abstract void f4239();
+    public abstract void f4240();
+    public abstract void f4241();
+    public abstract void f4242();
+    public abstract void f4243();
+    public abstract void f4244();
+    public abstract void f4245();
+    public abstract void f4246();
+    public abstract void f4247();
+    public abstract void f4248();
+    public abstract void f4249();
+    public abstract void f4250();
+    public abstract void f4251();
+    public abstract void f4252();
+    public abstract void f4253();
+    public abstract void f4254();
+    public abstract void f4255();
+    public abstract void f4256();
+    public abstract void f4257();
+    public abstract void f4258();
+    public abstract void f4259();
+    public abstract void f4260();
+    public abstract void f4261();
+    public abstract void f4262();
+    public abstract void f4263();
+    public abstract void f4264();
+    public abstract void f4265();
+    public abstract void f4266();
+    public abstract void f4267();
+    public abstract void f4268();
+    public abstract void f4269();
+    public abstract void f4270();
+    public abstract void f4271();
+    public abstract void f4272();
+    public abstract void f4273();
+    public abstract void f4274();
+    public abstract void f4275();
+    public abstract void f4276();
+    public abstract void f4277();
+    public abstract void f4278();
+    public abstract void f4279();
+    public abstract void f4280();
+    public abstract void f4281();
+    public abstract void f4282();
+    public abstract void f4283();
+    public abstract void f4284();
+    public abstract void f4285();
+    public abstract void f4286();
+    public abstract void f4287();
+    public abstract void f4288();
+    public abstract void f4289();
+    public abstract void f4290();
+    public abstract void f4291();
+    public abstract void f4292();
+    public abstract void f4293();
+    public abstract void f4294();
+    public abstract void f4295();
+    public abstract void f4296();
+    public abstract void f4297();
+    public abstract void f4298();
+    public abstract void f4299();
+    public abstract void f4300();
+    public abstract void f4301();
+    public abstract void f4302();
+    public abstract void f4303();
+    public abstract void f4304();
+    public abstract void f4305();
+    public abstract void f4306();
+    public abstract void f4307();
+    public abstract void f4308();
+    public abstract void f4309();
+    public abstract void f4310();
+    public abstract void f4311();
+    public abstract void f4312();
+    public abstract void f4313();
+    public abstract void f4314();
+    public abstract void f4315();
+    public abstract void f4316();
+    public abstract void f4317();
+    public abstract void f4318();
+    public abstract void f4319();
+    public abstract void f4320();
+    public abstract void f4321();
+    public abstract void f4322();
+    public abstract void f4323();
+    public abstract void f4324();
+    public abstract void f4325();
+    public abstract void f4326();
+    public abstract void f4327();
+    public abstract void f4328();
+    public abstract void f4329();
+    public abstract void f4330();
+    public abstract void f4331();
+    public abstract void f4332();
+    public abstract void f4333();
+    public abstract void f4334();
+    public abstract void f4335();
+    public abstract void f4336();
+    public abstract void f4337();
+    public abstract void f4338();
+    public abstract void f4339();
+    public abstract void f4340();
+    public abstract void f4341();
+    public abstract void f4342();
+    public abstract void f4343();
+    public abstract void f4344();
+    public abstract void f4345();
+    public abstract void f4346();
+    public abstract void f4347();
+    public abstract void f4348();
+    public abstract void f4349();
+    public abstract void f4350();
+    public abstract void f4351();
+    public abstract void f4352();
+    public abstract void f4353();
+    public abstract void f4354();
+    public abstract void f4355();
+    public abstract void f4356();
+    public abstract void f4357();
+    public abstract void f4358();
+    public abstract void f4359();
+    public abstract void f4360();
+    public abstract void f4361();
+    public abstract void f4362();
+    public abstract void f4363();
+    public abstract void f4364();
+    public abstract void f4365();
+    public abstract void f4366();
+    public abstract void f4367();
+    public abstract void f4368();
+    public abstract void f4369();
+    public abstract void f4370();
+    public abstract void f4371();
+    public abstract void f4372();
+    public abstract void f4373();
+    public abstract void f4374();
+    public abstract void f4375();
+    public abstract void f4376();
+    public abstract void f4377();
+    public abstract void f4378();
+    public abstract void f4379();
+    public abstract void f4380();
+    public abstract void f4381();
+    public abstract void f4382();
+    public abstract void f4383();
+    public abstract void f4384();
+    public abstract void f4385();
+    public abstract void f4386();
+    public abstract void f4387();
+    public abstract void f4388();
+    public abstract void f4389();
+    public abstract void f4390();
+    public abstract void f4391();
+    public abstract void f4392();
+    public abstract void f4393();
+    public abstract void f4394();
+    public abstract void f4395();
+    public abstract void f4396();
+    public abstract void f4397();
+    public abstract void f4398();
+    public abstract void f4399();
+    public abstract void f4400();
+    public abstract void f4401();
+    public abstract void f4402();
+    public abstract void f4403();
+    public abstract void f4404();
+    public abstract void f4405();
+    public abstract void f4406();
+    public abstract void f4407();
+    public abstract void f4408();
+    public abstract void f4409();
+    public abstract void f4410();
+    public abstract void f4411();
+    public abstract void f4412();
+    public abstract void f4413();
+    public abstract void f4414();
+    public abstract void f4415();
+    public abstract void f4416();
+    public abstract void f4417();
+    public abstract void f4418();
+    public abstract void f4419();
+    public abstract void f4420();
+    public abstract void f4421();
+    public abstract void f4422();
+    public abstract void f4423();
+    public abstract void f4424();
+    public abstract void f4425();
+    public abstract void f4426();
+    public abstract void f4427();
+    public abstract void f4428();
+    public abstract void f4429();
+    public abstract void f4430();
+    public abstract void f4431();
+    public abstract void f4432();
+    public abstract void f4433();
+    public abstract void f4434();
+    public abstract void f4435();
+    public abstract void f4436();
+    public abstract void f4437();
+    public abstract void f4438();
+    public abstract void f4439();
+    public abstract void f4440();
+    public abstract void f4441();
+    public abstract void f4442();
+    public abstract void f4443();
+    public abstract void f4444();
+    public abstract void f4445();
+    public abstract void f4446();
+    public abstract void f4447();
+    public abstract void f4448();
+    public abstract void f4449();
+    public abstract void f4450();
+    public abstract void f4451();
+    public abstract void f4452();
+    public abstract void f4453();
+    public abstract void f4454();
+    public abstract void f4455();
+    public abstract void f4456();
+    public abstract void f4457();
+    public abstract void f4458();
+    public abstract void f4459();
+    public abstract void f4460();
+    public abstract void f4461();
+    public abstract void f4462();
+    public abstract void f4463();
+    public abstract void f4464();
+    public abstract void f4465();
+    public abstract void f4466();
+    public abstract void f4467();
+    public abstract void f4468();
+    public abstract void f4469();
+    public abstract void f4470();
+    public abstract void f4471();
+    public abstract void f4472();
+    public abstract void f4473();
+    public abstract void f4474();
+    public abstract void f4475();
+    public abstract void f4476();
+    public abstract void f4477();
+    public abstract void f4478();
+    public abstract void f4479();
+    public abstract void f4480();
+    public abstract void f4481();
+    public abstract void f4482();
+    public abstract void f4483();
+    public abstract void f4484();
+    public abstract void f4485();
+    public abstract void f4486();
+    public abstract void f4487();
+    public abstract void f4488();
+    public abstract void f4489();
+    public abstract void f4490();
+    public abstract void f4491();
+    public abstract void f4492();
+    public abstract void f4493();
+    public abstract void f4494();
+    public abstract void f4495();
+    public abstract void f4496();
+    public abstract void f4497();
+    public abstract void f4498();
+    public abstract void f4499();
+    public abstract void f4500();
+    public abstract void f4501();
+    public abstract void f4502();
+    public abstract void f4503();
+    public abstract void f4504();
+    public abstract void f4505();
+    public abstract void f4506();
+    public abstract void f4507();
+    public abstract void f4508();
+    public abstract void f4509();
+    public abstract void f4510();
+    public abstract void f4511();
+    public abstract void f4512();
+    public abstract void f4513();
+    public abstract void f4514();
+    public abstract void f4515();
+    public abstract void f4516();
+    public abstract void f4517();
+    public abstract void f4518();
+    public abstract void f4519();
+    public abstract void f4520();
+    public abstract void f4521();
+    public abstract void f4522();
+    public abstract void f4523();
+    public abstract void f4524();
+    public abstract void f4525();
+    public abstract void f4526();
+    public abstract void f4527();
+    public abstract void f4528();
+    public abstract void f4529();
+    public abstract void f4530();
+    public abstract void f4531();
+    public abstract void f4532();
+    public abstract void f4533();
+    public abstract void f4534();
+    public abstract void f4535();
+    public abstract void f4536();
+    public abstract void f4537();
+    public abstract void f4538();
+    public abstract void f4539();
+    public abstract void f4540();
+    public abstract void f4541();
+    public abstract void f4542();
+    public abstract void f4543();
+    public abstract void f4544();
+    public abstract void f4545();
+    public abstract void f4546();
+    public abstract void f4547();
+    public abstract void f4548();
+    public abstract void f4549();
+    public abstract void f4550();
+    public abstract void f4551();
+    public abstract void f4552();
+    public abstract void f4553();
+    public abstract void f4554();
+    public abstract void f4555();
+    public abstract void f4556();
+    public abstract void f4557();
+    public abstract void f4558();
+    public abstract void f4559();
+    public abstract void f4560();
+    public abstract void f4561();
+    public abstract void f4562();
+    public abstract void f4563();
+    public abstract void f4564();
+    public abstract void f4565();
+    public abstract void f4566();
+    public abstract void f4567();
+    public abstract void f4568();
+    public abstract void f4569();
+    public abstract void f4570();
+    public abstract void f4571();
+    public abstract void f4572();
+    public abstract void f4573();
+    public abstract void f4574();
+    public abstract void f4575();
+    public abstract void f4576();
+    public abstract void f4577();
+    public abstract void f4578();
+    public abstract void f4579();
+    public abstract void f4580();
+    public abstract void f4581();
+    public abstract void f4582();
+    public abstract void f4583();
+    public abstract void f4584();
+    public abstract void f4585();
+    public abstract void f4586();
+    public abstract void f4587();
+    public abstract void f4588();
+    public abstract void f4589();
+    public abstract void f4590();
+    public abstract void f4591();
+    public abstract void f4592();
+    public abstract void f4593();
+    public abstract void f4594();
+    public abstract void f4595();
+    public abstract void f4596();
+    public abstract void f4597();
+    public abstract void f4598();
+    public abstract void f4599();
+    public abstract void f4600();
+    public abstract void f4601();
+    public abstract void f4602();
+    public abstract void f4603();
+    public abstract void f4604();
+    public abstract void f4605();
+    public abstract void f4606();
+    public abstract void f4607();
+    public abstract void f4608();
+    public abstract void f4609();
+    public abstract void f4610();
+    public abstract void f4611();
+    public abstract void f4612();
+    public abstract void f4613();
+    public abstract void f4614();
+    public abstract void f4615();
+    public abstract void f4616();
+    public abstract void f4617();
+    public abstract void f4618();
+    public abstract void f4619();
+    public abstract void f4620();
+    public abstract void f4621();
+    public abstract void f4622();
+    public abstract void f4623();
+    public abstract void f4624();
+    public abstract void f4625();
+    public abstract void f4626();
+    public abstract void f4627();
+    public abstract void f4628();
+    public abstract void f4629();
+    public abstract void f4630();
+    public abstract void f4631();
+    public abstract void f4632();
+    public abstract void f4633();
+    public abstract void f4634();
+    public abstract void f4635();
+    public abstract void f4636();
+    public abstract void f4637();
+    public abstract void f4638();
+    public abstract void f4639();
+    public abstract void f4640();
+    public abstract void f4641();
+    public abstract void f4642();
+    public abstract void f4643();
+    public abstract void f4644();
+    public abstract void f4645();
+    public abstract void f4646();
+    public abstract void f4647();
+    public abstract void f4648();
+    public abstract void f4649();
+    public abstract void f4650();
+    public abstract void f4651();
+    public abstract void f4652();
+    public abstract void f4653();
+    public abstract void f4654();
+    public abstract void f4655();
+    public abstract void f4656();
+    public abstract void f4657();
+    public abstract void f4658();
+    public abstract void f4659();
+    public abstract void f4660();
+    public abstract void f4661();
+    public abstract void f4662();
+    public abstract void f4663();
+    public abstract void f4664();
+    public abstract void f4665();
+    public abstract void f4666();
+    public abstract void f4667();
+    public abstract void f4668();
+    public abstract void f4669();
+    public abstract void f4670();
+    public abstract void f4671();
+    public abstract void f4672();
+    public abstract void f4673();
+    public abstract void f4674();
+    public abstract void f4675();
+    public abstract void f4676();
+}