changeset 383:8f2986ff0235

8013021: Rebase 8005432 & 8003542 against the latest jdk8/jaxws 8003542: Improve processing of MTOM attachments 8005432: Update access to JAX-WS Reviewed-by: mullan
author mkos
date Wed, 12 Jun 2013 14:47:09 +0100
parents 7386eca865e1
children c4191a46e3eb
files src/share/jaxws_classes/com/oracle/webservices/internal/api/databinding/DatabindingModeFeature.java src/share/jaxws_classes/com/oracle/webservices/internal/api/databinding/ExternalMetadataFeature.java src/share/jaxws_classes/com/oracle/webservices/internal/api/message/BaseDistributedPropertySet.java src/share/jaxws_classes/com/oracle/webservices/internal/impl/encoding/StreamDecoderImpl.java src/share/jaxws_classes/com/oracle/xmlns/internal/webservices/jaxws_databinding/package-info.java src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle.properties src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_de.properties src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_es.properties src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_fr.properties src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_it.properties src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_ja.properties src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_ko.properties src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_pt_BR.properties src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_zh_CN.properties src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_zh_TW.properties src/share/jaxws_classes/com/sun/tools/internal/jxc/gen/config/Classes.java src/share/jaxws_classes/com/sun/tools/internal/jxc/gen/config/Config.java src/share/jaxws_classes/com/sun/tools/internal/jxc/gen/config/Schema.java src/share/jaxws_classes/com/sun/tools/internal/ws/version.properties src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle.properties src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_de.properties src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_es.properties src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_fr.properties src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_it.properties src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_ja.properties src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_ko.properties src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_pt_BR.properties src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_zh_CN.properties src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_zh_TW.properties src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/ModelBuilder.java src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/JAXBContextImpl.java src/share/jaxws_classes/com/sun/xml/internal/bind/v2/schemagen/XmlSchemaGenerator.java src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/CommonResourceBundle.java src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/Decoder.java src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/algorithm/BASE64EncodingAlgorithm.java src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/algorithm/BooleanEncodingAlgorithm.java src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/algorithm/BuiltInEncodingAlgorithm.java src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/algorithm/FloatEncodingAlgorithm.java src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/algorithm/HexadecimalEncodingAlgorithm.java src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/dom/DOMDocumentParser.java src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/resources/ResourceBundle.properties src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/sax/AttributesHolder.java src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/sax/SAXDocumentParser.java src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/stax/StAXDocumentParser.java src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/stax/events/StartElementEvent.java src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/stax/factory/StAXOutputFactory.java src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/tools/SAXEventSerializer.java src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/tools/TransformInputOutput.java src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/DataHead.java src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/MemoryData.java src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/TempFiles.java src/share/jaxws_classes/com/sun/xml/internal/ws/api/databinding/DatabindingConfig.java src/share/jaxws_classes/com/sun/xml/internal/ws/api/message/saaj/SAAJFactory.java src/share/jaxws_classes/com/sun/xml/internal/ws/api/pipe/Fiber.java src/share/jaxws_classes/com/sun/xml/internal/ws/api/streaming/XMLStreamWriterFactory.java src/share/jaxws_classes/com/sun/xml/internal/ws/assembler/MetroConfigLoader.java src/share/jaxws_classes/com/sun/xml/internal/ws/assembler/TubeCreator.java src/share/jaxws_classes/com/sun/xml/internal/ws/client/MonitorRootClient.java src/share/jaxws_classes/com/sun/xml/internal/ws/client/SEIPortInfo.java src/share/jaxws_classes/com/sun/xml/internal/ws/client/WSServiceDelegate.java src/share/jaxws_classes/com/sun/xml/internal/ws/client/dispatch/DispatchImpl.java src/share/jaxws_classes/com/sun/xml/internal/ws/client/sei/SEIStub.java src/share/jaxws_classes/com/sun/xml/internal/ws/client/sei/SyncMethodHandler.java src/share/jaxws_classes/com/sun/xml/internal/ws/db/DatabindingFactoryImpl.java src/share/jaxws_classes/com/sun/xml/internal/ws/db/DatabindingImpl.java src/share/jaxws_classes/com/sun/xml/internal/ws/encoding/MtomCodec.java src/share/jaxws_classes/com/sun/xml/internal/ws/message/stream/StreamMessage.java src/share/jaxws_classes/com/sun/xml/internal/ws/model/RuntimeModeler.java src/share/jaxws_classes/com/sun/xml/internal/ws/model/WrapperBeanGenerator.java src/share/jaxws_classes/com/sun/xml/internal/ws/model/wsdl/WSDLBoundOperationImpl.java src/share/jaxws_classes/com/sun/xml/internal/ws/model/wsdl/WSDLOperationImpl.java src/share/jaxws_classes/com/sun/xml/internal/ws/resources/DispatchMessages.java src/share/jaxws_classes/com/sun/xml/internal/ws/resources/dispatch.properties src/share/jaxws_classes/com/sun/xml/internal/ws/server/EndpointFactory.java src/share/jaxws_classes/com/sun/xml/internal/ws/spi/db/BindingInfo.java src/share/jaxws_classes/com/sun/xml/internal/ws/spi/db/JAXBWrapperAccessor.java src/share/jaxws_classes/com/sun/xml/internal/ws/transport/http/HttpAdapter.java src/share/jaxws_classes/com/sun/xml/internal/ws/util/version.properties src/share/jaxws_classes/javax/xml/soap/FactoryFinder.java src/share/jaxws_classes/javax/xml/soap/MessageFactory.java src/share/jaxws_classes/javax/xml/soap/SAAJMetaFactory.java src/share/jaxws_classes/javax/xml/soap/SOAPConnectionFactory.java src/share/jaxws_classes/javax/xml/soap/SOAPFactory.java
diffstat 83 files changed, 1153 insertions(+), 787 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/jaxws_classes/com/oracle/webservices/internal/api/databinding/DatabindingModeFeature.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/oracle/webservices/internal/api/databinding/DatabindingModeFeature.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,7 +30,7 @@
 
 import javax.xml.ws.WebServiceFeature;
 
-public class DatabindingModeFeature extends WebServiceFeature {
+public class DatabindingModeFeature extends WebServiceFeature implements com.sun.xml.internal.ws.api.ServiceSharedFeatureMarker {
     /**
      * Constant value identifying the DatabindingFeature
      */
--- a/src/share/jaxws_classes/com/oracle/webservices/internal/api/databinding/ExternalMetadataFeature.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/oracle/webservices/internal/api/databinding/ExternalMetadataFeature.java	Wed Jun 12 14:47:09 2013 +0100
@@ -52,6 +52,7 @@
 
     private List<String> resourceNames;
     private List<File> files;
+    private MetadataReader reader;
 
     private ExternalMetadataFeature() {
     }
@@ -88,6 +89,7 @@
     }
 
     public MetadataReader getMetadataReader(ClassLoader classLoader, boolean disableSecureXmlProcessing) {
+        if (reader != null && enabled) return reader;
         return enabled ? new ExternalMetadataReader(files, resourceNames, classLoader, true, disableSecureXmlProcessing) : null;
     }
 
@@ -153,5 +155,9 @@
             return this;
         }
 
+        public Builder setReader( MetadataReader r ) {
+            o.reader = r;
+            return this;
+        }
     }
 }
--- a/src/share/jaxws_classes/com/oracle/webservices/internal/api/message/BaseDistributedPropertySet.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/oracle/webservices/internal/api/message/BaseDistributedPropertySet.java	Wed Jun 12 14:47:09 2013 +0100
@@ -22,6 +22,7 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
+
 package com.oracle.webservices.internal.api.message;
 
 import com.sun.istack.internal.NotNull;
--- a/src/share/jaxws_classes/com/oracle/webservices/internal/impl/encoding/StreamDecoderImpl.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/oracle/webservices/internal/impl/encoding/StreamDecoderImpl.java	Wed Jun 12 14:47:09 2013 +0100
@@ -22,6 +22,7 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
+
 package com.oracle.webservices.internal.impl.encoding;
 
 import java.io.IOException;
--- a/src/share/jaxws_classes/com/oracle/xmlns/internal/webservices/jaxws_databinding/package-info.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/oracle/xmlns/internal/webservices/jaxws_databinding/package-info.java	Wed Jun 12 14:47:09 2013 +0100
@@ -23,7 +23,6 @@
  * questions.
  */
 
-
 //
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.6-SNAPSHOT
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
--- a/src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -30,10 +30,10 @@
     Non-existent directory: {0}
 
 VERSION = \
-        schemagen 2.2.7-b63
+        schemagen 2.2.8-b01
 
 FULLVERSION = \
-        schemagen full version "2.2.7-b63"
+        schemagen full version "2.2.8-b01"
 
 USAGE = \
 Usage: schemagen [-options ...] <java files> \n\
--- a/src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_de.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_de.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -27,8 +27,8 @@
 
 BASEDIR_DOESNT_EXIST = Nicht vorhandenes Verzeichnis: {0}
 
-VERSION = schemagen 2.2.7-b63
+VERSION = schemagen 2.2.8-b01
 
-FULLVERSION = schemagen vollst\u00E4ndige Version "2.2.7-b63"
+FULLVERSION = schemagen vollst\u00E4ndige Version "2.2.8-b01"
 
 USAGE = Verwendung: schemagen [-options ...] <java files> \nOptionen: \n\\ \\ \\ \\ -d <path>             : Gibt an, wo die von Prozessor und javac generierten Klassendateien gespeichert werden sollen\n\\ \\ \\ \\ -cp <path>            : Gibt an, wo die vom Benutzer angegebenen Dateien gespeichert sind\n\\ \\ \\ \\ -classpath <path>     : Gibt an, wo die vom Benutzer angegebenen Dateien gespeichert sind\n\\ \\ \\ \\ -encoding <encoding>  : Gibt die Codierung f\u00FCr die Annotationsverarbeitung/den javac-Aufruf an \n\\ \\ \\ \\ -episode <file>       : Generiert Episodendatei f\u00FCr separate Kompilierung\n\\ \\ \\ \\ -version              : Zeigt Versionsinformation an\n\\ \\ \\ \\ -fullversion          : Zeigt vollst\u00E4ndige Versionsinformationen an\n\\ \\ \\ \\ -help                 : Zeigt diese Verwendungsmeldung an
--- a/src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_es.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_es.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -27,8 +27,8 @@
 
 BASEDIR_DOESNT_EXIST = Directorio no existente: {0}
 
-VERSION = schemagen 2.2.7-b63
+VERSION = schemagen 2.2.8-b01
 
-FULLVERSION = versi\u00F3n completa de schemagen "2.2.7-b63"
+FULLVERSION = versi\u00F3n completa de schemagen "2.2.8-b01"
 
 USAGE = Sintaxis: schemagen [-options ...] <archivos java> \nOpciones: \n\\ \\ \\ \\ -d <ruta de acceso>             : especifique d\u00F3nde se colocan los archivos de clase generados por javac y el procesador\n\\ \\ \\ \\ -cp <ruta de acceso>            : especifique d\u00F3nde se encuentran los archivos especificados por el usuario\n\\ \\ \\ \\ -encoding <codificaci\u00F3n>  : especifique la codificaci\u00F3n que se va a utilizar para el procesamiento de anotaciones/llamada de javac\n\\ \\ \\ \\ -episode <archivo>       : genera un archivo de episodio para una compilaci\u00F3n diferente\n\\ \\ \\ \\ -version              : muestra la informaci\u00F3n de la versi\u00F3n\n\\ \\ \\ \\ -fullversion          : muestra la informaci\u00F3n completa de la versi\u00F3n\n\\ \\ \\ \\ -help                 : muestra este mensaje de sintaxis
--- a/src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_fr.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_fr.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -27,8 +27,8 @@
 
 BASEDIR_DOESNT_EXIST = R\u00E9pertoire {0} inexistant
 
-VERSION = schemagen 2.2.7-b63
+VERSION = schemagen 2.2.8-b01
 
-FULLVERSION = version compl\u00E8te de schemagen "2.2.7-b63"
+FULLVERSION = version compl\u00E8te de schemagen "2.2.8-b01"
 
 USAGE = Syntaxe : schemagen [-options ...] <java files> \nOptions : \n\ \ \ \ -d <path> : indiquez o\u00F9 placer les fichiers de classe g\u00E9n\u00E9r\u00E9s par le processeur et le compilateur javac\n\ \ \ \ -cp <path> : indiquez o\u00F9 trouver les fichiers sp\u00E9cifi\u00E9s par l'utilisateur\n\ \ \ \ -classpath <path> : indiquez o\u00F9 trouver les fichiers sp\u00E9cifi\u00E9s par l'utilisateur\n\ \ \ \ -encoding <encoding> : indiquez l'encodage \u00E0 utiliser pour l'appel de javac/traitement de l'annotation \n\ \ \ \ -episode <file> : g\u00E9n\u00E9rez un fichier d'\u00E9pisode pour la compilation s\u00E9par\u00E9e\n\ \ \ \ -version : affichez les informations de version\n\ \ \ \ -fullversion : affichez les informations compl\u00E8tes de version\n\ \ \ \ -help : affichez ce message de syntaxe
--- a/src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_it.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_it.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -27,8 +27,8 @@
 
 BASEDIR_DOESNT_EXIST = Directory non esistente: {0}
 
-VERSION = schemagen 2.2.7-b63
+VERSION = schemagen 2.2.8-b01
 
-FULLVERSION = versione completa schemagen "2.2.7-b63"
+FULLVERSION = versione completa schemagen "2.2.8-b01"
 
 USAGE = Uso: schemagen [-options ...] <java files> \nOpzioni: \n\ \ \ \ -d <path>             : specifica dove posizionare il processore e i file della classe generata javac\n\ \ \ \ -cp <path>            : specifica dove trovare i file specificati dall'utente\n\ \ \ \ -classpath <path>     : specifica dove trovare i file specificati dall'utente\n\ \ \ \ -encoding <encoding>  : specifica la codifica da usare per l'elaborazione dell'annotazione/richiamo javac \n\ \ \ \ -episode <file>       : genera il file di episodio per la compilazione separata\n\ \ \ \ -version              : visualizza le informazioni sulla versione\n\ \ \ \ -fullversion          : visualizza le informazioni sulla versione completa\n\ \ \ \ -help                 : visualizza questo messaggio sull'uso
--- a/src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_ja.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_ja.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -27,8 +27,8 @@
 
 BASEDIR_DOESNT_EXIST = \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304C\u5B58\u5728\u3057\u307E\u305B\u3093: {0}
 
-VERSION = schemagen 2.2.7-b63
+VERSION = schemagen 2.2.8-b01
 
-FULLVERSION = schemagen\u30D5\u30EB\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3"2.2.7-b63"
+FULLVERSION = schemagen\u30D5\u30EB\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3"2.2.8-b01"
 
 USAGE = \u4F7F\u7528\u65B9\u6CD5: schemagen [-options ...] <java files> \n\u30AA\u30D7\u30B7\u30E7\u30F3: \n\ \ \ \ -d <path>             : \u30D7\u30ED\u30BB\u30C3\u30B5\u304A\u3088\u3073javac\u304C\u751F\u6210\u3057\u305F\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u7F6E\u304F\u4F4D\u7F6E\u3092\u6307\u5B9A\u3057\u307E\u3059\n\ \ \ \ -cp <path>            : \u30E6\u30FC\u30B6\u30FC\u304C\u6307\u5B9A\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22\u3059\u308B\u4F4D\u7F6E\u3092\u6307\u5B9A\u3057\u307E\u3059\n\ \ \ \ -classpath <path>     : \u30E6\u30FC\u30B6\u30FC\u304C\u6307\u5B9A\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22\u3059\u308B\u4F4D\u7F6E\u3092\u6307\u5B9A\u3057\u307E\u3059\n\ \ \ \ -encoding <encoding>  : \u6CE8\u91C8\u51E6\u7406/javac\u547C\u51FA\u3057\u306B\u4F7F\u7528\u3059\u308B\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3092\u6307\u5B9A\u3057\u307E\u3059\n\ \ \ \ -episode <file>       : \u30B3\u30F3\u30D1\u30A4\u30EB\u3054\u3068\u306B\u30A8\u30D4\u30BD\u30FC\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u751F\u6210\u3057\u307E\u3059\n\ \ \ \ -version              : \u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\u3092\u8868\u793A\u3057\u307E\u3059\n\ \ \ \ -fullversion          : \u30D5\u30EB\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\u3092\u8868\u793A\u3057\u307E\u3059\n\ \ \ \ -help                 : \u3053\u306E\u4F7F\u7528\u4F8B\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u793A\u3057\u307E\u3059
--- a/src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_ko.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_ko.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -27,8 +27,8 @@
 
 BASEDIR_DOESNT_EXIST = \uC874\uC7AC\uD558\uC9C0 \uC54A\uB294 \uB514\uB809\uD1A0\uB9AC: {0}
 
-VERSION = schemagen 2.2.7-b63
+VERSION = schemagen 2.2.8-b01
 
-FULLVERSION = schemagen \uC815\uC2DD \uBC84\uC804 "2.2.7-b63"
+FULLVERSION = schemagen \uC815\uC2DD \uBC84\uC804 "2.2.8-b01"
 
 USAGE = \uC0AC\uC6A9\uBC95: schemagen [-options ...] <java files> \n\uC635\uC158: \n\ \ \ \ -d <path>             : \uD504\uB85C\uC138\uC11C \uBC0F javac\uC5D0\uC11C \uC0DD\uC131\uD55C \uD074\uB798\uC2A4 \uD30C\uC77C\uC744 \uBC30\uCE58\uD560 \uC704\uCE58\uB97C \uC9C0\uC815\uD569\uB2C8\uB2E4.\n\ \ \ \ -cp <path>            : \uC0AC\uC6A9\uC790\uAC00 \uC9C0\uC815\uD55C \uD30C\uC77C\uC744 \uCC3E\uC744 \uC704\uCE58\uB97C \uC9C0\uC815\uD569\uB2C8\uB2E4.\n\ \ \ \ -classpath <path>     : \uC0AC\uC6A9\uC790\uAC00 \uC9C0\uC815\uD55C \uD30C\uC77C\uC744 \uCC3E\uC744 \uC704\uCE58\uB97C \uC9C0\uC815\uD569\uB2C8\uB2E4.\n\ \ \ \ -encoding <encoding>  : \uC8FC\uC11D \uCC98\uB9AC/javac \uD638\uCD9C\uC5D0 \uC0AC\uC6A9\uD560 \uC778\uCF54\uB529\uC744 \uC9C0\uC815\uD569\uB2C8\uB2E4. \n\ \ \ \ -episode <file>       : \uBCC4\uB3C4 \uCEF4\uD30C\uC77C\uC744 \uC704\uD574 episode \uD30C\uC77C\uC744 \uC0DD\uC131\uD569\uB2C8\uB2E4.\n\ \ \ \ -version              : \uBC84\uC804 \uC815\uBCF4\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.\n\ \ \ \ -fullversion          : \uC815\uC2DD \uBC84\uC804 \uC815\uBCF4\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.\n\ \ \ \ -help                 : \uC774 \uC0AC\uC6A9\uBC95 \uBA54\uC2DC\uC9C0\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.
--- a/src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_pt_BR.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_pt_BR.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -27,8 +27,8 @@
 
 BASEDIR_DOESNT_EXIST = Diret\u00F3rio n\u00E3o existente: {0}
 
-VERSION = gera\u00E7\u00E3o do esquema 2.2.7-b63
+VERSION = gera\u00E7\u00E3o do esquema 2.2.8-b01
 
-FULLVERSION = vers\u00E3o completa da gera\u00E7\u00E3o do esquema "2.2.7-b63"
+FULLVERSION = vers\u00E3o completa da gera\u00E7\u00E3o do esquema "2.2.8-b01"
 
 USAGE = Uso: gera\u00E7\u00E3o do esquema [-options ...] <java files> \nOp\u00E7\u00F5es: \n\\ \\ \\ \\ -d <path>             : especificar onde colocar o processador e os arquivos da classe gerados por javac\n\\ \\ \\ \\ -cp <path>            : especificar onde localizar arquivos especificados pelo usu\u00E1rio\n\\ \\ \\ \\ -classpath <path>     : especificar onde localizar os arquivos especificados pelo usu\u00E1rio\n\\ \\ \\ \\ -encoding <encoding>  : especificar codifica\u00E7\u00E3o a ser usada para processamento de anota\u00E7\u00E3o/chamada javac \n\\ \\ \\ \\ -episode <file>       : gerar arquivo do epis\u00F3dio para compila\u00E7\u00E3o separada\n\\ \\ \\ \\ -version              : exibir informa\u00E7\u00F5es da vers\u00E3o\n\\ \\ \\ \\ -fullversion          : exibir informa\u00E7\u00F5es da vers\u00E3o completa\n\\ \\ \\ \\ -help                 : exibir esta mensagem de uso
--- a/src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_zh_CN.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_zh_CN.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -27,8 +27,8 @@
 
 BASEDIR_DOESNT_EXIST = \u4E0D\u5B58\u5728\u7684\u76EE\u5F55: {0}
 
-VERSION = schemagen 2.2.7-b63
+VERSION = schemagen 2.2.8-b01
 
-FULLVERSION = schemagen \u5B8C\u6574\u7248\u672C "2.2.7-b63"
+FULLVERSION = schemagen \u5B8C\u6574\u7248\u672C "2.2.8-b01"
 
 USAGE = \u7528\u6CD5: schemagen [-options ...] <java files> \n\u9009\u9879: \n\ \ \ \ -d <path>             : \u6307\u5B9A\u653E\u7F6E\u5904\u7406\u7A0B\u5E8F\u548C javac \u751F\u6210\u7684\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n\ \ \ \ -cp <path>            : \u6307\u5B9A\u67E5\u627E\u7528\u6237\u6307\u5B9A\u6587\u4EF6\u7684\u4F4D\u7F6E\n\ \ \ \ -classpath <path>     : \u6307\u5B9A\u67E5\u627E\u7528\u6237\u6307\u5B9A\u6587\u4EF6\u7684\u4F4D\u7F6E\n\ \ \ \ -encoding <encoding>  : \u6307\u5B9A\u7528\u4E8E\u6CE8\u91CA\u5904\u7406/javac \u8C03\u7528\u7684\u7F16\u7801\n\ \ \ \ -episode <file>       : \u751F\u6210\u7247\u6BB5\u6587\u4EF6\u4EE5\u4F9B\u5355\u72EC\u7F16\u8BD1\n\ \ \ \ -version              : \u663E\u793A\u7248\u672C\u4FE1\u606F\n\ \ \ \ -fullversion          : \u663E\u793A\u5B8C\u6574\u7684\u7248\u672C\u4FE1\u606F\n\ \ \ \ -help                 : \u663E\u793A\u6B64\u7528\u6CD5\u6D88\u606F
--- a/src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_zh_TW.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/jxc/MessageBundle_zh_TW.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -27,8 +27,8 @@
 
 BASEDIR_DOESNT_EXIST = \u4E0D\u5B58\u5728\u7684\u76EE\u9304: {0}
 
-VERSION = schemagen 2.2.7-b63
+VERSION = schemagen 2.2.8-b01
 
-FULLVERSION = schemagen \u5B8C\u6574\u7248\u672C "2.2.7-b63"
+FULLVERSION = schemagen \u5B8C\u6574\u7248\u672C "2.2.8-b01"
 
 USAGE = \u7528\u6CD5: schemagen [-options ...] <java files> \n\u9078\u9805: \n\\ \\ \\ \\ -d <path>             : \u6307\u5B9A\u8655\u7406\u5668\u4EE5\u53CA javac \u7522\u751F\u7684\u985E\u5225\u6A94\u6848\u653E\u7F6E\u4F4D\u7F6E\n\\ \\ \\ \\ -cp <path>            : \u6307\u5B9A\u8981\u5C0B\u627E\u4F7F\u7528\u8005\u6307\u5B9A\u6A94\u6848\u7684\u4F4D\u7F6E\n\\ \\ \\ \\ -classpath <path>     : \u6307\u5B9A\u8981\u5C0B\u627E\u4F7F\u7528\u8005\u6307\u5B9A\u6A94\u6848\u7684\u4F4D\u7F6E\n\\ \\ \\ \\ -encoding <encoding>  : \u6307\u5B9A\u8981\u7528\u65BC\u8A3B\u89E3\u8655\u7406/javac \u547C\u53EB\u7684\u7DE8\u78BC \n\\ \\ \\ \\ -episode <file>       : \u7522\u751F\u7368\u7ACB\u7DE8\u8B6F\u7684\u4E8B\u4EF6 (episode) \u6A94\u6848\n\\ \\ \\ \\ -version              : \u986F\u793A\u7248\u672C\u8CC7\u8A0A\n\\ \\ \\ \\ -fullversion          : \u986F\u793A\u5B8C\u6574\u7248\u672C\u8CC7\u8A0A\n\\ \\ \\ \\ -help                 : \u986F\u793A\u6B64\u7528\u6CD5\u8A0A\u606F
--- a/src/share/jaxws_classes/com/sun/tools/internal/jxc/gen/config/Classes.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/jxc/gen/config/Classes.java	Wed Jun 12 14:47:09 2013 +0100
@@ -78,11 +78,6 @@
         $localName = $__local;
         $qname = $__qname;
         switch($_ngcc_current_state) {
-        case 0:
-            {
-                revertToParentFromEnterElement(this, super._cookie, $__uri, $__local, $__qname, $attrs);
-            }
-            break;
         case 4:
             {
                 $_ngcc_current_state = 3;
@@ -112,6 +107,11 @@
                 }
             }
             break;
+        case 0:
+            {
+                revertToParentFromEnterElement(this, super._cookie, $__uri, $__local, $__qname, $attrs);
+            }
+            break;
         case 12:
             {
                 if(($__uri.equals("") && $__local.equals("classes"))) {
@@ -137,33 +137,6 @@
         $localName = $__local;
         $qname = $__qname;
         switch($_ngcc_current_state) {
-        case 8:
-            {
-                if(($__uri.equals("") && $__local.equals("includes"))) {
-                    $runtime.onLeaveElementConsumed($__uri, $__local, $__qname);
-                    $_ngcc_current_state = 2;
-                }
-                else {
-                    unexpectedLeaveElement($__qname);
-                }
-            }
-            break;
-        case 1:
-            {
-                if(($__uri.equals("") && $__local.equals("classes"))) {
-                    $runtime.onLeaveElementConsumed($__uri, $__local, $__qname);
-                    $_ngcc_current_state = 0;
-                }
-                else {
-                    unexpectedLeaveElement($__qname);
-                }
-            }
-            break;
-        case 0:
-            {
-                revertToParentFromLeaveElement(this, super._cookie, $__uri, $__local, $__qname);
-            }
-            break;
         case 4:
             {
                 $_ngcc_current_state = 3;
@@ -181,12 +154,39 @@
                 }
             }
             break;
+        case 1:
+            {
+                if(($__uri.equals("") && $__local.equals("classes"))) {
+                    $runtime.onLeaveElementConsumed($__uri, $__local, $__qname);
+                    $_ngcc_current_state = 0;
+                }
+                else {
+                    unexpectedLeaveElement($__qname);
+                }
+            }
+            break;
+        case 8:
+            {
+                if(($__uri.equals("") && $__local.equals("includes"))) {
+                    $runtime.onLeaveElementConsumed($__uri, $__local, $__qname);
+                    $_ngcc_current_state = 2;
+                }
+                else {
+                    unexpectedLeaveElement($__qname);
+                }
+            }
+            break;
         case 2:
             {
                 $_ngcc_current_state = 1;
                 $runtime.sendLeaveElement(super._cookie, $__uri, $__local, $__qname);
             }
             break;
+        case 0:
+            {
+                revertToParentFromLeaveElement(this, super._cookie, $__uri, $__local, $__qname);
+            }
+            break;
         default:
             {
                 unexpectedLeaveElement($__qname);
@@ -201,11 +201,6 @@
         $localName = $__local;
         $qname = $__qname;
         switch($_ngcc_current_state) {
-        case 0:
-            {
-                revertToParentFromEnterAttribute(this, super._cookie, $__uri, $__local, $__qname);
-            }
-            break;
         case 4:
             {
                 $_ngcc_current_state = 3;
@@ -218,6 +213,11 @@
                 $runtime.sendEnterAttribute(super._cookie, $__uri, $__local, $__qname);
             }
             break;
+        case 0:
+            {
+                revertToParentFromEnterAttribute(this, super._cookie, $__uri, $__local, $__qname);
+            }
+            break;
         default:
             {
                 unexpectedEnterAttribute($__qname);
@@ -232,11 +232,6 @@
         $localName = $__local;
         $qname = $__qname;
         switch($_ngcc_current_state) {
-        case 0:
-            {
-                revertToParentFromLeaveAttribute(this, super._cookie, $__uri, $__local, $__qname);
-            }
-            break;
         case 4:
             {
                 $_ngcc_current_state = 3;
@@ -249,6 +244,11 @@
                 $runtime.sendLeaveAttribute(super._cookie, $__uri, $__local, $__qname);
             }
             break;
+        case 0:
+            {
+                revertToParentFromLeaveAttribute(this, super._cookie, $__uri, $__local, $__qname);
+            }
+            break;
         default:
             {
                 unexpectedLeaveAttribute($__qname);
@@ -260,25 +260,6 @@
     public void text(String $value) throws SAXException {
         int $ai;
         switch($_ngcc_current_state) {
-        case 9:
-            {
-                include_content = $value;
-                $_ngcc_current_state = 8;
-                action2();
-            }
-            break;
-        case 8:
-            {
-                include_content = $value;
-                $_ngcc_current_state = 8;
-                action2();
-            }
-            break;
-        case 0:
-            {
-                revertToParentFromText(this, super._cookie, $value);
-            }
-            break;
         case 4:
             {
                 exclude_content = $value;
@@ -293,6 +274,20 @@
                 action0();
             }
             break;
+        case 9:
+            {
+                include_content = $value;
+                $_ngcc_current_state = 8;
+                action2();
+            }
+            break;
+        case 10:
+            {
+                __text = $value;
+                $_ngcc_current_state = 9;
+                action3();
+            }
+            break;
         case 6:
             {
                 __text = $value;
@@ -300,17 +295,22 @@
                 action1();
             }
             break;
+        case 8:
+            {
+                include_content = $value;
+                $_ngcc_current_state = 8;
+                action2();
+            }
+            break;
         case 2:
             {
                 $_ngcc_current_state = 1;
                 $runtime.sendText(super._cookie, $value);
             }
             break;
-        case 10:
+        case 0:
             {
-                __text = $value;
-                $_ngcc_current_state = 9;
-                action3();
+                revertToParentFromText(this, super._cookie, $value);
             }
             break;
         }
--- a/src/share/jaxws_classes/com/sun/tools/internal/jxc/gen/config/Config.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/jxc/gen/config/Config.java	Wed Jun 12 14:47:09 2013 +0100
@@ -74,31 +74,16 @@
         $localName = $__local;
         $qname = $__qname;
         switch($_ngcc_current_state) {
-        case 1:
+        case 2:
             {
                 if(($__uri.equals("") && $__local.equals("schema"))) {
-                    NGCCHandler h = new Schema(this, super._source, $runtime, 31, baseDir);
+                    NGCCHandler h = new Schema(this, super._source, $runtime, 16, baseDir);
                     spawnChildFromEnterElement(h, $__uri, $__local, $__qname, $attrs);
                 }
                 else {
-                    unexpectedEnterElement($__qname);
-                }
-            }
-            break;
-        case 0:
-            {
-                revertToParentFromEnterElement(this, super._cookie, $__uri, $__local, $__qname, $attrs);
-            }
-            break;
-        case 7:
-            {
-                if(($ai = $runtime.getAttributeIndex("","baseDir"))>=0) {
-                    $runtime.consumeAttribute($ai);
+                    $_ngcc_current_state = 1;
                     $runtime.sendEnterElement(super._cookie, $__uri, $__local, $__qname, $attrs);
                 }
-                else {
-                    unexpectedEnterElement($__qname);
-                }
             }
             break;
         case 8:
@@ -112,22 +97,26 @@
                 }
             }
             break;
-        case 2:
+        case 4:
             {
-                if(($__uri.equals("") && $__local.equals("schema"))) {
-                    NGCCHandler h = new Schema(this, super._source, $runtime, 32, baseDir);
+                if(($__uri.equals("") && $__local.equals("classes"))) {
+                    NGCCHandler h = new Classes(this, super._source, $runtime, 18);
                     spawnChildFromEnterElement(h, $__uri, $__local, $__qname, $attrs);
                 }
                 else {
-                    $_ngcc_current_state = 1;
-                    $runtime.sendEnterElement(super._cookie, $__uri, $__local, $__qname, $attrs);
+                    unexpectedEnterElement($__qname);
                 }
             }
             break;
-        case 4:
+        case 0:
+            {
+                revertToParentFromEnterElement(this, super._cookie, $__uri, $__local, $__qname, $attrs);
+            }
+            break;
+        case 1:
             {
-                if(($__uri.equals("") && $__local.equals("classes"))) {
-                    NGCCHandler h = new Classes(this, super._source, $runtime, 34);
+                if(($__uri.equals("") && $__local.equals("schema"))) {
+                    NGCCHandler h = new Schema(this, super._source, $runtime, 15, baseDir);
                     spawnChildFromEnterElement(h, $__uri, $__local, $__qname, $attrs);
                 }
                 else {
@@ -135,6 +124,17 @@
                 }
             }
             break;
+        case 7:
+            {
+                if(($ai = $runtime.getAttributeIndex("","baseDir"))>=0) {
+                    $runtime.consumeAttribute($ai);
+                    $runtime.sendEnterElement(super._cookie, $__uri, $__local, $__qname, $attrs);
+                }
+                else {
+                    unexpectedEnterElement($__qname);
+                }
+            }
+            break;
         default:
             {
                 unexpectedEnterElement($__qname);
@@ -149,6 +149,17 @@
         $localName = $__local;
         $qname = $__qname;
         switch($_ngcc_current_state) {
+        case 2:
+            {
+                $_ngcc_current_state = 1;
+                $runtime.sendLeaveElement(super._cookie, $__uri, $__local, $__qname);
+            }
+            break;
+        case 0:
+            {
+                revertToParentFromLeaveElement(this, super._cookie, $__uri, $__local, $__qname);
+            }
+            break;
         case 1:
             {
                 if(($__uri.equals("") && $__local.equals("config"))) {
@@ -160,11 +171,6 @@
                 }
             }
             break;
-        case 0:
-            {
-                revertToParentFromLeaveElement(this, super._cookie, $__uri, $__local, $__qname);
-            }
-            break;
         case 7:
             {
                 if(($ai = $runtime.getAttributeIndex("","baseDir"))>=0) {
@@ -176,12 +182,6 @@
                 }
             }
             break;
-        case 2:
-            {
-                $_ngcc_current_state = 1;
-                $runtime.sendLeaveElement(super._cookie, $__uri, $__local, $__qname);
-            }
-            break;
         default:
             {
                 unexpectedLeaveElement($__qname);
@@ -196,6 +196,12 @@
         $localName = $__local;
         $qname = $__qname;
         switch($_ngcc_current_state) {
+        case 2:
+            {
+                $_ngcc_current_state = 1;
+                $runtime.sendEnterAttribute(super._cookie, $__uri, $__local, $__qname);
+            }
+            break;
         case 0:
             {
                 revertToParentFromEnterAttribute(this, super._cookie, $__uri, $__local, $__qname);
@@ -211,12 +217,6 @@
                 }
             }
             break;
-        case 2:
-            {
-                $_ngcc_current_state = 1;
-                $runtime.sendEnterAttribute(super._cookie, $__uri, $__local, $__qname);
-            }
-            break;
         default:
             {
                 unexpectedEnterAttribute($__qname);
@@ -231,11 +231,6 @@
         $localName = $__local;
         $qname = $__qname;
         switch($_ngcc_current_state) {
-        case 0:
-            {
-                revertToParentFromLeaveAttribute(this, super._cookie, $__uri, $__local, $__qname);
-            }
-            break;
         case 2:
             {
                 $_ngcc_current_state = 1;
@@ -252,6 +247,11 @@
                 }
             }
             break;
+        case 0:
+            {
+                revertToParentFromLeaveAttribute(this, super._cookie, $__uri, $__local, $__qname);
+            }
+            break;
         default:
             {
                 unexpectedLeaveAttribute($__qname);
@@ -263,9 +263,10 @@
     public void text(String $value) throws SAXException {
         int $ai;
         switch($_ngcc_current_state) {
-        case 0:
+        case 2:
             {
-                revertToParentFromText(this, super._cookie, $value);
+                $_ngcc_current_state = 1;
+                $runtime.sendText(super._cookie, $value);
             }
             break;
         case 6:
@@ -275,6 +276,11 @@
                 action1();
             }
             break;
+        case 0:
+            {
+                revertToParentFromText(this, super._cookie, $value);
+            }
+            break;
         case 7:
             {
                 if(($ai = $runtime.getAttributeIndex("","baseDir"))>=0) {
@@ -283,31 +289,25 @@
                 }
             }
             break;
-        case 2:
-            {
-                $_ngcc_current_state = 1;
-                $runtime.sendText(super._cookie, $value);
-            }
-            break;
         }
     }
 
     public void onChildCompleted(Object result, int cookie, boolean needAttCheck)throws SAXException {
         switch(cookie) {
-        case 31:
+        case 16:
             {
                 this._schema = ((Schema)result);
                 action0();
                 $_ngcc_current_state = 1;
             }
             break;
-        case 34:
+        case 18:
             {
                 this.classes = ((Classes)result);
                 $_ngcc_current_state = 2;
             }
             break;
-        case 32:
+        case 15:
             {
                 this._schema = ((Schema)result);
                 action0();
--- a/src/share/jaxws_classes/com/sun/tools/internal/jxc/gen/config/Schema.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/jxc/gen/config/Schema.java	Wed Jun 12 14:47:09 2013 +0100
@@ -67,6 +67,23 @@
         $localName = $__local;
         $qname = $__qname;
         switch($_ngcc_current_state) {
+        case 0:
+            {
+                revertToParentFromEnterElement(this, super._cookie, $__uri, $__local, $__qname, $attrs);
+            }
+            break;
+        case 6:
+            {
+                if(($ai = $runtime.getAttributeIndex("","namespace"))>=0) {
+                    $runtime.consumeAttribute($ai);
+                    $runtime.sendEnterElement(super._cookie, $__uri, $__local, $__qname, $attrs);
+                }
+                else {
+                    $_ngcc_current_state = 2;
+                    $runtime.sendEnterElement(super._cookie, $__uri, $__local, $__qname, $attrs);
+                }
+            }
+            break;
         case 2:
             {
                 if(($ai = $runtime.getAttributeIndex("","location"))>=0) {
@@ -90,23 +107,6 @@
                 }
             }
             break;
-        case 0:
-            {
-                revertToParentFromEnterElement(this, super._cookie, $__uri, $__local, $__qname, $attrs);
-            }
-            break;
-        case 6:
-            {
-                if(($ai = $runtime.getAttributeIndex("","namespace"))>=0) {
-                    $runtime.consumeAttribute($ai);
-                    $runtime.sendEnterElement(super._cookie, $__uri, $__local, $__qname, $attrs);
-                }
-                else {
-                    $_ngcc_current_state = 2;
-                    $runtime.sendEnterElement(super._cookie, $__uri, $__local, $__qname, $attrs);
-                }
-            }
-            break;
         default:
             {
                 unexpectedEnterElement($__qname);
@@ -121,29 +121,6 @@
         $localName = $__local;
         $qname = $__qname;
         switch($_ngcc_current_state) {
-        case 1:
-            {
-                if(($__uri.equals("") && $__local.equals("schema"))) {
-                    $runtime.onLeaveElementConsumed($__uri, $__local, $__qname);
-                    $_ngcc_current_state = 0;
-                }
-                else {
-                    unexpectedLeaveElement($__qname);
-                }
-            }
-            break;
-        case 2:
-            {
-                if(($ai = $runtime.getAttributeIndex("","location"))>=0) {
-                    $runtime.consumeAttribute($ai);
-                    $runtime.sendLeaveElement(super._cookie, $__uri, $__local, $__qname);
-                }
-                else {
-                    $_ngcc_current_state = 1;
-                    $runtime.sendLeaveElement(super._cookie, $__uri, $__local, $__qname);
-                }
-            }
-            break;
         case 0:
             {
                 revertToParentFromLeaveElement(this, super._cookie, $__uri, $__local, $__qname);
@@ -161,6 +138,29 @@
                 }
             }
             break;
+        case 2:
+            {
+                if(($ai = $runtime.getAttributeIndex("","location"))>=0) {
+                    $runtime.consumeAttribute($ai);
+                    $runtime.sendLeaveElement(super._cookie, $__uri, $__local, $__qname);
+                }
+                else {
+                    $_ngcc_current_state = 1;
+                    $runtime.sendLeaveElement(super._cookie, $__uri, $__local, $__qname);
+                }
+            }
+            break;
+        case 1:
+            {
+                if(($__uri.equals("") && $__local.equals("schema"))) {
+                    $runtime.onLeaveElementConsumed($__uri, $__local, $__qname);
+                    $_ngcc_current_state = 0;
+                }
+                else {
+                    unexpectedLeaveElement($__qname);
+                }
+            }
+            break;
         default:
             {
                 unexpectedLeaveElement($__qname);
@@ -175,17 +175,6 @@
         $localName = $__local;
         $qname = $__qname;
         switch($_ngcc_current_state) {
-        case 2:
-            {
-                if(($__uri.equals("") && $__local.equals("location"))) {
-                    $_ngcc_current_state = 4;
-                }
-                else {
-                    $_ngcc_current_state = 1;
-                    $runtime.sendEnterAttribute(super._cookie, $__uri, $__local, $__qname);
-                }
-            }
-            break;
         case 0:
             {
                 revertToParentFromEnterAttribute(this, super._cookie, $__uri, $__local, $__qname);
@@ -202,6 +191,17 @@
                 }
             }
             break;
+        case 2:
+            {
+                if(($__uri.equals("") && $__local.equals("location"))) {
+                    $_ngcc_current_state = 4;
+                }
+                else {
+                    $_ngcc_current_state = 1;
+                    $runtime.sendEnterAttribute(super._cookie, $__uri, $__local, $__qname);
+                }
+            }
+            break;
         default:
             {
                 unexpectedEnterAttribute($__qname);
@@ -216,10 +216,9 @@
         $localName = $__local;
         $qname = $__qname;
         switch($_ngcc_current_state) {
-        case 2:
+        case 0:
             {
-                $_ngcc_current_state = 1;
-                $runtime.sendLeaveAttribute(super._cookie, $__uri, $__local, $__qname);
+                revertToParentFromLeaveAttribute(this, super._cookie, $__uri, $__local, $__qname);
             }
             break;
         case 7:
@@ -232,6 +231,12 @@
                 }
             }
             break;
+        case 6:
+            {
+                $_ngcc_current_state = 2;
+                $runtime.sendLeaveAttribute(super._cookie, $__uri, $__local, $__qname);
+            }
+            break;
         case 3:
             {
                 if(($__uri.equals("") && $__local.equals("location"))) {
@@ -242,14 +247,9 @@
                 }
             }
             break;
-        case 0:
+        case 2:
             {
-                revertToParentFromLeaveAttribute(this, super._cookie, $__uri, $__local, $__qname);
-            }
-            break;
-        case 6:
-            {
-                $_ngcc_current_state = 2;
+                $_ngcc_current_state = 1;
                 $runtime.sendLeaveAttribute(super._cookie, $__uri, $__local, $__qname);
             }
             break;
@@ -264,25 +264,6 @@
     public void text(String $value) throws SAXException {
         int $ai;
         switch($_ngcc_current_state) {
-        case 2:
-            {
-                if(($ai = $runtime.getAttributeIndex("","location"))>=0) {
-                    $runtime.consumeAttribute($ai);
-                    $runtime.sendText(super._cookie, $value);
-                }
-                else {
-                    $_ngcc_current_state = 1;
-                    $runtime.sendText(super._cookie, $value);
-                }
-            }
-            break;
-        case 4:
-            {
-                loc = $value;
-                $_ngcc_current_state = 3;
-                action0();
-            }
-            break;
         case 8:
             {
                 namespace = $value;
@@ -306,6 +287,25 @@
                 }
             }
             break;
+        case 4:
+            {
+                loc = $value;
+                $_ngcc_current_state = 3;
+                action0();
+            }
+            break;
+        case 2:
+            {
+                if(($ai = $runtime.getAttributeIndex("","location"))>=0) {
+                    $runtime.consumeAttribute($ai);
+                    $runtime.sendText(super._cookie, $value);
+                }
+                else {
+                    $_ngcc_current_state = 1;
+                    $runtime.sendText(super._cookie, $value);
+                }
+            }
+            break;
         }
     }
 
--- a/src/share/jaxws_classes/com/sun/tools/internal/ws/version.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/ws/version.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -23,7 +23,7 @@
 # questions.
 #
 
-build-id=2.2.9-b13941
-build-version=JAX-WS RI 2.2.9-b13941
+build-id=2.2.9-b14027
+build-version=JAX-WS RI 2.2.9-b14027
 major-version=2.2.9
-svn-revision=unknown
+svn-revision=14027
--- a/src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -171,23 +171,23 @@
 Driver.FailedToGenerateCode = \
         Failed to produce code.
 
-# DO NOT localize the 2.2.7-b63 string - it is a token for an ant <replaceFilter>
+# DO NOT localize the 2.2.8-b01 string - it is a token for an ant <replaceFilter>
 Driver.FilePrologComment = \
-        This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.7-b63 \n\
+        This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b01 \n\
         See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \n\
         Any modifications to this file will be lost upon recompilation of the source schema. \n\
         Generated on: {0} \n
 
 Driver.Version = \
-        xjc 2.2.7-b63
+        xjc 2.2.8-b01
 
 Driver.FullVersion = \
-        xjc full version "2.2.7-b63-b19"
+        xjc full version "2.2.8-b01-b28"
 
-Driver.BuildID = 2.2.7-b63
+Driver.BuildID = 2.2.8-b01
 
 # for JDK integration - include version in source zip
-jaxb.jdk.version=2.2.7-b63
+jaxb.jdk.version=2.2.8-b01
 
 # see java.text.SimpleDateFormat for format syntax
 # DO NOT LOCALIZE, Format should not be changed, English locale is used to transform this string into a real date.
--- a/src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_de.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_de.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -96,17 +96,17 @@
 
 Driver.FailedToGenerateCode = Code konnte nicht erzeugt werden.
 
-# DO NOT localize the 2.2.7-b63 string - it is a token for an ant <replaceFilter>
-Driver.FilePrologComment = Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.7-b63 generiert \nSiehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \n\u00c4nderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren. \nGeneriert: {0} \n
+# DO NOT localize the 2.2.8-b01 string - it is a token for an ant <replaceFilter>
+Driver.FilePrologComment = Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b01 generiert \nSiehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \n\u00c4nderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren. \nGeneriert: {0} \n
 
-Driver.Version = xjc 2.2.7-b63
+Driver.Version = xjc 2.2.8-b01
 
-Driver.FullVersion = xjc vollst\u00e4ndige Version "2.2.7-b63-b19"
+Driver.FullVersion = xjc vollst\u00e4ndige Version "2.2.8-b01-b28"
 
-Driver.BuildID = 2.2.7-b63
+Driver.BuildID = 2.2.8-b01
 
 # for JDK integration - include version in source zip
-jaxb.jdk.version=2.2.7-b63
+jaxb.jdk.version=2.2.8-b01
 
 # see java.text.SimpleDateFormat for format syntax
 # DO NOT LOCALIZE, Format should not be changed, English locale is used to transform this string into a real date.
--- a/src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_es.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_es.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -96,17 +96,17 @@
 
 Driver.FailedToGenerateCode = Fallo al producir c\u00f3digo.
 
-# DO NOT localize the 2.2.7-b63 string - it is a token for an ant <replaceFilter>
-Driver.FilePrologComment = Este archivo ha sido generado por la arquitectura JavaTM para la implantaci\u00f3n de la referencia de enlace (JAXB) XML v2.2.7-b63 \nVisite <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \nTodas las modificaciones realizadas en este archivo se perder\u00e1n si se vuelve a compilar el esquema de origen. \nGenerado el: {0} \n
+# DO NOT localize the 2.2.8-b01 string - it is a token for an ant <replaceFilter>
+Driver.FilePrologComment = Este archivo ha sido generado por la arquitectura JavaTM para la implantaci\u00f3n de la referencia de enlace (JAXB) XML v2.2.8-b01 \nVisite <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \nTodas las modificaciones realizadas en este archivo se perder\u00e1n si se vuelve a compilar el esquema de origen. \nGenerado el: {0} \n
 
-Driver.Version = xjc 2.2.7-b63
+Driver.Version = xjc 2.2.8-b01
 
-Driver.FullVersion = versi\u00f3n completa de xjc "2.2.7-b63-b19"
+Driver.FullVersion = versi\u00f3n completa de xjc "2.2.8-b01-b28"
 
-Driver.BuildID = 2.2.7-b63
+Driver.BuildID = 2.2.8-b01
 
 # for JDK integration - include version in source zip
-jaxb.jdk.version=2.2.7-b63
+jaxb.jdk.version=2.2.8-b01
 
 # see java.text.SimpleDateFormat for format syntax
 # DO NOT LOCALIZE, Format should not be changed, English locale is used to transform this string into a real date.
--- a/src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_fr.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_fr.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -96,17 +96,17 @@
 
 Driver.FailedToGenerateCode = Echec de la production du code.
 
-# DO NOT localize the 2.2.7-b63 string - it is a token for an ant <replaceFilter>
-Driver.FilePrologComment = Ce fichier a \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9 par l''impl\u00e9mentation de r\u00e9f\u00e9rence JavaTM Architecture for XML Binding (JAXB), v2.2.7-b63 \nVoir <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \nToute modification apport\u00e9e \u00e0 ce fichier sera perdue lors de la recompilation du sch\u00e9ma source. \nG\u00e9n\u00e9r\u00e9 le : {0} \n
+# DO NOT localize the 2.2.8-b01 string - it is a token for an ant <replaceFilter>
+Driver.FilePrologComment = Ce fichier a \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9 par l''impl\u00e9mentation de r\u00e9f\u00e9rence JavaTM Architecture for XML Binding (JAXB), v2.2.8-b01 \nVoir <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \nToute modification apport\u00e9e \u00e0 ce fichier sera perdue lors de la recompilation du sch\u00e9ma source. \nG\u00e9n\u00e9r\u00e9 le : {0} \n
 
-Driver.Version = xjc 2.2.7-b63
+Driver.Version = xjc 2.2.8-b01
 
-Driver.FullVersion = version compl\u00e8te xjc "2.2.7-b63-b19"
+Driver.FullVersion = version compl\u00e8te xjc "2.2.8-b01-b28"
 
-Driver.BuildID = 2.2.7-b63
+Driver.BuildID = 2.2.8-b01
 
 # for JDK integration - include version in source zip
-jaxb.jdk.version=2.2.7-b63
+jaxb.jdk.version=2.2.8-b01
 
 # see java.text.SimpleDateFormat for format syntax
 # DO NOT LOCALIZE, Format should not be changed, English locale is used to transform this string into a real date.
--- a/src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_it.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_it.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -96,17 +96,17 @@
 
 Driver.FailedToGenerateCode = Produzione del codice non riuscita.
 
-# DO NOT localize the 2.2.7-b63 string - it is a token for an ant <replaceFilter>
-Driver.FilePrologComment = Questo file \u00e8 stato generato dall''architettura JavaTM per XML Binding (JAXB) Reference Implementation, v2.2.7-b63 \nVedere <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \nQualsiasi modifica a questo file andr\u00e0 persa durante la ricompilazione dello schema di origine. \nGenerato il: {0} \n
+# DO NOT localize the 2.2.8-b01 string - it is a token for an ant <replaceFilter>
+Driver.FilePrologComment = Questo file \u00e8 stato generato dall''architettura JavaTM per XML Binding (JAXB) Reference Implementation, v2.2.8-b01 \nVedere <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \nQualsiasi modifica a questo file andr\u00e0 persa durante la ricompilazione dello schema di origine. \nGenerato il: {0} \n
 
-Driver.Version = xjc 2.2.7-b63
+Driver.Version = xjc 2.2.8-b01
 
-Driver.FullVersion = versione completa xjc "2.2.7-b63-b19"
+Driver.FullVersion = versione completa xjc "2.2.8-b01-b28"
 
-Driver.BuildID = 2.2.7-b63
+Driver.BuildID = 2.2.8-b01
 
 # for JDK integration - include version in source zip
-jaxb.jdk.version=2.2.7-b63
+jaxb.jdk.version=2.2.8-b01
 
 # see java.text.SimpleDateFormat for format syntax
 # DO NOT LOCALIZE, Format should not be changed, English locale is used to transform this string into a real date.
--- a/src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_ja.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_ja.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -96,17 +96,17 @@
 
 Driver.FailedToGenerateCode = \u30b3\u30fc\u30c9\u306e\u751f\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002
 
-# DO NOT localize the 2.2.7-b63 string - it is a token for an ant <replaceFilter>
-Driver.FilePrologComment = \u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001JavaTM Architecture for XML Binding(JAXB) Reference Implementation\u3001v2.2.7-b63\u306b\u3088\u3063\u3066\u751f\u6210\u3055\u308c\u307e\u3057\u305f \n<a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044 \n\u30bd\u30fc\u30b9\u30fb\u30b9\u30ad\u30fc\u30de\u306e\u518d\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306b\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u5909\u66f4\u306f\u5931\u308f\u308c\u307e\u3059\u3002 \n\u751f\u6210\u65e5: {0} \n
+# DO NOT localize the 2.2.8-b01 string - it is a token for an ant <replaceFilter>
+Driver.FilePrologComment = \u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001JavaTM Architecture for XML Binding(JAXB) Reference Implementation\u3001v2.2.8-b01\u306b\u3088\u3063\u3066\u751f\u6210\u3055\u308c\u307e\u3057\u305f \n<a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044 \n\u30bd\u30fc\u30b9\u30fb\u30b9\u30ad\u30fc\u30de\u306e\u518d\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306b\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u5909\u66f4\u306f\u5931\u308f\u308c\u307e\u3059\u3002 \n\u751f\u6210\u65e5: {0} \n
 
-Driver.Version = xjc 2.2.7-b63
+Driver.Version = xjc 2.2.8-b01
 
-Driver.FullVersion = xjc\u30d5\u30eb\u30fb\u30d0\u30fc\u30b8\u30e7\u30f3"2.2.7-b63-b19"
+Driver.FullVersion = xjc\u30d5\u30eb\u30fb\u30d0\u30fc\u30b8\u30e7\u30f3"2.2.8-b01-b28"
 
-Driver.BuildID = 2.2.7-b63
+Driver.BuildID = 2.2.8-b01
 
 # for JDK integration - include version in source zip
-jaxb.jdk.version=2.2.7-b63
+jaxb.jdk.version=2.2.8-b01
 
 # see java.text.SimpleDateFormat for format syntax
 # DO NOT LOCALIZE, Format should not be changed, English locale is used to transform this string into a real date.
--- a/src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_ko.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_ko.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -96,17 +96,17 @@
 
 Driver.FailedToGenerateCode = \ucf54\ub4dc \uc0dd\uc131\uc744 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
 
-# DO NOT localize the 2.2.7-b63 string - it is a token for an ant <replaceFilter>
-Driver.FilePrologComment = \uc774 \ud30c\uc77c\uc740 JAXB(JavaTM Architecture for XML Binding) \ucc38\uc870 \uad6c\ud604 2.2.7-b63 \ubc84\uc804\uc744 \ud1b5\ud574 \uc0dd\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \n<a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624. \n\uc774 \ud30c\uc77c\uc744 \uc218\uc815\ud558\uba74 \uc18c\uc2a4 \uc2a4\ud0a4\ub9c8\ub97c \uc7ac\ucef4\ud30c\uc77c\ud560 \ub54c \uc218\uc815 \uc0ac\ud56d\uc774 \uc190\uc2e4\ub429\ub2c8\ub2e4. \n\uc0dd\uc131 \ub0a0\uc9dc: {0} \n
+# DO NOT localize the 2.2.8-b01 string - it is a token for an ant <replaceFilter>
+Driver.FilePrologComment = \uc774 \ud30c\uc77c\uc740 JAXB(JavaTM Architecture for XML Binding) \ucc38\uc870 \uad6c\ud604 2.2.8-b01 \ubc84\uc804\uc744 \ud1b5\ud574 \uc0dd\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \n<a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624. \n\uc774 \ud30c\uc77c\uc744 \uc218\uc815\ud558\uba74 \uc18c\uc2a4 \uc2a4\ud0a4\ub9c8\ub97c \uc7ac\ucef4\ud30c\uc77c\ud560 \ub54c \uc218\uc815 \uc0ac\ud56d\uc774 \uc190\uc2e4\ub429\ub2c8\ub2e4. \n\uc0dd\uc131 \ub0a0\uc9dc: {0} \n
 
-Driver.Version = XJC 2.2.7-b63
+Driver.Version = XJC 2.2.8-b01
 
-Driver.FullVersion = XJC \uc815\uc2dd \ubc84\uc804 "2.2.7-b63-b19"
+Driver.FullVersion = XJC \uc815\uc2dd \ubc84\uc804 "2.2.8-b01-b28"
 
-Driver.BuildID = 2.2.7-b63
+Driver.BuildID = 2.2.8-b01
 
 # for JDK integration - include version in source zip
-jaxb.jdk.version=2.2.7-b63
+jaxb.jdk.version=2.2.8-b01
 
 # see java.text.SimpleDateFormat for format syntax
 # DO NOT LOCALIZE, Format should not be changed, English locale is used to transform this string into a real date.
--- a/src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_pt_BR.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_pt_BR.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -96,17 +96,17 @@
 
 Driver.FailedToGenerateCode = Falha ao produzir o c\u00f3digo.
 
-# DO NOT localize the 2.2.7-b63 string - it is a token for an ant <replaceFilter>
-Driver.FilePrologComment = Este arquivo foi gerado pela Arquitetura JavaTM para Implementa\u00e7\u00e3o de Refer\u00eancia (JAXB) de Bind XML, v2.2.7-b63 \nConsulte <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \nTodas as modifica\u00e7\u00f5es neste arquivo ser\u00e3o perdidas ap\u00f3s a recompila\u00e7\u00e3o do esquema de origem. \nGerado em: {0} \n
+# DO NOT localize the 2.2.8-b01 string - it is a token for an ant <replaceFilter>
+Driver.FilePrologComment = Este arquivo foi gerado pela Arquitetura JavaTM para Implementa\u00e7\u00e3o de Refer\u00eancia (JAXB) de Bind XML, v2.2.8-b01 \nConsulte <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \nTodas as modifica\u00e7\u00f5es neste arquivo ser\u00e3o perdidas ap\u00f3s a recompila\u00e7\u00e3o do esquema de origem. \nGerado em: {0} \n
 
-Driver.Version = xjc 2.2.7-b63
+Driver.Version = xjc 2.2.8-b01
 
-Driver.FullVersion = vers\u00e3o completa de xjc "2.2.7-b63-b19"
+Driver.FullVersion = vers\u00e3o completa de xjc "2.2.8-b01-b28"
 
-Driver.BuildID = 2.2.7-b63
+Driver.BuildID = 2.2.8-b01
 
 # for JDK integration - include version in source zip
-jaxb.jdk.version=2.2.7-b63
+jaxb.jdk.version=2.2.8-b01
 
 # see java.text.SimpleDateFormat for format syntax
 # DO NOT LOCALIZE, Format should not be changed, English locale is used to transform this string into a real date.
--- a/src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_zh_CN.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_zh_CN.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -96,17 +96,17 @@
 
 Driver.FailedToGenerateCode = \u65e0\u6cd5\u751f\u6210\u4ee3\u7801\u3002
 
-# DO NOT localize the 2.2.7-b63 string - it is a token for an ant <replaceFilter>
-Driver.FilePrologComment = \u6b64\u6587\u4ef6\u662f\u7531 JavaTM Architecture for XML Binding (JAXB) \u5f15\u7528\u5b9e\u73b0 v2.2.7-b63 \u751f\u6210\u7684\n\u8bf7\u8bbf\u95ee <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \n\u5728\u91cd\u65b0\u7f16\u8bd1\u6e90\u6a21\u5f0f\u65f6, \u5bf9\u6b64\u6587\u4ef6\u7684\u6240\u6709\u4fee\u6539\u90fd\u5c06\u4e22\u5931\u3002\n\u751f\u6210\u65f6\u95f4: {0} \n
+# DO NOT localize the 2.2.8-b01 string - it is a token for an ant <replaceFilter>
+Driver.FilePrologComment = \u6b64\u6587\u4ef6\u662f\u7531 JavaTM Architecture for XML Binding (JAXB) \u5f15\u7528\u5b9e\u73b0 v2.2.8-b01 \u751f\u6210\u7684\n\u8bf7\u8bbf\u95ee <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \n\u5728\u91cd\u65b0\u7f16\u8bd1\u6e90\u6a21\u5f0f\u65f6, \u5bf9\u6b64\u6587\u4ef6\u7684\u6240\u6709\u4fee\u6539\u90fd\u5c06\u4e22\u5931\u3002\n\u751f\u6210\u65f6\u95f4: {0} \n
 
-Driver.Version = xjc 2.2.7-b63
+Driver.Version = xjc 2.2.8-b01
 
-Driver.FullVersion = xjc \u5b8c\u6574\u7248\u672c "2.2.7-b63-b19"
+Driver.FullVersion = xjc \u5b8c\u6574\u7248\u672c "2.2.8-b01-b28"
 
-Driver.BuildID = 2.2.7-b63
+Driver.BuildID = 2.2.8-b01
 
 # for JDK integration - include version in source zip
-jaxb.jdk.version=2.2.7-b63
+jaxb.jdk.version=2.2.8-b01
 
 # see java.text.SimpleDateFormat for format syntax
 # DO NOT LOCALIZE, Format should not be changed, English locale is used to transform this string into a real date.
--- a/src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_zh_TW.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/tools/internal/xjc/MessageBundle_zh_TW.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -96,17 +96,17 @@
 
 Driver.FailedToGenerateCode = \u7121\u6cd5\u7522\u751f\u7a0b\u5f0f\u78bc.
 
-# DO NOT localize the 2.2.7-b63 string - it is a token for an ant <replaceFilter>
-Driver.FilePrologComment = \u6b64\u6a94\u6848\u662f\u7531 JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.7-b63 \u6240\u7522\u751f \n\u8acb\u53c3\u95b1 <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \n\u4e00\u65e6\u91cd\u65b0\u7de8\u8b6f\u4f86\u6e90\u7db1\u8981, \u5c0d\u6b64\u6a94\u6848\u6240\u505a\u7684\u4efb\u4f55\u4fee\u6539\u90fd\u5c07\u6703\u907a\u5931. \n\u7522\u751f\u6642\u9593: {0} \n
+# DO NOT localize the 2.2.8-b01 string - it is a token for an ant <replaceFilter>
+Driver.FilePrologComment = \u6b64\u6a94\u6848\u662f\u7531 JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b01 \u6240\u7522\u751f \n\u8acb\u53c3\u95b1 <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \n\u4e00\u65e6\u91cd\u65b0\u7de8\u8b6f\u4f86\u6e90\u7db1\u8981, \u5c0d\u6b64\u6a94\u6848\u6240\u505a\u7684\u4efb\u4f55\u4fee\u6539\u90fd\u5c07\u6703\u907a\u5931. \n\u7522\u751f\u6642\u9593: {0} \n
 
-Driver.Version = xjc 2.2.7-b63
+Driver.Version = xjc 2.2.8-b01
 
-Driver.FullVersion = xjc \u5b8c\u6574\u7248\u672c "2.2.7-b63-b19"
+Driver.FullVersion = xjc \u5b8c\u6574\u7248\u672c "2.2.8-b01-b28"
 
-Driver.BuildID = 2.2.7-b63
+Driver.BuildID = 2.2.8-b01
 
 # for JDK integration - include version in source zip
-jaxb.jdk.version=2.2.7-b63
+jaxb.jdk.version=2.2.8-b01
 
 # see java.text.SimpleDateFormat for format syntax
 # DO NOT LOCALIZE, Format should not be changed, English locale is used to transform this string into a real date.
--- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/ModelBuilder.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/ModelBuilder.java	Wed Jun 12 14:47:09 2013 +0100
@@ -289,12 +289,23 @@
         String pkg = nav.getPackageName(clazz);
         if (!registries.containsKey(pkg)) {
             // insert the package's object factory
-            C c = nav.findClass(pkg + ".ObjectFactory", clazz);
+            C c = loadObjectFactory(clazz, pkg);
             if (c != null)
                 addRegistry(c, p);
         }
     }
 
+    private C loadObjectFactory(C clazz, String pkg) {
+        C c;
+        try {
+            c = nav.findClass(pkg + ".ObjectFactory", clazz);
+        } catch (SecurityException ignored) {
+            // treat SecurityException in same way as ClassNotFoundException in this case
+            c = null;
+        }
+        return c;
+    }
+
     /**
      * Getting parametrized classes of {@code JAXBElement<...>} property
      * @param p property which parametrized types we will try to get
--- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/JAXBContextImpl.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/JAXBContextImpl.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -894,19 +894,6 @@
         }
     }
 
-    /**
-     * Used for testing.
-     */
-    public SchemaOutputResolver createTestResolver() {
-        return new SchemaOutputResolver() {
-            public Result createOutput(String namespaceUri, String suggestedFileName) {
-                SAXResult r = new SAXResult(new DefaultHandler());
-                r.setSystemId(suggestedFileName);
-                return r;
-            }
-        };
-    }
-
     @Override
     public <T> Binder<T> createBinder(Class<T> domType) {
         if(domType==Node.class)
--- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/schemagen/XmlSchemaGenerator.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/schemagen/XmlSchemaGenerator.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -278,6 +278,7 @@
     public void add( ElementInfo<T,C> elem ) {
         assert elem!=null;
 
+        @SuppressWarnings("UnusedAssignment")
         boolean nillable = false; // default value
 
         QName name = elem.getElementName();
@@ -1162,9 +1163,8 @@
                 return true;
             }
 
-            // there's a circular reference from an anonymous subtype to a global element
-            if ((ci != null) && ((targetTagName != null) && (te.getScope() == null))) {
-                if (targetTagName.getLocalPart().equals(tn.getLocalPart())) {
+            if ((ci != null) && ((targetTagName != null) && (te.getScope() == null) && (targetTagName.getNamespaceURI() == null))) {
+                if (targetTagName.equals(tn)) {
                     return true;
                 }
             }
--- a/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/CommonResourceBundle.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/CommonResourceBundle.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -35,7 +35,7 @@
 public class CommonResourceBundle extends AbstractResourceBundle {
 
     public static final String BASE_NAME = "com.sun.xml.internal.fastinfoset.resources.ResourceBundle";
-    private static CommonResourceBundle instance = null;
+    private static volatile CommonResourceBundle instance = null;
     private static Locale locale = null;
     private ResourceBundle bundle = null;
 
@@ -56,8 +56,7 @@
                 //**need to know where to get the locale
                 //String localeString = CommonProperties.getInstance()
                 //                  .getProperty("omar.common.locale");
-                String localeString = null;
-                locale = parseLocale(localeString);
+                locale = parseLocale(/*localeString*/null);
             }
         }
 
--- a/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/Decoder.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/Decoder.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -431,7 +431,7 @@
         final int noOfItems = decodeNumberOfItemsOfSequence();
 
         for (int i = 0; i < noOfItems; i++) {
-            String URI = decodeNonEmptyOctetStringOnSecondBitAsUtf8String();
+            /*String URI = */decodeNonEmptyOctetStringOnSecondBitAsUtf8String();
 
             decodeNonEmptyOctetStringLengthOnSecondBit();
             ensureOctetBufferSize();
@@ -1817,7 +1817,7 @@
             second.getChars(0, l2, _charBuffer, l1 + 1);
             return new String(_charBuffer, 0, total);
         } else {
-            StringBuffer b = new StringBuffer(new String(first));
+            StringBuilder b = new StringBuilder(new String(first));
             b.append(':');
             b.append(second);
             return b.toString();
@@ -1992,10 +1992,12 @@
     static public boolean isFastInfosetDocument(InputStream s) throws IOException {
         // TODO
         // Check for <?xml declaration with 'finf' encoding
+        final int headerSize = 4;
 
-        final byte[] header = new byte[4];
-        s.read(header);
-        if (header[0] != EncodingConstants.BINARY_HEADER[0] ||
+        final byte[] header = new byte[headerSize];
+        final int readBytesCount = s.read(header);
+        if (readBytesCount < headerSize ||
+                header[0] != EncodingConstants.BINARY_HEADER[0] ||
                 header[1] != EncodingConstants.BINARY_HEADER[1] ||
                 header[2] != EncodingConstants.BINARY_HEADER[2] ||
                 header[3] != EncodingConstants.BINARY_HEADER[3]) {
--- a/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/algorithm/BASE64EncodingAlgorithm.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/algorithm/BASE64EncodingAlgorithm.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -137,7 +137,7 @@
             return new byte[0];
         }
 
-        StringBuffer encodedValue = removeWhitespace(ch, start, length);
+        StringBuilder encodedValue = removeWhitespace(ch, start, length);
         int encodedLength = encodedValue.length();
         if (encodedLength == 0) {
             return new byte[0];
--- a/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/algorithm/BooleanEncodingAlgorithm.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/algorithm/BooleanEncodingAlgorithm.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -259,7 +259,7 @@
      * @param array The array
      *
      */
-    private final boolean[] generateArrayFromList(List array) {
+    private boolean[] generateArrayFromList(List array) {
         boolean[] bdata = new boolean[array.size()];
         for (int i = 0; i < bdata.length; i++) {
             bdata[i] = ((Boolean)array.get(i)).booleanValue();
--- a/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/algorithm/BuiltInEncodingAlgorithm.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/algorithm/BuiltInEncodingAlgorithm.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -61,8 +61,8 @@
             wl.word(i, cb.length());
     }
 
-    public StringBuffer removeWhitespace(char[] ch, int start, int length) {
-        StringBuffer buf = new StringBuffer();
+    public StringBuilder removeWhitespace(char[] ch, int start, int length) {
+        StringBuilder buf = new StringBuilder();
         int firstNonWS = 0;
         int idx = 0;
         for (; idx < length; ++idx) {
--- a/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/algorithm/FloatEncodingAlgorithm.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/algorithm/FloatEncodingAlgorithm.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * 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
--- a/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/algorithm/HexadecimalEncodingAlgorithm.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/algorithm/HexadecimalEncodingAlgorithm.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -88,7 +88,7 @@
             return new byte[0];
         }
 
-        StringBuffer encodedValue = removeWhitespace(ch, start, length);
+        StringBuilder encodedValue = removeWhitespace(ch, start, length);
         int encodedLength = encodedValue.length();
         if (encodedLength == 0) {
             return new byte[0];
--- a/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/dom/DOMDocumentParser.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/dom/DOMDocumentParser.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -272,7 +272,7 @@
         }
 
         if ((_b & EncodingConstants.DOCUMENT_CHARACTER_ENCODING_SCHEME) > 0) {
-            String version = decodeCharacterEncodingScheme();
+            /*String version = */decodeCharacterEncodingScheme();
             /*
              * TODO
              * how to report the character encoding scheme?
@@ -280,7 +280,7 @@
         }
 
         if ((_b & EncodingConstants.DOCUMENT_STANDALONE_FLAG) > 0) {
-            boolean standalone = (read() > 0) ? true : false ;
+            /*boolean standalone = (*/read()/* > 0) ? true : false*/ ;
             /*
              * TODO
              * how to report the standalone flag?
--- a/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/resources/ResourceBundle.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/resources/ResourceBundle.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# 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
--- a/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/sax/AttributesHolder.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/sax/AttributesHolder.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * 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
--- a/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/sax/SAXDocumentParser.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/sax/SAXDocumentParser.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -850,7 +850,7 @@
         }
 
         if ((_b & EncodingConstants.DOCUMENT_CHARACTER_ENCODING_SCHEME) > 0) {
-            String characterEncodingScheme = decodeCharacterEncodingScheme();
+            /*String characterEncodingScheme = */decodeCharacterEncodingScheme();
             /*
              * TODO
              * how to report the character encoding scheme?
@@ -858,7 +858,7 @@
         }
 
         if ((_b & EncodingConstants.DOCUMENT_STANDALONE_FLAG) > 0) {
-            boolean standalone = (read() > 0) ? true : false ;
+            /*boolean standalone = (*/read()/* > 0) ? true : false*/ ;
             /*
              * TODO
              * how to report the standalone flag?
--- a/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/stax/StAXDocumentParser.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/stax/StAXDocumentParser.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -499,7 +499,7 @@
         }
     }
 
-    private final void popStack() {
+    private void popStack() {
         // Pop information off the stack
         _qualifiedName = _qNameStack[_stackCount];
         _currentNamespaceAIIsStart = _namespaceAIIsStartStack[_stackCount];
@@ -522,8 +522,6 @@
             throw new XMLStreamException(CommonResourceBundle.getInstance().getString("message.namespaceURINotMatch", new Object[]{namespaceURI}));
         if(localName != null && !localName.equals(getLocalName()))
             throw new XMLStreamException(CommonResourceBundle.getInstance().getString("message.localNameNotMatch", new Object[]{localName}));
-
-        return;
     }
 
     /** Reads the content of a text-only element. Precondition:
@@ -551,7 +549,7 @@
                     CommonResourceBundle.getInstance().getString("message.mustBeOnSTARTELEMENT"), getLocation());
         }
         int eventType = getEventType();
-        StringBuffer content = new StringBuffer();
+        StringBuilder content = new StringBuilder();
         while(eventType != END_ELEMENT ) {
             if(eventType == CHARACTERS
                     || eventType == CDATA
@@ -1624,6 +1622,11 @@
         ? decodeIdentifyingNonEmptyStringOnFirstBit(_v.otherURI) : "";
         String public_identifier = ((b & EncodingConstants.UNEXPANDED_ENTITY_PUBLIC_IDENTIFIER_FLAG) > 0)
         ? decodeIdentifyingNonEmptyStringOnFirstBit(_v.otherURI) : "";
+
+        if (logger.isLoggable(Level.FINEST)) {
+            logger.log(Level.FINEST, "processUnexpandedEntityReference: entity_reference_name={0} system_identifier={1}public_identifier={2}",
+                    new Object[]{entity_reference_name, system_identifier, public_identifier});
+        }
     }
 
     protected final void processCIIEncodingAlgorithm(boolean addToTable) throws FastInfosetException, IOException {
--- a/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/stax/events/StartElementEvent.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/stax/events/StartElementEvent.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -187,14 +187,16 @@
     }
 
     public String toString() {
-        String s = "<" + nameAsString();
+        final StringBuilder sb = new StringBuilder(64);
+
+        sb.append('<').append(nameAsString());
 
         if(_attributes != null){
             Iterator it = this.getAttributes();
             Attribute attr = null;
             while(it.hasNext()){
                 attr = (Attribute)it.next();
-                s = s + " " + attr.toString();
+                sb.append(' ').append(attr.toString());
             }
         }
 
@@ -203,11 +205,11 @@
             Namespace attr = null;
             while(it.hasNext()){
                 attr = (Namespace)it.next();
-                s = s + " " + attr.toString();
+                sb.append(' ').append(attr.toString());
             }
         }
-        s = s + ">";
-        return s;
+        sb.append('>');
+        return sb.toString();
     }
 
     /** Return this event as String
--- a/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/stax/factory/StAXOutputFactory.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/stax/factory/StAXOutputFactory.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -69,28 +69,53 @@
     }
 
     public XMLStreamWriter createXMLStreamWriter(Result result) throws XMLStreamException {
-        if(result instanceof StreamResult){
-            StreamResult streamResult = (StreamResult)result;
-            if( streamResult.getWriter() != null){
+        if (result instanceof StreamResult) {
+            StreamResult streamResult = (StreamResult) result;
+            if (streamResult.getWriter() != null) {
                 return createXMLStreamWriter(streamResult.getWriter());
-            }else if(streamResult.getOutputStream() != null ){
+            } else if (streamResult.getOutputStream() != null) {
                 return createXMLStreamWriter(streamResult.getOutputStream());
-            }else if(streamResult.getSystemId()!= null){
-                try{
-                    FileWriter writer = new FileWriter(new File(streamResult.getSystemId()));
-                    return createXMLStreamWriter(writer);
-                }catch(IOException ie){
+            } else if (streamResult.getSystemId() != null) {
+                FileWriter writer = null;
+                boolean isError = true;
+
+                try {
+                    writer = new FileWriter(new File(streamResult.getSystemId()));
+                    final XMLStreamWriter streamWriter = createXMLStreamWriter(writer);
+                    isError = false;
+
+                    return streamWriter;
+                } catch (IOException ie) {
                     throw new XMLStreamException(ie);
+                } finally {
+                    if (isError && writer != null) {
+                        try {
+                            writer.close();
+                        } catch (IOException ignored) {
+                        }
+                    }
                 }
             }
-        }
-        else {
-            try{
+        } else {
+            FileWriter writer = null;
+            boolean isError = true;
+
+            try {
                 //xxx: should we be using FileOutputStream - nb.
-                FileWriter writer = new FileWriter(new File(result.getSystemId()));
-                return createXMLStreamWriter(writer);
-            }catch(IOException ie){
+                writer = new FileWriter(new File(result.getSystemId()));
+                final XMLStreamWriter streamWriter = createXMLStreamWriter(writer);
+                isError = false;
+
+                return streamWriter;
+            } catch (IOException ie) {
                 throw new XMLStreamException(ie);
+            } finally {
+                if (isError && writer != null) {
+                    try {
+                        writer.close();
+                    } catch (IOException ignored) {
+                    }
+                }
             }
         }
         throw new java.lang.UnsupportedOperationException();
--- a/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/tools/SAXEventSerializer.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/tools/SAXEventSerializer.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -397,11 +397,27 @@
         public int compareTo(Object o) {
             try {
                 return qName.compareTo(((AttributeValueHolder) o).qName);
-            }
-            catch (Exception e) {
+            } catch (Exception e) {
                 throw new RuntimeException(CommonResourceBundle.getInstance().getString("message.AttributeValueHolderExpected"));
             }
         }
+
+        @Override
+        public boolean equals(Object o) {
+            try {
+                return (o instanceof AttributeValueHolder) &&
+                        qName.equals(((AttributeValueHolder) o).qName);
+            } catch (Exception e) {
+                throw new RuntimeException(CommonResourceBundle.getInstance().getString("message.AttributeValueHolderExpected"));
+            }
+        }
+
+        @Override
+        public int hashCode() {
+            int hash = 7;
+            hash = 97 * hash + (this.qName != null ? this.qName.hashCode() : 0);
+            return hash;
+        }
     }
 
 }
--- a/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/tools/TransformInputOutput.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset/tools/TransformInputOutput.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -115,7 +115,7 @@
         String[] fileSplit = fileStr.split("/");
 
         int diff;
-        for(diff = 0; diff<oldwdSplit.length & diff<fileSplit.length; diff++) {
+        for (diff = 0; diff < oldwdSplit.length && diff < fileSplit.length; diff++) {
             if (!oldwdSplit[diff].equals(fileSplit[diff])) {
                 break;
             }
--- a/src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/DataHead.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/DataHead.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -103,8 +103,8 @@
     }
 
     void close() {
+        head = tail = null;
         if (dataFile != null) {
-            head = tail = null;
             dataFile.close();
         }
     }
--- a/src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/MemoryData.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/MemoryData.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -78,20 +78,22 @@
             try {
                 String prefix = config.getTempFilePrefix();
                 String suffix = config.getTempFileSuffix();
-                File dir = config.getTempDir();
-                File tempFile = (dir == null)
-                        ? File.createTempFile(prefix, suffix)
-                        : File.createTempFile(prefix, suffix, dir);
+                File tempFile = TempFiles.createTempFile(prefix, suffix, config.getTempDir());
+                // delete the temp file when VM exits as a last resort for file clean up
+                tempFile.deleteOnExit();
+                if (LOGGER.isLoggable(Level.FINE)) {
+                    LOGGER.log(Level.FINE, "Created temp file = {0}", tempFile);
+                }
                 // delete the temp file when VM exits as a last resort for file clean up
                 tempFile.deleteOnExit();
                 if (LOGGER.isLoggable(Level.FINE)) {LOGGER.log(Level.FINE, "Created temp file = {0}", tempFile);}
                 dataHead.dataFile = new DataFile(tempFile);
-            } catch(IOException ioe) {
+            } catch (IOException ioe) {
                 throw new MIMEParsingException(ioe);
             }
 
             if (dataHead.head != null) {
-                for(Chunk c=dataHead.head; c != null; c=c.next) {
+                for (Chunk c = dataHead.head; c != null; c = c.next) {
                     long pointer = c.data.writeTo(dataHead.dataFile);
                     c.data = new FileData(dataHead.dataFile, pointer, len);
                 }
@@ -101,4 +103,5 @@
             return new MemoryData(buf, config);
         }
     }
+
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/mimepull/TempFiles.java	Wed Jun 12 14:47:09 2013 +0100
@@ -0,0 +1,144 @@
+/*
+ * 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.xml.internal.org.jvnet.mimepull;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Array;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Helper utility to support jdk <= jdk1.6. After jdk1.6 EOL reflection can be removed and API can be used directly.
+ */
+class TempFiles {
+
+    private static final Logger LOGGER = Logger.getLogger(TempFiles.class.getName());
+
+    private static final Class<?> CLASS_FILES;
+    private static final Class<?> CLASS_PATH;
+    private static final Class<?> CLASS_FILE_ATTRIBUTE;
+    private static final Class<?> CLASS_FILE_ATTRIBUTES;
+    private static final Method METHOD_FILE_TO_PATH;
+    private static final Method METHOD_FILES_CREATE_TEMP_FILE;
+    private static final Method METHOD_FILES_CREATE_TEMP_FILE_WITHPATH;
+
+    private static final Method METHOD_PATH_TO_FILE;
+
+    private static boolean useJdk6API;
+
+    static {
+        useJdk6API = isJdk6();
+
+        CLASS_FILES = safeGetClass("java.nio.file.Files");
+        CLASS_PATH = safeGetClass("java.nio.file.Path");
+        CLASS_FILE_ATTRIBUTE = safeGetClass("java.nio.file.attribute.FileAttribute");
+        CLASS_FILE_ATTRIBUTES = safeGetClass("[Ljava.nio.file.attribute.FileAttribute;");
+        METHOD_FILE_TO_PATH = safeGetMethod(File.class, "toPath");
+        METHOD_FILES_CREATE_TEMP_FILE = safeGetMethod(CLASS_FILES, "createTempFile", String.class, String.class, CLASS_FILE_ATTRIBUTES);
+        METHOD_FILES_CREATE_TEMP_FILE_WITHPATH = safeGetMethod(CLASS_FILES, "createTempFile", CLASS_PATH, String.class, String.class, CLASS_FILE_ATTRIBUTES);
+        METHOD_PATH_TO_FILE = safeGetMethod(CLASS_PATH, "toFile");
+    }
+
+    private static boolean isJdk6() {
+        String javaVersion = System.getProperty("java.version");
+        LOGGER.log(Level.FINEST, "Detected java version = {0}", javaVersion);
+        return javaVersion.startsWith("1.6.");
+    }
+
+    private static Class<?> safeGetClass(String className) {
+        // it is jdk 6 or something failed already before
+        if (useJdk6API) return null;
+        try {
+            return Class.forName(className);
+        } catch (ClassNotFoundException e) {
+            LOGGER.log(Level.SEVERE, "Exception cought", e);
+            LOGGER.log(Level.WARNING, "Class {0} not found. Temp files will be created using old java.io API.", className);
+            useJdk6API = true;
+            return null;
+        }
+    }
+
+    private static Method safeGetMethod(Class<?> clazz, String methodName, Class<?>... parameterTypes) {
+        // it is jdk 6 or something failed already before
+        if (useJdk6API) return null;
+        try {
+            return clazz.getMethod(methodName, parameterTypes);
+        } catch (NoSuchMethodException e) {
+            LOGGER.log(Level.SEVERE, "Exception cought", e);
+            LOGGER.log(Level.WARNING, "Method {0} not found. Temp files will be created using old java.io API.", methodName);
+            useJdk6API = true;
+            return null;
+        }
+    }
+
+
+    static Object toPath(File f) throws InvocationTargetException, IllegalAccessException {
+        return METHOD_FILE_TO_PATH.invoke(f);
+    }
+
+    static File toFile(Object path) throws InvocationTargetException, IllegalAccessException {
+        return (File) METHOD_PATH_TO_FILE.invoke(path);
+    }
+
+    static File createTempFile(String prefix, String suffix, File dir) throws IOException {
+
+        if (useJdk6API) {
+            LOGGER.log(Level.FINEST, "Jdk6 detected, temp file (prefix:{0}, suffix:{1}) being created using old java.io API.", new Object[]{prefix, suffix});
+            return File.createTempFile(prefix, suffix, dir);
+
+        } else {
+
+            try {
+                if (dir != null) {
+                    Object path = toPath(dir);
+                    LOGGER.log(Level.FINEST, "Temp file (path: {0}, prefix:{1}, suffix:{2}) being created using NIO API.", new Object[]{dir.getAbsolutePath(), prefix, suffix});
+                    return toFile(METHOD_FILES_CREATE_TEMP_FILE_WITHPATH.invoke(null, path, prefix, suffix, Array.newInstance(CLASS_FILE_ATTRIBUTE, 0)));
+                } else {
+                    LOGGER.log(Level.FINEST, "Temp file (prefix:{0}, suffix:{1}) being created using NIO API.", new Object[]{prefix, suffix});
+                    return toFile(METHOD_FILES_CREATE_TEMP_FILE.invoke(null, prefix, suffix, Array.newInstance(CLASS_FILE_ATTRIBUTE, 0)));
+                }
+
+            } catch (IllegalAccessException e) {
+                LOGGER.log(Level.SEVERE, "Exception caught", e);
+                LOGGER.log(Level.WARNING, "Error invoking java.nio API, temp file (path: {0}, prefix:{1}, suffix:{2}) being created using old java.io API.",
+                        new Object[]{dir != null ? dir.getAbsolutePath() : null, prefix, suffix});
+                return File.createTempFile(prefix, suffix, dir);
+
+            } catch (InvocationTargetException e) {
+                LOGGER.log(Level.SEVERE, "Exception caught", e);
+                LOGGER.log(Level.WARNING, "Error invoking java.nio API, temp file (path: {0}, prefix:{1}, suffix:{2}) being created using old java.io API.",
+                        new Object[]{dir != null ? dir.getAbsolutePath() : null, prefix, suffix});
+                return File.createTempFile(prefix, suffix, dir);
+            }
+        }
+
+    }
+
+
+}
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/api/databinding/DatabindingConfig.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/api/databinding/DatabindingConfig.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -52,18 +52,10 @@
     protected Class contractClass;
         protected Class endpointClass;
         protected Set<Class> additionalValueTypes = new HashSet<Class>();
-//      protected Set<SchemaInfo> schemaInfo;
-//      protected MappingInfo defaultMappingInfo = new MappingInfo();
-//      protected MappingInfo overrideMappingInfo = new MappingInfo();
         protected MappingInfo mappingInfo = new MappingInfo();
-//      protected Definition wsdl;
         protected URL wsdlURL;
         protected ClassLoader classLoader;
-//      protected QName serviceName;
-//      protected BindingID bindingId;
         protected Iterable<WebServiceFeature> features;
-        //TODO WSBinding isn't it BindingID + features?
-        //On the EndpointFactory.createEndpoint path, WSBinding could be created from DeploymentDescriptorParser.createBinding
         protected WSBinding wsBinding;
         protected WSDLPort wsdlPort;
         protected MetadataReader metadataReader;
@@ -71,19 +63,6 @@
     protected Source wsdlSource;
     protected EntityResolver entityResolver;
 
-//      public MappingInfo getDefaultMappingInfo() {
-//              return defaultMappingInfo;
-//      }
-//      public void setDefaultMappingInfo(MappingInfo defaultMappingInfo) {
-//              this.defaultMappingInfo = defaultMappingInfo;
-//      }
-//      public MappingInfo getOverrideMappingInfo() {
-//              return overrideMappingInfo;
-//      }
-//      public void setOverrideMappingInfo(MappingInfo overrideMappingInfo) {
-//              this.overrideMappingInfo = overrideMappingInfo;
-//      }
-
         public Class getContractClass() {
                 return contractClass;
         }
@@ -114,19 +93,8 @@
         public void setClassLoader(ClassLoader classLoader) {
                 this.classLoader = classLoader;
         }
-//      public QName getServiceName() {
-//              return serviceName;
-//      }
-//      public void setServiceName(QName serviceName) {
-//              this.serviceName = serviceName;
-//      }
-//      public BindingID getBindingId() {
-//              return bindingId;
-//      }
-//      public void setBindingId(BindingID bindingId) {
-//              this.bindingId = bindingId;
-//      }
         public Iterable<WebServiceFeature> getFeatures() {
+            if (features == null && wsBinding != null) return wsBinding.getFeatures();
                 return features;
         }
         public void setFeatures(WebServiceFeature[] features) {
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/api/message/saaj/SAAJFactory.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/api/message/saaj/SAAJFactory.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -173,7 +173,13 @@
      * @throws SOAPException if SAAJ processing fails
      */
     public static SAAJMessage read(Packet packet) throws SOAPException {
-        for (SAAJFactory s : ServiceFinder.find(SAAJFactory.class)) {
+        // Use the Component from the Packet if it exists.  Note the logic
+        // in the ServiceFinder is such that find(Class) is not equivalent
+        // to find (Class, null), so the ternary operator is needed.
+        ServiceFinder<SAAJFactory> factories = (packet.component != null ?
+                ServiceFinder.find(SAAJFactory.class, packet.component) :
+                ServiceFinder.find(SAAJFactory.class));
+        for (SAAJFactory s : factories) {
             SAAJMessage msg = s.readAsSAAJ(packet);
             if (msg != null) return msg;
         }
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/api/pipe/Fiber.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/api/pipe/Fiber.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1027,12 +1027,12 @@
             }
 
             try {
-                boolean needsToReenter = false;
+                boolean needsToReenter;
                 do {
                     // if interceptors are set, go through the interceptors.
                     if (ints == null) {
                         this.next = next;
-                        if (__doRun(isRequireUnlock, ints)) {
+                        if (__doRun(isRequireUnlock, null /*ints*/)) {
                             return true;
                         }
                     } else {
@@ -1357,6 +1357,7 @@
      */
     public static
     @NotNull
+    @SuppressWarnings({"null", "ConstantConditions"})
     Fiber current() {
         Fiber fiber = CURRENT_FIBER.get();
         if (fiber == null)
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/api/streaming/XMLStreamWriterFactory.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/api/streaming/XMLStreamWriterFactory.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -42,6 +42,7 @@
 import java.io.StringWriter;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.util.logging.Level;
 import java.util.logging.Logger;
 
 /**
@@ -53,6 +54,7 @@
  *
  * @author Kohsuke Kawaguchi
  */
+@SuppressWarnings("StaticNonFinalUsedInInitialization")
 public abstract class XMLStreamWriterFactory {
 
     private static final Logger LOGGER = Logger.getLogger(XMLStreamWriterFactory.class.getName());
@@ -80,8 +82,19 @@
 
         // this system property can be used to disable the pooling altogether,
         // in case someone hits an issue with pooling in the production system.
-        if(!Boolean.getBoolean(XMLStreamWriterFactory.class.getName()+".noPool"))
-            f = Zephyr.newInstance(xof);
+        if (!Boolean.getBoolean(XMLStreamWriterFactory.class.getName()+".noPool")) {
+            try {
+                Class<?> clazz = xof.createXMLStreamWriter(new StringWriter()).getClass();
+                if (clazz.getName().startsWith("com.sun.xml.internal.stream.")) {
+                    f =  new Zephyr(xof,clazz);
+                }
+            } catch (XMLStreamException ex) {
+                Logger.getLogger(XMLStreamWriterFactory.class.getName()).log(Level.INFO, null, ex);
+            } catch (NoSuchMethodException ex) {
+                Logger.getLogger(XMLStreamWriterFactory.class.getName()).log(Level.INFO, null, ex);
+            }
+        }
+
         if(f==null) {
             // is this Woodstox?
             if(xof.getClass().getName().equals("com.ctc.wstx.stax.WstxOutputFactory"))
@@ -91,7 +104,9 @@
             f = new Default(xof);
 
         theInstance = f;
-        LOGGER.fine("XMLStreamWriterFactory instance is = "+theInstance);
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.log(Level.FINE, "XMLStreamWriterFactory instance is = {0}", f);
+        }
     }
 
     /**
@@ -165,6 +180,7 @@
      * @param f
      *      must not be null.
      */
+    @SuppressWarnings({"null", "ConstantConditions"})
     public static void set(@NotNull XMLStreamWriterFactory f) {
         if(f==null) throw new IllegalArgumentException();
         theInstance = f;
@@ -220,10 +236,12 @@
             this.xof = xof;
         }
 
+        @Override
         public XMLStreamWriter doCreate(OutputStream out) {
             return doCreate(out,"UTF-8");
         }
 
+        @Override
         public synchronized XMLStreamWriter doCreate(OutputStream out, String encoding) {
             try {
                 XMLStreamWriter writer = xof.createXMLStreamWriter(out,encoding);
@@ -233,6 +251,7 @@
             }
         }
 
+        @Override
         public void doRecycle(XMLStreamWriter r) {
             // no recycling
         }
@@ -284,10 +303,12 @@
             return sr;
         }
 
+        @Override
         public XMLStreamWriter doCreate(OutputStream out) {
             return doCreate(out,"UTF-8");
         }
 
+        @Override
         public XMLStreamWriter doCreate(OutputStream out, String encoding) {
             XMLStreamWriter xsw = fetch();
             if(xsw!=null) {
@@ -311,6 +332,7 @@
             return new HasEncodingWriter(xsw, encoding);
         }
 
+        @Override
         public void doRecycle(XMLStreamWriter r) {
             if (r instanceof HasEncodingWriter) {
                 r = ((HasEncodingWriter)r).getWriter();
@@ -340,10 +362,12 @@
             this.xof = xof;
         }
 
+        @Override
         public XMLStreamWriter doCreate(OutputStream out) {
             return doCreate(out, SOAPBindingCodec.UTF8_ENCODING);
         }
 
+        @Override
         public XMLStreamWriter doCreate(OutputStream out, String encoding) {
             try {
                 XMLStreamWriter writer = xof.createXMLStreamWriter(out,encoding);
@@ -353,6 +377,7 @@
             }
         }
 
+        @Override
         public void doRecycle(XMLStreamWriter r) {
             // no recycling
         }
@@ -367,6 +392,7 @@
             this.encoding = encoding;
         }
 
+        @Override
         public String getEncoding() {
             return encoding;
         }
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/assembler/MetroConfigLoader.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/assembler/MetroConfigLoader.java	Wed Jun 12 14:47:09 2013 +0100
@@ -42,10 +42,13 @@
 import javax.xml.stream.XMLInputFactory;
 import javax.xml.ws.WebServiceException;
 import java.lang.reflect.Method;
+import java.lang.reflect.ReflectPermission;
 import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
+import java.security.*;
+import java.util.PropertyPermission;
 import java.util.logging.Level;
 
 /**
@@ -235,7 +238,7 @@
     private static MetroConfig loadMetroConfig(@NotNull URL resourceUrl) {
         MetroConfig result = null;
         try {
-            JAXBContext jaxbContext = JAXBContext.newInstance(MetroConfig.class.getPackage().getName());
+            JAXBContext jaxbContext = createJAXBContext();
             Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
             XMLInputFactory factory = XmlUtil.newXMLInputFactory(true);
             final JAXBElement<MetroConfig> configElement = unmarshaller.unmarshal(factory.createXMLStreamReader(resourceUrl.openStream()), MetroConfig.class);
@@ -246,6 +249,38 @@
         return result;
     }
 
+    private static JAXBContext createJAXBContext() throws Exception {
+        if (isJDKInternal()) {
+            // since jdk classes are repackaged, extra privilege is necessary to create JAXBContext
+            return AccessController.doPrivileged(
+                    new PrivilegedExceptionAction<JAXBContext>() {
+                        @Override
+                        public JAXBContext run() throws Exception {
+                            return JAXBContext.newInstance(MetroConfig.class.getPackage().getName());
+                        }
+                    }, createSecurityContext()
+            );
+        } else {
+            // usage from JAX-WS/Metro/Glassfish
+            return JAXBContext.newInstance(MetroConfig.class.getPackage().getName());
+        }
+    }
+
+    private static AccessControlContext createSecurityContext() {
+        PermissionCollection perms = new Permissions();
+        perms.add(new RuntimePermission("accessClassInPackage.com" + ".sun.xml.internal.ws.runtime.config")); // avoid repackaging
+        perms.add(new ReflectPermission("suppressAccessChecks"));
+        return new AccessControlContext(
+                new ProtectionDomain[]{
+                        new ProtectionDomain(null, perms),
+                });
+    }
+
+    private static boolean isJDKInternal() {
+        // avoid "string repackaging"
+        return MetroConfigLoader.class.getName().startsWith("com." + "sun.xml.internal.ws");
+    }
+
     private static class MetroConfigUrlLoader extends ResourceLoader {
 
         Container container; // TODO remove the field together with the code path using it (see below)
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/assembler/TubeCreator.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/assembler/TubeCreator.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -45,11 +45,17 @@
     private final String msgDumpPropertyBase;
 
     TubeCreator(TubeFactoryConfig config, ClassLoader tubeFactoryClassLoader) {
+        String className = config.getClassName();
         try {
-            Class<?> factoryClass = Class.forName(config.getClassName(), true, tubeFactoryClassLoader);
+            Class<?> factoryClass;
+            if (isJDKInternal(className)) {
+                factoryClass = Class.forName(className, true, null);
+            } else {
+                factoryClass = Class.forName(className, true, tubeFactoryClassLoader);
+            }
             if (TubeFactory.class.isAssignableFrom(factoryClass)) {
+                // We can suppress "unchecked" warning here as we are checking for the correct type in the if statement above
                 @SuppressWarnings("unchecked")
-                // We can suppress "unchecked" warning here as we are checking for the correct type in the if statement above
                 Class<TubeFactory> typedClass = (Class<TubeFactory>) factoryClass;
                 this.factory = typedClass.newInstance();
                 this.msgDumpPropertyBase = this.factory.getClass().getName() + ".dump";
@@ -57,11 +63,11 @@
                 throw new RuntimeException(TubelineassemblyMessages.MASM_0015_CLASS_DOES_NOT_IMPLEMENT_INTERFACE(factoryClass.getName(), TubeFactory.class.getName()));
             }
         } catch (InstantiationException ex) {
-            throw LOGGER.logSevereException(new RuntimeException(TubelineassemblyMessages.MASM_0016_UNABLE_TO_INSTANTIATE_TUBE_FACTORY(config.getClassName()), ex), true);
+            throw LOGGER.logSevereException(new RuntimeException(TubelineassemblyMessages.MASM_0016_UNABLE_TO_INSTANTIATE_TUBE_FACTORY(className), ex), true);
         } catch (IllegalAccessException ex) {
-            throw LOGGER.logSevereException(new RuntimeException(TubelineassemblyMessages.MASM_0016_UNABLE_TO_INSTANTIATE_TUBE_FACTORY(config.getClassName()), ex), true);
+            throw LOGGER.logSevereException(new RuntimeException(TubelineassemblyMessages.MASM_0016_UNABLE_TO_INSTANTIATE_TUBE_FACTORY(className), ex), true);
         } catch (ClassNotFoundException ex) {
-            throw LOGGER.logSevereException(new RuntimeException(TubelineassemblyMessages.MASM_0017_UNABLE_TO_LOAD_TUBE_FACTORY_CLASS(config.getClassName()), ex), true);
+            throw LOGGER.logSevereException(new RuntimeException(TubelineassemblyMessages.MASM_0017_UNABLE_TO_LOAD_TUBE_FACTORY_CLASS(className), ex), true);
         }
     }
 
@@ -90,4 +96,10 @@
     String getMessageDumpPropertyBase() {
         return msgDumpPropertyBase;
     }
+
+    private boolean isJDKInternal(String className) {
+        // avoid repackaging
+        return className.startsWith("com." + "sun.xml.internal.ws");
+    }
+
 }
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/client/MonitorRootClient.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/client/MonitorRootClient.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
  * 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,20 +27,12 @@
 
 import com.sun.xml.internal.ws.api.server.Container;
 import com.sun.xml.internal.ws.model.wsdl.WSDLServiceImpl;
-import java.net.URL;
-import java.util.HashMap;
 import java.util.Map;
 import javax.xml.namespace.QName;
-import com.sun.org.glassfish.external.amx.AMXGlassfish;
 import com.sun.org.glassfish.gmbal.AMXMetadata;
 import com.sun.org.glassfish.gmbal.Description;
-import com.sun.org.glassfish.gmbal.InheritedAttribute;
-import com.sun.org.glassfish.gmbal.InheritedAttributes;
 import com.sun.org.glassfish.gmbal.ManagedAttribute;
-import com.sun.org.glassfish.gmbal.ManagedData;
 import com.sun.org.glassfish.gmbal.ManagedObject;
-import com.sun.org.glassfish.gmbal.ManagedObjectManager;
-import com.sun.org.glassfish.gmbal.ManagedObjectManagerFactory;
 import java.net.URL;
 
 /**
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/client/SEIPortInfo.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/client/SEIPortInfo.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
  * 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,8 @@
 import com.sun.xml.internal.ws.binding.WebServiceFeatureList;
 import com.sun.xml.internal.ws.model.SOAPSEIModel;
 
+import javax.xml.ws.WebServiceFeature;
+
 /**
  * {@link PortInfo} that has {@link SEIModel}.
  *
@@ -46,27 +48,37 @@
  * @author Kohsuke Kawaguchi
  */
 public final class SEIPortInfo extends PortInfo {
+
     public final Class sei;
+
     /**
      * Model of {@link #sei}.
      */
     public final SOAPSEIModel model;
 
     public SEIPortInfo(WSServiceDelegate owner, Class sei, SOAPSEIModel model, @NotNull WSDLPort portModel) {
-        super(owner,portModel);
+        super(owner, portModel);
         this.sei = sei;
         this.model = model;
-        assert sei!=null && model!=null;
+        assert sei != null && model != null;
+    }
+
+    @Override
+    public BindingImpl createBinding(WebServiceFeature[] webServiceFeatures, Class<?> portInterface) {
+        BindingImpl binding = super.createBinding(webServiceFeatures, portInterface);
+        return setKnownHeaders(binding);
     }
 
     public BindingImpl createBinding(WebServiceFeatureList webServiceFeatures, Class<?> portInterface) {
         // not to pass in (BindingImpl) model.getWSBinding()
-        BindingImpl bindingImpl = super.createBinding(webServiceFeatures, portInterface, null);
-        if(bindingImpl instanceof SOAPBindingImpl) {
-            ((SOAPBindingImpl)bindingImpl).setPortKnownHeaders(model.getKnownHeaders());
+        BindingImpl binding = super.createBinding(webServiceFeatures, portInterface, null);
+        return setKnownHeaders(binding);
+    }
+
+    private BindingImpl setKnownHeaders(BindingImpl binding) {
+        if (binding instanceof SOAPBindingImpl) {
+            ((SOAPBindingImpl) binding).setPortKnownHeaders(model.getKnownHeaders());
         }
-         //Not needed as set above in super.createBinding() call
-         //bindingImpl.setFeatures(webServiceFeatures);
-        return bindingImpl;
+        return binding;
     }
 }
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/client/WSServiceDelegate.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/client/WSServiceDelegate.java	Wed Jun 12 14:47:09 2013 +0100
@@ -91,8 +91,7 @@
 import java.lang.reflect.Proxy;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
+import java.security.*;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -187,7 +186,7 @@
      * Multiple {@link ServiceInterceptor}s are aggregated into one.
      */
     /*package*/ final @NotNull ServiceInterceptor serviceInterceptor;
-
+    private URL wsdlURL;
 
     public WSServiceDelegate(URL wsdlDocumentLocation, QName serviceName, Class<? extends Service> serviceClass, WebServiceFeature... features) {
         this(wsdlDocumentLocation, serviceName, serviceClass, new WebServiceFeatureList(features));
@@ -197,6 +196,7 @@
         this(
             wsdlDocumentLocation==null ? null : new StreamSource(wsdlDocumentLocation.toExternalForm()),
             serviceName,serviceClass, features);
+        wsdlURL = wsdlDocumentLocation;
     }
 
     /**
@@ -699,6 +699,39 @@
 
     }
 
+    private <T> T createProxy(final Class<T> portInterface, final InvocationHandler pis) {
+
+        // When creating the proxy, use a ClassLoader that can load classes
+        // from both the interface class and also from this classes
+        // classloader. This is necessary when this code is used in systems
+        // such as OSGi where the class loader for the interface class may
+        // not be able to load internal JAX-WS classes like
+        // "WSBindingProvider", but the class loader for this class may not
+        // be able to load the interface class.
+        final ClassLoader loader = getDelegatingLoader(portInterface.getClassLoader(),
+                WSServiceDelegate.class.getClassLoader());
+
+        // accessClassInPackage privilege needs to be granted ...
+        RuntimePermission perm = new RuntimePermission("accessClassInPackage.com.sun." + "xml.internal.*");
+        PermissionCollection perms = perm.newPermissionCollection();
+        perms.add(perm);
+
+        return AccessController.doPrivileged(
+                new PrivilegedAction<T>() {
+                    @Override
+                    public T run() {
+                        Object proxy = Proxy.newProxyInstance(loader,
+                                new Class[]{portInterface, WSBindingProvider.class, Closeable.class}, pis);
+                        return portInterface.cast(proxy);
+                    }
+                },
+                new AccessControlContext(
+                        new ProtectionDomain[]{
+                                new ProtectionDomain(null, perms)
+                        })
+        );
+    }
+
     private WSDLServiceImpl getWSDLModelfromSEI(final Class sei) {
         WebService ws = AccessController.doPrivileged(new PrivilegedAction<WebService>() {
             public WebService run() {
@@ -750,7 +783,7 @@
         }
     }
 
-    private <T> T createEndpointIFBaseProxy(@Nullable WSEndpointReference epr,QName portName, Class<T> portInterface,
+    private <T> T createEndpointIFBaseProxy(@Nullable WSEndpointReference epr, QName portName, Class<T> portInterface,
                                             WebServiceFeatureList webServiceFeatures, SEIPortInfo eif) {
         //fail if service doesnt have WSDL
         if (wsdlService == null) {
@@ -762,21 +795,11 @@
                 ClientMessages.INVALID_PORT_NAME(portName,buildWsdlPortNames()));
         }
 
-        BindingImpl binding = eif.createBinding(webServiceFeatures,portInterface);
+        BindingImpl binding = eif.createBinding(webServiceFeatures, portInterface);
         InvocationHandler pis = getStubHandler(binding, eif, epr);
 
-        // When creating the proxy, use a ClassLoader that can load classes
-        // from both the interface class and also from this classes
-        // classloader. This is necessary when this code is used in systems
-        // such as OSGi where the class loader for the interface class may
-        // not be able to load internal JAX-WS classes like
-        // "WSBindingProvider", but the class loader for this class may not
-        // be able to load the interface class.
-        ClassLoader loader =
-            getDelegatingLoader(portInterface.getClassLoader(),
-                               WSServiceDelegate.class.getClassLoader());
-        T proxy = portInterface.cast(Proxy.newProxyInstance(loader,
-                new Class[]{portInterface, WSBindingProvider.class, Closeable.class}, pis));
+        T proxy = createProxy(portInterface, pis);
+
         if (serviceInterceptor != null) {
             serviceInterceptor.postCreateProxy((WSBindingProvider)proxy, portInterface);
         }
@@ -841,7 +864,7 @@
                 config.setFeatures(features);
                 config.setClassLoader(portInterface.getClassLoader());
                 config.getMappingInfo().setPortName(portName);
-
+                config.setWsdlURL(wsdlURL);
         // if ExternalMetadataFeature present, ExternalMetadataReader will be created ...
         config.setMetadataReader(getMetadadaReader(features, portInterface.getClassLoader()));
 
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/client/dispatch/DispatchImpl.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/client/dispatch/DispatchImpl.java	Wed Jun 12 14:47:09 2013 +0100
@@ -386,8 +386,10 @@
             endpoint = (String) requestContext.get(BindingProvider.ENDPOINT_ADDRESS_PROPERTY);
         }
         // This is existing before packetTakesPriorityOverRequestContext so leaving in place.
-        if (endpoint == null)
+        if (endpoint == null) {
+            if (message.endpointAddress == null) throw new WebServiceException(DispatchMessages.INVALID_NULLARG_URI());
             endpoint = message.endpointAddress.toString();
+        }
 
         String pathInfo = null;
         String queryString = null;
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/client/sei/SEIStub.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/client/sei/SEIStub.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -88,7 +88,7 @@
         // first fill in sychronized versions
         for (JavaMethodImpl m : seiModel.getJavaMethods()) {
             if (!m.getMEP().isAsync) {
-                SyncMethodHandler handler = new SyncMethodHandler(this, m.getMethod());
+                SyncMethodHandler handler = new SyncMethodHandler(this, m);
                 syncs.put(m.getOperation(), m);
                 methodHandlers.put(m.getMethod(), handler);
             }
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/client/sei/SyncMethodHandler.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/client/sei/SyncMethodHandler.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -32,10 +32,13 @@
 import com.sun.xml.internal.ws.client.ResponseContextReceiver;
 import com.sun.xml.internal.ws.encoding.soap.DeserializationException;
 import com.sun.xml.internal.ws.message.jaxb.JAXBMessage;
+import com.sun.xml.internal.ws.model.JavaMethodImpl;
+import com.sun.xml.internal.ws.resources.DispatchMessages;
 
 import javax.xml.bind.JAXBException;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.ws.Holder;
+import javax.xml.ws.WebServiceException;
 
 import java.lang.reflect.Method;
 
@@ -60,18 +63,16 @@
  * @author Kohsuke Kawaguchi
  */
 final class SyncMethodHandler extends MethodHandler {
-//    private ResponseBuilder responseBuilder;
-
-    SyncMethodHandler(SEIStub owner, Method m) {
-        super(owner, m);
-//        responseBuilder = buildResponseBuilder(method, ValueSetterFactory.SYNC);
+    final boolean isVoid;
+    final boolean isOneway;
+    final JavaMethodImpl javaMethod;
+    SyncMethodHandler(SEIStub owner, JavaMethodImpl jm) {
+        super(owner, jm.getMethod());
+        javaMethod = jm;
+        isVoid = void.class.equals(jm.getMethod().getReturnType());
+        isOneway = jm.getMEP().isOneWay();
     }
 
-//    SyncMethodHandler(SEIStub owner, JavaMethodImpl method) {
-//        super(owner, method);
-//        responseBuilder = buildResponseBuilder(method, ValueSetterFactory.SYNC);
-//    }
-
     Object invoke(Object proxy, Object[] args) throws Throwable {
         return invoke(proxy,args,owner.requestContext,owner);
     }
@@ -87,37 +88,32 @@
      */
     Object invoke(Object proxy, Object[] args, RequestContext rc, ResponseContextReceiver receiver) throws Throwable {
         JavaCallInfo call = owner.databinding.createJavaCallInfo(method, args);
-//      Packet req = new Packet(createRequestMessage(args));
         Packet req = (Packet) owner.databinding.serializeRequest(call);
         // process the message
         Packet reply = owner.doProcess(req,rc,receiver);
 
         Message msg = reply.getMessage();
-        if(msg ==null)
-            // no reply. must have been one-way
+        if(msg == null) {
+            if (!isOneway || !isVoid) {
+                throw new WebServiceException(DispatchMessages.INVALID_RESPONSE());
+            }
             return null;
+        }
 
         try {
-//              return dbHandler.readResponse(reply, call).getReturnValue();
             call = owner.databinding.deserializeResponse(reply, call);
             if (call.getException() != null) {
                 throw call.getException();
             } else {
                 return call.getReturnValue();
             }
-//            if(msg.isFault()) {
-//                SOAPFaultBuilder faultBuilder = SOAPFaultBuilder.create(msg);
-//                throw faultBuilder.createException(checkedExceptions);
-//            } else {
-//                return responseBuilder.readResponse(msg,args);
-//            }
         } catch (JAXBException e) {
-            throw new DeserializationException("failed.to.read.response",e);
+            throw new DeserializationException(DispatchMessages.INVALID_RESPONSE_DESERIALIZATION(), e);
         } catch (XMLStreamException e) {
-            throw new DeserializationException("failed.to.read.response",e);
+            throw new DeserializationException(DispatchMessages.INVALID_RESPONSE_DESERIALIZATION(),e);
         } finally {
-                if (reply.transportBackChannel != null)
-                        reply.transportBackChannel.close();
+            if (reply.transportBackChannel != null)
+                reply.transportBackChannel.close();
         }
     }
 
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/db/DatabindingFactoryImpl.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/db/DatabindingFactoryImpl.java	Wed Jun 12 14:47:09 2013 +0100
@@ -42,6 +42,7 @@
 import com.oracle.webservices.internal.api.databinding.Databinding;
 import com.oracle.webservices.internal.api.databinding.Databinding.Builder;
 import com.oracle.webservices.internal.api.databinding.WSDLGenerator;
+import com.oracle.webservices.internal.api.databinding.DatabindingModeFeature;
 import com.sun.xml.internal.ws.api.BindingID;
 import com.sun.xml.internal.ws.api.WSBinding;
 import com.sun.xml.internal.ws.api.databinding.DatabindingConfig;
@@ -58,13 +59,10 @@
  */
 public class DatabindingFactoryImpl extends DatabindingFactory {
 
-//      static final String WsRuntimeFactoryProperties = DatabindingProvider.class.getName() + ".properties";
         static final String WsRuntimeFactoryDefaultImpl = "com.sun.xml.internal.ws.db.DatabindingProviderImpl";
 
         protected Map<String, Object> properties = new HashMap<String, Object>();
         protected DatabindingProvider defaultRuntimeFactory;
-//      protected Map<String, DatabindingProvider> runtimeFactories = new HashMap<String, DatabindingProvider>();
-//      protected Properties wsRuntimeFactoryMap;
         protected List<DatabindingProvider> providers;
 
     static private List<DatabindingProvider> providers() {
@@ -97,11 +95,6 @@
                 if (p.isFor(mode))
                     provider = p;
         } if (provider == null) {
-            // if (defaultRuntimeFactory == null) {
-            // defaultRuntimeFactory =
-            // newRuntimeFactory(WsRuntimeFactoryDefaultImpl);
-            // }
-            // provider = defaultRuntimeFactory;
             provider = new DatabindingProviderImpl();
         }
         return provider;
@@ -117,33 +110,14 @@
         return provider.wsdlGen(config);
     }
 
-//      DatabindingProvider newRuntimeFactory(String name) {
-//              ClassLoader classLoader = classLoader();
-//              DatabindingProvider factory = null;
-//              try {
-//                      Class cls = (classLoader != null) ? classLoader.loadClass(name) : Class.forName(name);
-//                      factory = DatabindingProvider.class.cast(cls.newInstance());
-//              } catch (Exception e) {
-//                      throw new DatabindingException("Unknown DatabindingFactory: " + name, e);
-//              }
-//              factory.init(properties);
-//              return factory;
-//      }
-
         String databindingMode(DatabindingConfig config) {
-//              if ( config.getOverrideMappingInfo() != null &&
-//                   config.getOverrideMappingInfo().getDatabindingMode() != null)
-//                      return config.getOverrideMappingInfo().getDatabindingMode();
-//              if ( config.getDefaultMappingInfo() != null &&
-//                   config.getDefaultMappingInfo().getDatabindingMode() != null)
-//                      return config.getDefaultMappingInfo().getDatabindingMode();
-
                 if ( config.getMappingInfo() != null &&
                      config.getMappingInfo().getDatabindingMode() != null)
                         return config.getMappingInfo().getDatabindingMode();
         if ( config.getFeatures() != null) for (WebServiceFeature f : config.getFeatures()) {
-            if (f instanceof com.oracle.webservices.internal.api.databinding.DatabindingModeFeature) {
-                com.oracle.webservices.internal.api.databinding.DatabindingModeFeature dmf = (com.oracle.webservices.internal.api.databinding.DatabindingModeFeature) f;
+            if (f instanceof DatabindingModeFeature) {
+                DatabindingModeFeature dmf = (DatabindingModeFeature) f;
+                config.properties().putAll(dmf.getProperties());
                 return dmf.getMode();
             }
         }
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/db/DatabindingImpl.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/db/DatabindingImpl.java	Wed Jun 12 14:47:09 2013 +0100
@@ -66,58 +66,77 @@
  *
  * @author shih-chang.chen@oracle.com
  */
-public class DatabindingImpl implements Databinding {
+public final class DatabindingImpl implements Databinding {
 
     AbstractSEIModelImpl seiModel;
-        Map<Method, StubHandler> stubHandlers;
+    Map<Method, StubHandler> stubHandlers;
 //    QNameMap<TieHandler> wsdlOpMap = new QNameMap<TieHandler>();
-        Map<JavaMethodImpl, TieHandler> wsdlOpMap = new HashMap<JavaMethodImpl, TieHandler>();
-        Map<Method, TieHandler> tieHandlers = new HashMap<Method, TieHandler>();
+    Map<JavaMethodImpl, TieHandler> wsdlOpMap = new HashMap<JavaMethodImpl, TieHandler>();
+    Map<Method, TieHandler> tieHandlers = new HashMap<Method, TieHandler>();
     OperationDispatcher operationDispatcher;
     OperationDispatcher operationDispatcherNoWsdl;
     boolean clientConfig = false;
     Codec codec;
     MessageContextFactory packetFactory = null;
 
-        public DatabindingImpl(DatabindingProviderImpl p, DatabindingConfig config) {
-                RuntimeModeler modeler = new RuntimeModeler(config);
-                modeler.setClassLoader(config.getClassLoader());
-                seiModel = modeler.buildRuntimeModel();
-                WSDLPort wsdlport = config.getWsdlPort();
-                packetFactory = new MessageContextFactory(seiModel.getWSBinding().getFeatures());
-                clientConfig = isClientConfig(config);
-                if ( clientConfig ) initStubHandlers();
-                seiModel.setDatabinding(this);
-                if (wsdlport != null) freeze(wsdlport);
-                if (operationDispatcher == null) operationDispatcherNoWsdl = new OperationDispatcher(null, seiModel.getWSBinding(), seiModel);
+    public DatabindingImpl(DatabindingProviderImpl p, DatabindingConfig config) {
+        RuntimeModeler modeler = new RuntimeModeler(config);
+        modeler.setClassLoader(config.getClassLoader());
+        seiModel = modeler.buildRuntimeModel();
+        WSDLPort wsdlport = config.getWsdlPort();
+        packetFactory = new MessageContextFactory(seiModel.getWSBinding().getFeatures());
+        clientConfig = isClientConfig(config);
+        if (clientConfig) {
+            initStubHandlers();
+        }
+        seiModel.setDatabinding(this);
+        if (wsdlport != null) {
+            freeze(wsdlport);
+        }
+        if (operationDispatcher == null) {
+            operationDispatcherNoWsdl = new OperationDispatcher(null, seiModel.getWSBinding(), seiModel);
+        }
 //    if(!clientConfig) {
-                for(JavaMethodImpl jm: seiModel.getJavaMethods()) if (!jm.isAsync()) {
-            TieHandler th = new TieHandler(jm, seiModel.getWSBinding(), packetFactory);
-            wsdlOpMap.put(jm, th);
-            tieHandlers.put(th.getMethod(), th);
+        for (JavaMethodImpl jm : seiModel.getJavaMethods()) {
+            if (!jm.isAsync()) {
+                TieHandler th = new TieHandler(jm, seiModel.getWSBinding(), packetFactory);
+                wsdlOpMap.put(jm, th);
+                tieHandlers.put(th.getMethod(), th);
+            }
         }
 //    }
-        }
+    }
 
-        //TODO isClientConfig
-        private boolean isClientConfig(DatabindingConfig config) {
-                if (config.getContractClass() == null) return false;
-                if (!config.getContractClass().isInterface()) return false;
-                return (config.getEndpointClass() == null || config.getEndpointClass().isInterface());
+    //TODO isClientConfig
+    private boolean isClientConfig(DatabindingConfig config) {
+        if (config.getContractClass() == null) {
+            return false;
+        }
+        if (!config.getContractClass().isInterface()) {
+            return false;
         }
-        //TODO fix freeze
-        public synchronized void freeze(WSDLPort port) {
-                if (clientConfig) return;
-                if (operationDispatcher != null) return;
-                operationDispatcher = (port == null) ? null : new OperationDispatcher(port, seiModel.getWSBinding(), seiModel);
-        }
+        return (config.getEndpointClass() == null || config.getEndpointClass().isInterface());
+    }
+    //TODO fix freeze
 
-        public SEIModel getModel() {
-                return seiModel;
+    public void freeze(WSDLPort port) {
+        if (clientConfig) {
+            return;
+        }
+        synchronized(this) {
+            if (operationDispatcher == null) {
+                operationDispatcher = (port == null) ? null : new OperationDispatcher(port, seiModel.getWSBinding(), seiModel);
+            }
         }
+    }
+
+    public SEIModel getModel() {
+        return seiModel;
+    }
 //Refactored from SEIStub
+
     private void initStubHandlers() {
-                stubHandlers = new HashMap<Method, StubHandler>();
+        stubHandlers = new HashMap<Method, StubHandler>();
         Map<ActionBasedOperationSignature, JavaMethodImpl> syncs = new HashMap<ActionBasedOperationSignature, JavaMethodImpl>();
         // fill in methodHandlers.
         // first fill in sychronized versions
@@ -138,29 +157,33 @@
         }
     }
 
-    public JavaMethodImpl resolveJavaMethod(Packet req) throws DispatchException {
+    JavaMethodImpl resolveJavaMethod(Packet req) throws DispatchException {
         WSDLOperationMapping m = req.getWSDLOperationMapping();
-        if (m == null) m = (operationDispatcher != null) ?
-                operationDispatcher.getWSDLOperationMapping(req):
-                operationDispatcherNoWsdl.getWSDLOperationMapping(req);
+        if (m == null) {
+            synchronized (this) {
+                m = (operationDispatcher != null)
+                        ? operationDispatcher.getWSDLOperationMapping(req)
+                        : operationDispatcherNoWsdl.getWSDLOperationMapping(req);
+            }
+        }
         return (JavaMethodImpl) m.getJavaMethod();
     }
 
-        public JavaCallInfo deserializeRequest(Packet req) {
-            com.sun.xml.internal.ws.api.databinding.JavaCallInfo call = new com.sun.xml.internal.ws.api.databinding.JavaCallInfo();
-                try {
-                    JavaMethodImpl wsdlOp = resolveJavaMethod(req);
-                        TieHandler tie = wsdlOpMap.get(wsdlOp);
-                        call.setMethod(tie.getMethod());
-                        Object[] args = tie.readRequest(req.getMessage());
-                        call.setParameters(args);
-                } catch (DispatchException e) {
-                        call.setException(e);
-                }
-                return call;
+    public JavaCallInfo deserializeRequest(Packet req) {
+        com.sun.xml.internal.ws.api.databinding.JavaCallInfo call = new com.sun.xml.internal.ws.api.databinding.JavaCallInfo();
+        try {
+            JavaMethodImpl wsdlOp = resolveJavaMethod(req);
+            TieHandler tie = wsdlOpMap.get(wsdlOp);
+            call.setMethod(tie.getMethod());
+            Object[] args = tie.readRequest(req.getMessage());
+            call.setParameters(args);
+        } catch (DispatchException e) {
+            call.setException(e);
         }
+        return call;
+    }
 
-        public JavaCallInfo deserializeResponse(Packet res, JavaCallInfo call) {
+    public JavaCallInfo deserializeResponse(Packet res, JavaCallInfo call) {
         StubHandler stubHandler = stubHandlers.get(call.getMethod());
         try {
             return stubHandler.readResponse(res, call);
@@ -168,86 +191,97 @@
             call.setException(e);
             return call;
         }
-        }
+    }
 
-        public WebServiceFeature[] getFeatures() {
-                // TODO Auto-generated method stub
-                return null;
-        }
+    public WebServiceFeature[] getFeatures() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-        public Packet serializeRequest(JavaCallInfo call) {
+    @Override
+    public Packet serializeRequest(JavaCallInfo call) {
         StubHandler stubHandler = stubHandlers.get(call.getMethod());
         Packet p = stubHandler.createRequestPacket(call);
         p.setState(Packet.State.ClientRequest);
         return p;
-        }
+    }
 
-        public Packet serializeResponse(JavaCallInfo call) {
-                Method method = call.getMethod();
-                Message message = null;
-                if (method != null) {
-                        TieHandler th = tieHandlers.get(method);
-                        if (th != null) {
-                            return th.serializeResponse(call);
-                        }
-                }
-                if (call.getException() instanceof DispatchException) {
-                    message = ((DispatchException)call.getException()).fault;
-                }
-        Packet p = (Packet)packetFactory.createContext(message);
+    @Override
+    public Packet serializeResponse(JavaCallInfo call) {
+        Method method = call.getMethod();
+        Message message = null;
+        if (method != null) {
+            TieHandler th = tieHandlers.get(method);
+            if (th != null) {
+                return th.serializeResponse(call);
+            }
+        }
+        if (call.getException() instanceof DispatchException) {
+            message = ((DispatchException) call.getException()).fault;
+        }
+        Packet p = (Packet) packetFactory.createContext(message);
         p.setState(Packet.State.ServerResponse);
         return p;
-        }
+    }
 
-        public ClientCallBridge getClientBridge(Method method) {
-                return stubHandlers.get(method);
-        }
-
+    @Override
+    public ClientCallBridge getClientBridge(Method method) {
+        return stubHandlers.get(method);
+    }
 
-        public void generateWSDL(WSDLGenInfo info) {
-            com.sun.xml.internal.ws.wsdl.writer.WSDLGenerator wsdlGen = new com.sun.xml.internal.ws.wsdl.writer.WSDLGenerator(
-                    seiModel,
-                    info.getWsdlResolver(),
-                    seiModel.getWSBinding(),
-                    info.getContainer(), seiModel.getEndpointClass(),
-                    info.isInlineSchemas(),
-            info.isSecureXmlProcessingDisabled(),
-            info.getExtensions());
+    @Override
+    public void generateWSDL(WSDLGenInfo info) {
+        com.sun.xml.internal.ws.wsdl.writer.WSDLGenerator wsdlGen = new com.sun.xml.internal.ws.wsdl.writer.WSDLGenerator(
+                seiModel,
+                info.getWsdlResolver(),
+                seiModel.getWSBinding(),
+                info.getContainer(), seiModel.getEndpointClass(),
+                info.isInlineSchemas(),
+                info.isSecureXmlProcessingDisabled(),
+                info.getExtensions());
         wsdlGen.doGeneration();
-        }
+    }
 
-        public EndpointCallBridge getEndpointBridge(Packet req) throws DispatchException {
+    @Override
+    public EndpointCallBridge getEndpointBridge(Packet req) throws DispatchException {
         JavaMethodImpl wsdlOp = resolveJavaMethod(req);
-                return wsdlOpMap.get(wsdlOp);
-        }
-
+        return wsdlOpMap.get(wsdlOp);
+    }
 
-        Codec getCodec() {
-                if (codec == null) codec = ((BindingImpl)seiModel.getWSBinding()).createCodec();
-                return codec;
+    Codec getCodec() {
+        if (codec == null) {
+            codec = ((BindingImpl) seiModel.getWSBinding()).createCodec();
         }
+        return codec;
+    }
 
-        public ContentType encode( Packet packet, OutputStream out ) throws IOException {
+    @Override
+    public ContentType encode(Packet packet, OutputStream out) throws IOException {
         return getCodec().encode(packet, out);
     }
 
-        public void decode( InputStream in, String ct, Packet p ) throws IOException{
+    @Override
+    public void decode(InputStream in, String ct, Packet p) throws IOException {
         getCodec().decode(in, ct, p);
     }
 
+    @Override
     public com.oracle.webservices.internal.api.databinding.JavaCallInfo createJavaCallInfo(Method method, Object[] args) {
         return new com.sun.xml.internal.ws.api.databinding.JavaCallInfo(method, args);
     }
 
+    @Override
     public com.oracle.webservices.internal.api.databinding.JavaCallInfo deserializeResponse(
             MessageContext message, com.oracle.webservices.internal.api.databinding.JavaCallInfo call) {
-        return deserializeResponse((Packet)message, (JavaCallInfo)call);
+        return deserializeResponse((Packet) message, (JavaCallInfo) call);
     }
 
+    @Override
     public com.oracle.webservices.internal.api.databinding.JavaCallInfo deserializeRequest(MessageContext message) {
-        return deserializeRequest((Packet)message);
+        return deserializeRequest((Packet) message);
     }
 
+    @Override
     public MessageContextFactory getMessageContextFactory() {
         return packetFactory;
     }
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/encoding/MtomCodec.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/encoding/MtomCodec.java	Wed Jun 12 14:47:09 2013 +0100
@@ -81,8 +81,8 @@
 public class MtomCodec extends MimeCodec {
 
     public static final String XOP_XML_MIME_TYPE = "application/xop+xml";
-    private static final String XOP_LOCALNAME = "Include";
-    private static final String XOP_NAMESPACEURI = "http://www.w3.org/2004/08/xop/include";
+    public static final String XOP_LOCALNAME = "Include";
+    public static final String XOP_NAMESPACEURI = "http://www.w3.org/2004/08/xop/include";
 
     private final StreamSOAPCodec codec;
     private final MTOMFeature mtomFeature;
@@ -171,8 +171,10 @@
                     bos.write(out);
                 }
 
-                //now write out the attachments in the message
-                writeAttachments(packet.getMessage().getAttachments(),out, boundary);
+                // now write out the attachments in the message that weren't
+                // previously written
+                writeNonMtomAttachments(packet.getMessage().getAttachments(),
+                        out, boundary);
 
                 //write out the end boundary
                 writeAsAscii("--"+boundary, out);
@@ -204,7 +206,13 @@
 
         ByteArrayBuffer(@NotNull DataHandler dh, String b) {
             this.dh = dh;
-            this.contentId = encodeCid();
+            String cid = null;
+            if (dh instanceof StreamingDataHandler) {
+                StreamingDataHandler sdh = (StreamingDataHandler) dh;
+                if (sdh.getHrefCid() != null)
+                    cid = sdh.getHrefCid();
+            }
+            this.contentId = cid != null ? cid : encodeCid();
             boundary = b;
         }
 
@@ -227,13 +235,27 @@
         writeln(out);
     }
 
-    private void writeAttachments(AttachmentSet attachments, OutputStream out, String boundary) throws IOException {
-        for(Attachment att : attachments){
-            //build attachment frame
-            writeln("--"+boundary, out);
+    // Compiler warning for not calling close, but cannot call close,
+    // will consume attachment bytes.
+        @SuppressWarnings("resource")
+    private void writeNonMtomAttachments(AttachmentSet attachments,
+            OutputStream out, String boundary) throws IOException {
+
+        for (Attachment att : attachments) {
+
+            DataHandler dh = att.asDataHandler();
+            if (dh instanceof StreamingDataHandler) {
+                StreamingDataHandler sdh = (StreamingDataHandler) dh;
+                // If DataHandler has href Content-ID, it is MTOM, so skip.
+                if (sdh.getHrefCid() != null)
+                    continue;
+            }
+
+            // build attachment frame
+            writeln("--" + boundary, out);
             writeMimeHeaders(att.getContentType(), att.getContentId(), out);
             att.writeTo(out);
-            writeln(out);                    // write \r\n
+            writeln(out); // write \r\n
         }
     }
 
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/message/stream/StreamMessage.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/message/stream/StreamMessage.java	Wed Jun 12 14:47:09 2013 +0100
@@ -104,7 +104,9 @@
      * If the creater of this object didn't care about those,
      * we use stock values.
      */
-    private @NotNull TagInfoset envelopeTag,headerTag,bodyTag;
+    private @NotNull TagInfoset envelopeTag;
+    private @NotNull TagInfoset headerTag;
+    private @NotNull TagInfoset bodyTag;
 
     /**
      * Used only for debugging. This records where the message was consumed.
@@ -203,8 +205,7 @@
             throw new IllegalArgumentException("BodyTag TagInfoset cannot be null");
         }
         this.envelopeTag = envelopeTag;
-        this.headerTag = headerTag!=null ? headerTag :
-            new TagInfoset(envelopeTag.nsUri,"Header",envelopeTag.prefix,EMPTY_ATTS);
+        this.headerTag = headerTag;
         this.bodyTag = bodyTag;
         this.bodyPrologue = bodyPrologue;
         this.bodyEpilogue = bodyEpilogue;
@@ -391,10 +392,13 @@
 
         //write headers
         MessageHeaders hl = getHeaders();
-        if(hl.hasHeaders()){
+        if (hl.hasHeaders() && headerTag == null) headerTag = new TagInfoset(envelopeTag.nsUri,"Header",envelopeTag.prefix,EMPTY_ATTS);
+        if (headerTag != null) {
             headerTag.writeStart(writer);
-            for(Header h : hl.asList()){
-                h.writeTo(writer);
+            if (hl.hasHeaders()){
+                for(Header h : hl.asList()){
+                    h.writeTo(writer);
+                }
             }
             writer.writeEndElement();
         }
@@ -527,15 +531,18 @@
         contentHandler.setDocumentLocator(NULL_LOCATOR);
         contentHandler.startDocument();
         envelopeTag.writeStart(contentHandler);
-        headerTag.writeStart(contentHandler);
-        if(hasHeaders()) {
-            MessageHeaders headers = getHeaders();
-            for (Header h : headers.asList()) {
-                // shouldn't JDK be smart enough to use array-style indexing for this foreach!?
-                h.writeTo(contentHandler,errorHandler);
+        if (hasHeaders() && headerTag == null) headerTag = new TagInfoset(envelopeTag.nsUri,"Header",envelopeTag.prefix,EMPTY_ATTS);
+        if (headerTag != null) {
+            headerTag.writeStart(contentHandler);
+            if (hasHeaders()) {
+                MessageHeaders headers = getHeaders();
+                for (Header h : headers.asList()) {
+                    // shouldn't JDK be smart enough to use array-style indexing for this foreach!?
+                    h.writeTo(contentHandler,errorHandler);
+                }
             }
+            headerTag.writeEnd(contentHandler);
         }
-        headerTag.writeEnd(contentHandler);
         bodyTag.writeStart(contentHandler);
         writePayloadTo(contentHandler,errorHandler, true);
         bodyTag.writeEnd(contentHandler);
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/model/RuntimeModeler.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/model/RuntimeModeler.java	Wed Jun 12 14:47:09 2013 +0100
@@ -210,20 +210,10 @@
 
     private <T extends Annotation> T getAnnotation(final Class<?> clazz, final Class<T> T) {
         return metadataReader.getAnnotation(T, clazz);
-//        return AccessController.doPrivileged(new PrivilegedAction<T>() {
-//           public T run() {
-//               return clazz.getAnnotation(T);
-//           }
-//        });
     }
 
     private <T extends Annotation> T getAnnotation(final Method method, final Class<T> T) {
         return metadataReader.getAnnotation(T, method);
-//        return AccessController.doPrivileged(new PrivilegedAction<T>() {
-//           public T run() {
-//               return method.getAnnotation(T);
-//           }
-//        });
     }
 
     private Annotation[] getAnnotations(final Method method) {
@@ -235,11 +225,6 @@
     }
     private Annotation[][] getParamAnnotations(final Method method) {
         return metadataReader.getParameterAnnotations(method);
-//        return AccessController.doPrivileged(new PrivilegedAction<Annotation[][]>() {
-//           public Annotation[][] run() {
-//               return method.getParameterAnnotations();
-//           }
-//        });
     }
 
     private static final Logger logger =
@@ -258,6 +243,7 @@
         model.endpointClass = config.getEndpointClass();
         model.classLoader = this.classLoader;
         model.wsBinding = wsBinding;
+        model.databindingInfo.setWsdlURL(config.getWsdlURL());
         model.databindingInfo.properties().putAll(config.properties());
         if (model.contractClass == null) model.contractClass = portClass;
         if (model.endpointClass == null && !portClass.isInterface()) model.endpointClass = portClass;
@@ -476,11 +462,12 @@
 
         for (Method method : clazz.getMethods()) {
             if (!clazz.isInterface()) {     // if clazz is SEI, then all methods are web methods
+                if (method.getDeclaringClass() == Object.class) continue;
                 if (!getBooleanSystemProperty("com.sun.xml.internal.ws.legacyWebMethod")) {  // legacy webMethod computation behaviour to be used
                     if (!isWebMethodBySpec(method, clazz))
                         continue;
                 } else {
-                    if (method.getDeclaringClass() == Object.class || !isWebMethod(method))
+                    if (!isWebMethod(method))
                         continue;
                 }
             }
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/model/WrapperBeanGenerator.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/model/WrapperBeanGenerator.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
  * 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,10 +69,12 @@
             super(annReader, nav, beanMemberFactory);
         }
 
+        @Override
         protected java.lang.reflect.Type getSafeType(java.lang.reflect.Type type) {
             return type;
         }
 
+        @Override
         protected java.lang.reflect.Type getHolderValueType(java.lang.reflect.Type paramType) {
             if (paramType instanceof ParameterizedType) {
                 ParameterizedType p = (ParameterizedType)paramType;
@@ -83,6 +85,7 @@
             return null;
         }
 
+        @Override
         protected boolean isVoidType(java.lang.reflect.Type type) {
             return type == Void.TYPE;
         }
@@ -90,6 +93,7 @@
     }
 
     private static final class FieldFactory implements BeanMemberFactory<java.lang.reflect.Type, Field> {
+        @Override
         public Field createWrapperBeanMember(java.lang.reflect.Type paramType,
                 String paramName, List<Annotation> jaxb) {
             return new Field(paramName, paramType, getASMType(paramType), jaxb);
@@ -257,7 +261,9 @@
 
     static Class createRequestWrapperBean(String className, Method method, QName reqElemName, ClassLoader cl) {
 
-        LOGGER.log(Level.FINE, "Request Wrapper Class : {0}", className);
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.log(Level.FINE, "Request Wrapper Class : {0}", className);
+        }
 
         List<Field> requestMembers = RUNTIME_GENERATOR.collectRequestBeanMembers(
                 method);
@@ -276,7 +282,9 @@
 
     static Class createResponseWrapperBean(String className, Method method, QName resElemName, ClassLoader cl) {
 
-        LOGGER.log(Level.FINE, "Response Wrapper Class : {0}", className);
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.log(Level.FINE, "Response Wrapper Class : {0}", className);
+        }
 
         List<Field> responseMembers = RUNTIME_GENERATOR.collectResponseBeanMembers(method);
 
@@ -346,6 +354,9 @@
         return Injector.inject(cl, className, image);
     }
 
+    /**
+     * Note: this class has a natural ordering that is inconsistent with equals.
+     */
     private static class Field implements Comparable<Field> {
         private final java.lang.reflect.Type reflectType;
         private final Type asmType;
@@ -370,10 +381,10 @@
             return FieldSignature.vms(reflectType);
         }
 
+        @Override
         public int compareTo(Field o) {
             return fieldName.compareTo(o.fieldName);
         }
-
     }
 
     static void write(byte[] b, String className) {
@@ -384,8 +395,7 @@
             fo.flush();
             fo.close();
         } catch (java.io.IOException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
+            LOGGER.log(Level.INFO, "Error Writing class", e);
         }
     }
 
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/model/wsdl/WSDLBoundOperationImpl.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/model/wsdl/WSDLBoundOperationImpl.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -63,7 +63,6 @@
 
     private final Map<String, WSDLPartImpl> inParts;
     private final Map<String, WSDLPartImpl> outParts;
-    private final Map<String, WSDLPartImpl> fltParts;
     private final List<WSDLBoundFaultImpl> wsdlBoundFaults;
     private WSDLOperationImpl operation;
     private String soapAction;
@@ -86,15 +85,16 @@
         faultMimeTypes = new HashMap<String, String>();
         inParts = new HashMap<String, WSDLPartImpl>();
         outParts = new HashMap<String, WSDLPartImpl>();
-        fltParts = new HashMap<String, WSDLPartImpl>();
         wsdlBoundFaults = new ArrayList<WSDLBoundFaultImpl>();
         this.owner = owner;
     }
 
+    @Override
     public QName getName(){
         return name;
     }
 
+    @Override
     public String getSOAPAction() {
         return soapAction;
     }
@@ -103,6 +103,7 @@
         this.soapAction = soapAction!=null?soapAction:"";
     }
 
+    @Override
     public WSDLPartImpl getPart(String partName, Mode mode) {
         if(mode==Mode.IN){
             return inParts.get(partName);
@@ -147,15 +148,18 @@
     }
 
     // TODO: what's the difference between this and inputParts/outputParts?
+    @Override
     public Map<String,WSDLPart> getInParts() {
         return Collections.<String,WSDLPart>unmodifiableMap(inParts);
     }
 
+    @Override
     public Map<String,WSDLPart> getOutParts() {
         return Collections.<String,WSDLPart>unmodifiableMap(outParts);
     }
 
     @NotNull
+    @Override
     public List<WSDLBoundFaultImpl> getFaults() {
         return wsdlBoundFaults;
     }
@@ -291,11 +295,13 @@
         return faultMimeTypes.get(part);
     }
 
+    @Override
     public WSDLOperationImpl getOperation() {
         return operation;
     }
 
 
+    @Override
     public WSDLBoundPortType getBoundPortType() {
         return owner;
     }
@@ -317,6 +323,7 @@
         this.style = style;
     }
 
+    @Override
     public @Nullable QName getReqPayloadName() {
         if (emptyRequestPayload)
             return null;
@@ -346,6 +353,7 @@
         return null;
     }
 
+    @Override
     public @Nullable QName getResPayloadName() {
         if (emptyResponsePayload)
             return null;
@@ -385,6 +393,7 @@
      * @return   non-null for rpclit and null for doclit
      * @see RuntimeModeler#processRpcMethod(JavaMethodImpl, String, String, Method)
      */
+    @Override
     public String getRequestNamespace(){
         return (reqNamespace != null)?reqNamespace:name.getNamespaceURI();
     }
@@ -400,6 +409,7 @@
      * @return   non-null for rpclit and null for doclit
      * @see RuntimeModeler#processRpcMethod(JavaMethodImpl, String, String, Method)
      */
+    @Override
     public String getResponseNamespace(){
         return (respNamespace!=null)?respNamespace:name.getNamespaceURI();
     }
@@ -433,6 +443,7 @@
     /**
      * @inheritDoc
      */
+    @Override
     public ANONYMOUS getAnonymous() {
         return anonymous;
     }
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/model/wsdl/WSDLOperationImpl.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/model/wsdl/WSDLOperationImpl.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
  * 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,7 @@
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamReader;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 /**
  * Implementaiton of {@link WSDLOperation}
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/resources/DispatchMessages.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/resources/DispatchMessages.java	Wed Jun 12 14:47:09 2013 +0100
@@ -51,6 +51,18 @@
         return localizer.localize(localizableINVALID_NULLARG_XMLHTTP_REQUEST_METHOD(arg0, arg1));
     }
 
+    public static Localizable localizableINVALID_NULLARG_URI() {
+        return messageFactory.getMessage("invalid.nullarg.uri");
+    }
+
+    /**
+     * Endpoint address URI is not allowed with a null argument
+     *
+     */
+    public static String INVALID_NULLARG_URI() {
+        return localizer.localize(localizableINVALID_NULLARG_URI());
+    }
+
     public static Localizable localizableINVALID_SOAPMESSAGE_DISPATCH_MSGMODE(Object arg0, Object arg1) {
         return messageFactory.getMessage("invalid.soapmessage.dispatch.msgmode", arg0, arg1);
     }
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/resources/dispatch.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/resources/dispatch.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
 # 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 @@
 invalid.nullarg.soap.msgmode=SOAP/HTTP Binding in {0} is not allowed with a null invocation argument. Must be: {1}
 # {0}, {1} - one of: POST, GET, DELETE PUT e.g.: A XML/HTTP request using MessageContext.HTTP_REQUEST_METHOD equals POST with a Null invocation Argument is not allowed. Must be: GET
 invalid.nullarg.xmlhttp.request.method=A XML/HTTP request using MessageContext.HTTP_REQUEST_METHOD equals {0} with a Null invocation Argument is not allowed. Must be: {1}
+invalid.nullarg.uri=Endpoint address URI is not allowed with a null argument
 invalid.response=No response returned.
 invalid.response.deserialization=Failed to deserialize the response.
 # {0} - "PAYLOAD", {1} - "MESSAGE"
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/server/EndpointFactory.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/server/EndpointFactory.java	Wed Jun 12 14:47:09 2013 +0100
@@ -265,7 +265,7 @@
             terminal = createProviderInvokerTube(implType, binding, invoker, container);
         } else {
             // Create runtime model for non Provider endpoints
-            seiModel = createSEIModel(wsdlPort, implType, serviceName, portName, binding);
+            seiModel = createSEIModel(wsdlPort, implType, serviceName, portName, binding, primaryDoc);
             if(binding instanceof SOAPBindingImpl){
                 //set portKnownHeaders on Binding, so that they can be used for MU processing
                 ((SOAPBindingImpl)binding).setPortKnownHeaders(
@@ -436,37 +436,17 @@
 
 
     private static AbstractSEIModelImpl createSEIModel(WSDLPort wsdlPort,
-                                                       Class<?> implType, @NotNull QName serviceName, @NotNull QName portName, WSBinding binding) {
-//        RuntimeModeler rap;
-//        // Create runtime model for non Provider endpoints
-//
-//        // wsdlPort will be null, means we will generate WSDL. Hence no need to apply
-//        // bindings or need to look in the WSDL
-//        if(wsdlPort == null){
-//            rap = new RuntimeModeler(implType,serviceName, binding.getBindingId(), binding.getFeatures().toArray());
-//        } else {
-//            /*
-//            This not needed anymore as wsdlFeatures are merged later anyway
-//            and so is the MTOMFeature.
-//            applyEffectiveMtomSetting(wsdlPort.getBinding(), binding);
-//            */
-//            //now we got the Binding so lets build the model
-//            rap = new RuntimeModeler(implType, serviceName, (WSDLPortImpl)wsdlPort, binding.getFeatures().toArray());
-//        }
-//        rap.setClassLoader(implType.getClassLoader());
-//        rap.setPortName(portName);
-//        return rap.buildRuntimeModel();
+                                                       Class<?> implType, @NotNull QName serviceName, @NotNull QName portName, WSBinding binding,
+                                                       SDDocumentSource primaryWsdl) {
                 DatabindingFactory fac = DatabindingFactory.newInstance();
                 DatabindingConfig config = new DatabindingConfig();
                 config.setEndpointClass(implType);
                 config.getMappingInfo().setServiceName(serviceName);
                 config.setWsdlPort(wsdlPort);
                 config.setWSBinding(binding);
-//              config.setFeatures(binding.getFeatures().toArray());
-//              config.getMappingInfo().setBindingID(binding.getBindingId());
                 config.setClassLoader(implType.getClassLoader());
                 config.getMappingInfo().setPortName(portName);
-
+                if (primaryWsdl != null) config.setWsdlURL(primaryWsdl.getSystemId());
         config.setMetadataReader(getExternalMetadatReader(implType, binding));
 
                 com.sun.xml.internal.ws.db.DatabindingImpl rt = (com.sun.xml.internal.ws.db.DatabindingImpl)fac.createRuntime(config);
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/spi/db/BindingInfo.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/spi/db/BindingInfo.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,7 @@
 
 package com.sun.xml.internal.ws.spi.db;
 
+import java.net.URL;
 import java.util.Collection;
 import java.util.Map;
 
@@ -47,6 +48,7 @@
         protected ClassLoader classLoader;
 
     private SEIModel seiModel;
+    private URL wsdlURL;
 
     public String getDatabindingMode() {
                 return databindingMode;
@@ -87,5 +89,10 @@
         public void setClassLoader(ClassLoader classLoader) {
                 this.classLoader = classLoader;
         }
-
+    public URL getWsdlURL() {
+        return wsdlURL;
+    }
+    public void setWsdlURL(URL wsdlURL) {
+        this.wsdlURL = wsdlURL;
+    }
 }
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/spi/db/JAXBWrapperAccessor.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/spi/db/JAXBWrapperAccessor.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -43,6 +43,7 @@
 import javax.xml.bind.JAXBElement;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementWrapper;
 import javax.xml.namespace.QName;
 
 /**
@@ -87,12 +88,19 @@
         }
         HashSet<String> elementLocalNames = new HashSet<String>();
         for (Field field : getAllFields(contentClass)) {
+            XmlElementWrapper xmlElemWrapper = field.getAnnotation(XmlElementWrapper.class);
             XmlElement xmlElem = field.getAnnotation(XmlElement.class);
             XmlElementRef xmlElemRef = field.getAnnotation(XmlElementRef.class);
             String fieldName = field.getName().toLowerCase();
             String namespace = "";
             String localName = field.getName();
-            if (xmlElem != null) {
+            if (xmlElemWrapper != null) {
+                namespace = xmlElemWrapper.namespace();
+                if (xmlElemWrapper.name() != null && !xmlElemWrapper.name().equals("")
+                        && !xmlElemWrapper.name().equals("##default")) {
+                    localName = xmlElemWrapper.name();
+                }
+            }else if (xmlElem != null) {
                 namespace = xmlElem.namespace();
                 if (xmlElem.name() != null && !xmlElem.name().equals("")
                         && !xmlElem.name().equals("##default")) {
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/transport/http/HttpAdapter.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/transport/http/HttpAdapter.java	Wed Jun 12 14:47:09 2013 +0100
@@ -25,14 +25,34 @@
 
 package com.sun.xml.internal.ws.transport.http;
 
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.net.HttpURLConnection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.TreeMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.ws.Binding;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.http.HTTPBinding;
+
 import com.oracle.webservices.internal.api.message.PropertySet;
 import com.sun.istack.internal.NotNull;
 import com.sun.istack.internal.Nullable;
+import com.sun.xml.internal.ws.api.Component;
+import com.sun.xml.internal.ws.api.EndpointAddress;
 import com.sun.xml.internal.ws.api.SOAPVersion;
-import com.sun.xml.internal.ws.api.addressing.NonAnonymousResponseProcessor;
 import com.sun.xml.internal.ws.api.addressing.AddressingVersion;
-import com.sun.xml.internal.ws.api.EndpointAddress;
-import com.sun.xml.internal.ws.api.Component;
+import com.sun.xml.internal.ws.api.addressing.NonAnonymousResponseProcessor;
 import com.sun.xml.internal.ws.api.ha.HaInfo;
 import com.sun.xml.internal.ws.api.message.ExceptionHasMessage;
 import com.sun.xml.internal.ws.api.message.Message;
@@ -56,29 +76,13 @@
 import com.sun.xml.internal.ws.util.ByteArrayBuffer;
 import com.sun.xml.internal.ws.util.Pool;
 
-import javax.xml.ws.Binding;
-import javax.xml.ws.WebServiceException;
-import javax.xml.ws.http.HTTPBinding;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.net.HttpURLConnection;
-import java.util.*;
-import java.util.Map.Entry;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
 
 /**
- * {@link Adapter} that receives messages in HTTP.
+ * {@link com.sun.xml.internal.ws.api.server.Adapter} that receives messages in HTTP.
  *
  * <p>
  * This object also assigns unique query string (such as "xsd=1") to
- * each {@link SDDocument} so that they can be served by HTTP GET requests.
+ * each {@link com.sun.xml.internal.ws.api.server.SDDocument} so that they can be served by HTTP GET requests.
  *
  * @author Kohsuke Kawaguchi
  * @author Jitendra Kotamraju
@@ -86,10 +90,10 @@
 public class HttpAdapter extends Adapter<HttpAdapter.HttpToolkit> {
 
     /**
-     * {@link SDDocument}s keyed by the query string like "?abc".
+     * {@link com.sun.xml.internal.ws.api.server.SDDocument}s keyed by the query string like "?abc".
      * Used for serving documents via HTTP GET.
      *
-     * Empty if the endpoint doesn't have {@link ServiceDefinition}.
+     * Empty if the endpoint doesn't have {@link com.sun.xml.internal.ws.api.server.ServiceDefinition}.
      * Read-only.
      */
     protected Map<String,SDDocument> wsdls;
@@ -109,7 +113,7 @@
     public final HttpAdapterList<? extends HttpAdapter> owner;
 
     /**
-     * Servlet URL pattern with which this {@link HttpAdapter} is associated.
+     * Servlet URL pattern with which this {@link com.sun.xml.internal.ws.transport.http.HttpAdapter} is associated.
      */
     public final String urlPattern;
 
@@ -118,10 +122,10 @@
     protected boolean disableJreplicaCookie = false;
 
     /**
-     * Creates a lone {@link HttpAdapter} that does not know of any other
-     * {@link HttpAdapter}s.
+     * Creates a lone {@link com.sun.xml.internal.ws.transport.http.HttpAdapter} that does not know of any other
+     * {@link com.sun.xml.internal.ws.transport.http.HttpAdapter}s.
      *
-     * This is convenient for creating an {@link HttpAdapter} for an environment
+     * This is convenient for creating an {@link com.sun.xml.internal.ws.transport.http.HttpAdapter} for an environment
      * where they don't know each other (such as JavaSE deployment.)
      *
      * @param endpoint web service endpoint
@@ -137,11 +141,14 @@
      * @param endpoint web service endpoint
      * @param owner list of related adapters
      */
-    protected HttpAdapter(WSEndpoint endpoint, HttpAdapterList<? extends HttpAdapter> owner) {
+    protected HttpAdapter(WSEndpoint endpoint,
+                          HttpAdapterList<? extends HttpAdapter> owner) {
         this(endpoint,owner,null);
     }
 
-    protected HttpAdapter(WSEndpoint endpoint, HttpAdapterList<? extends HttpAdapter> owner, String urlPattern) {
+    protected HttpAdapter(WSEndpoint endpoint,
+                          HttpAdapterList<? extends HttpAdapter> owner,
+                          String urlPattern) {
         super(endpoint);
         this.owner = owner;
         this.urlPattern = urlPattern;
@@ -184,7 +191,7 @@
 
             int wsdlnum = 1;
             int xsdnum = 1;
-            for (Map.Entry<String, SDDocument> e : systemIds.entrySet()) {
+            for (Entry<String, SDDocument> e : systemIds.entrySet()) {
                 SDDocument sdd = e.getValue();
                 if (sdd.isWSDL()) {
                     wsdls.put("wsdl="+(wsdlnum++),sdd);
@@ -231,12 +238,12 @@
      * and "connection" here is an HTTP connection.
      *
      * <p>
-     * To populate a request {@link Packet} with more info,
+     * To populate a request {@link com.sun.xml.internal.ws.api.message.Packet} with more info,
      * define {@link com.oracle.webservices.internal.api.message.PropertySet.Property properties} on
      * {@link WSHTTPConnection}.
      *
      * @param connection to receive/send HTTP messages for web service endpoints
-     * @throws IOException when I/O errors happen
+     * @throws java.io.IOException when I/O errors happen
      */
     public void handle(@NotNull WSHTTPConnection connection) throws IOException {
         if (handleGet(connection)) {
@@ -338,7 +345,7 @@
 
     /**
      * Some stacks may send non WS-I BP 1.2 conforming SoapAction.
-     * Make sure SOAPAction is quoted as {@link Packet#soapAction} expects quoted soapAction value.
+     * Make sure SOAPAction is quoted as {@link com.sun.xml.internal.ws.api.message.Packet#soapAction} expects quoted soapAction value.
      *
      * @param soapAction SoapAction HTTP Header
      * @return quoted SOAPAction value
@@ -385,7 +392,7 @@
 
     private void encodePacket(@NotNull Packet packet, @NotNull WSHTTPConnection con, @NotNull Codec codec) throws IOException {
         if (isNonAnonymousUri(packet.endpointAddress) && packet.getMessage() != null) {
-            try {
+           try {
                 // Message is targeted to non-anonymous response endpoint.
                 // After call to non-anonymous processor, typically, packet.getMessage() will be null
                 // however, processors could use this pattern to modify the response sent on the back-channel,
@@ -413,9 +420,18 @@
                 if (con.getStatus() == 0) {
                     con.setStatus(WSHTTPConnection.ONEWAY);
                 }
+                OutputStream os = con.getProtocol().contains("1.1") ? con.getOutput() : new Http10OutputStream(con);
+                if (dump || LOGGER.isLoggable(Level.FINER)) {
+                    ByteArrayBuffer buf = new ByteArrayBuffer();
+                    codec.encode(packet, buf);
+                    dump(buf, "HTTP response " + con.getStatus(), con.getResponseHeaders());
+                    buf.writeTo(os);
+                } else {
+                    codec.encode(packet, os);
+                }
                 // close the response channel now
                 try {
-                    con.getOutput().close(); // no payload
+                    os.close(); // no payload
                 } catch (IOException e) {
                     throw new WebServiceException(e);
                 }
@@ -430,10 +446,17 @@
             }
 
             if (isClientErrorStatus(con.getStatus())) {
-                 OutputStream os = con.getOutput();
-                 writeClientError(con.getStatus(), os, packet);
-                 os.close();
-                 return;
+                OutputStream os = con.getOutput();
+                if (dump || LOGGER.isLoggable(Level.FINER)) {
+                    ByteArrayBuffer buf = new ByteArrayBuffer();
+                    writeClientError(con.getStatus(), buf, packet);
+                    dump(buf, "HTTP response " + con.getStatus(), con.getResponseHeaders());
+                    buf.writeTo(os);
+                } else {
+                    writeClientError(con.getStatus(), os, packet);
+                }
+                os.close();
+                  return;
             }
 
             ContentType contentType = codec.getStaticContentType(packet);
@@ -634,6 +657,15 @@
                     // no-op
                 }
 
+                if (dump || LOGGER.isLoggable(Level.FINER)) {
+                    try {
+                        ByteArrayBuffer buf = new ByteArrayBuffer();
+                        dump(buf, "HTTP response " + con.getStatus(), con.getResponseHeaders());
+                    } catch (Exception e) {
+                        throw new WebServiceException(e.toString(), e);
+                    }
+                }
+
                 if (output != null) {
                         try {
                                 output.close(); // no payload
@@ -671,7 +703,7 @@
                     try {
                         packet = head.process(packet, con.getWebServiceContextDelegate(),
                                 packet.transportBackChannel);
-                    } catch(Exception e) {
+                    } catch(Throwable e) {
                         LOGGER.log(Level.SEVERE, e.getMessage(), e);
                         if (!con.isClosed()) {
                             writeInternalServerError(con);
@@ -682,6 +714,9 @@
                 encodePacket(packet, con, codec);
             } finally {
                 if (!con.isClosed()) {
+                    if (LOGGER.isLoggable(Level.FINE)) {
+                        LOGGER.log(Level.FINE, "Closing HTTP Connection with status: {0}", con.getStatus());
+                    }
                     con.close();
                 }
             }
@@ -710,7 +745,7 @@
      * @param con
      *      The connection to which the data will be sent.
      *
-     * @throws IOException when I/O errors happen
+     * @throws java.io.IOException when I/O errors happen
      */
     public void publishWSDL(@NotNull WSHTTPConnection con) throws IOException {
         con.getInput().close();
@@ -800,7 +835,7 @@
         }
     }
 
-    private void dump(ByteArrayBuffer buf, String caption, Map<String, List<String>> headers) throws IOException {
+    private static void dump(ByteArrayBuffer buf, String caption, Map<String, List<String>> headers) throws IOException {
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         PrintWriter pw = new PrintWriter(baos, true);
         pw.println("---["+caption +"]---");
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/util/version.properties	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/util/version.properties	Wed Jun 12 14:47:09 2013 +0100
@@ -23,7 +23,7 @@
 # questions.
 #
 
-build-id=2.2.9-b13941
-build-version=JAX-WS RI 2.2.9-b13941
+build-id=2.2.9-b14027
+build-version=JAX-WS RI 2.2.9-b14027
 major-version=2.2.9
-svn-revision=unknown
+svn-revision=14027
--- a/src/share/jaxws_classes/javax/xml/soap/FactoryFinder.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/javax/xml/soap/FactoryFinder.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -39,20 +39,17 @@
      *            or could not be instantiated
      */
     private static Object newInstance(String className,
-                                      ClassLoader classLoader,
-                                      String defaultFactoryClass)
-        throws SOAPException
+                                      ClassLoader classLoader)
+            throws SOAPException
     {
         try {
-            Class spiClass = safeLoadClass(className, classLoader, defaultFactoryClass);
+            Class spiClass = safeLoadClass(className, classLoader);
             return spiClass.newInstance();
+
         } catch (ClassNotFoundException x) {
-            throw new SOAPException(
-                "Provider " + className + " not found", x);
+            throw new SOAPException("Provider " + className + " not found", x);
         } catch (Exception x) {
-            throw new SOAPException(
-                "Provider " + className + " could not be instantiated: " + x,
-                x);
+            throw new SOAPException("Provider " + className + " could not be instantiated: " + x, x);
         }
     }
 
@@ -70,7 +67,7 @@
      * @exception SOAPException if there is a SOAP error
      */
     static Object find(String factoryId)
-        throws SOAPException
+            throws SOAPException
     {
         return find(factoryId, null, false);
     }
@@ -85,7 +82,7 @@
      * 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>
+     *         may be <code>null</code>
      *
      * @param factoryId             the name of the factory to find, which is
      *                              a system property
@@ -96,7 +93,7 @@
      * @exception SOAPException if there is a SOAP error
      */
     static Object find(String factoryId, String fallbackClassName)
-        throws SOAPException
+            throws SOAPException
     {
         return find(factoryId, fallbackClassName, true);
     }
@@ -108,7 +105,7 @@
      * 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 condiitons can be handled.
+     * 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.
      *
@@ -126,7 +123,7 @@
      * @exception SOAPException if there is a SOAP error
      */
     static Object find(String factoryId, String defaultClassName,
-            boolean tryFallback) throws SOAPException {
+                       boolean tryFallback) throws SOAPException {
         ClassLoader classLoader;
         try {
             classLoader = Thread.currentThread().getContextClassLoader();
@@ -137,9 +134,9 @@
         // Use the system property first
         try {
             String systemProp =
-                System.getProperty( factoryId );
+                    System.getProperty( factoryId );
             if( systemProp!=null) {
-                return newInstance(systemProp, classLoader, defaultClassName);
+                return newInstance(systemProp, classLoader);
             }
         } catch (SecurityException se) {
         }
@@ -148,13 +145,13 @@
         try {
             String javah=System.getProperty( "java.home" );
             String configFile = javah + File.separator +
-                "lib" + File.separator + "jaxm.properties";
+                    "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, defaultClassName);
+                return newInstance(factoryClassName, classLoader);
             }
         } catch(Exception ex ) {
         }
@@ -171,14 +168,14 @@
 
             if( is!=null ) {
                 BufferedReader rd =
-                    new BufferedReader(new InputStreamReader(is, "UTF-8"));
+                        new BufferedReader(new InputStreamReader(is, "UTF-8"));
 
                 String factoryClassName = rd.readLine();
                 rd.close();
 
                 if (factoryClassName != null &&
-                    ! "".equals(factoryClassName)) {
-                    return newInstance(factoryClassName, classLoader, defaultClassName);
+                        ! "".equals(factoryClassName)) {
+                    return newInstance(factoryClassName, classLoader);
                 }
             }
         } catch( Exception ex ) {
@@ -192,9 +189,9 @@
         // (built in) factory if specified.
         if (defaultClassName == null) {
             throw new SOAPException(
-                "Provider for " + factoryId + " cannot be found", null);
+                    "Provider for " + factoryId + " cannot be found", null);
         }
-        return newInstance(defaultClassName, classLoader, defaultClassName);
+        return newInstance(defaultClassName, classLoader);
     }
 
     /**
@@ -204,7 +201,7 @@
      * Class.forName() on it so it will be loaded by the bootstrap class loader.
      */
     private static Class safeLoadClass(String className,
-            ClassLoader classLoader, String defaultFactoryClass)
+                                       ClassLoader classLoader)
             throws ClassNotFoundException {
         try {
             // make sure that the current thread has an access to the package of the given name.
@@ -221,12 +218,19 @@
             else
                 return classLoader.loadClass(className);
         } catch (SecurityException se) {
-            // The FactoryFinder is in the bootstrap class loader, so
-            // the following should work, but we only attempt it
-            // if it the the default class.
-            if (className.equals(defaultFactoryClass))
+            // (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/src/share/jaxws_classes/javax/xml/soap/MessageFactory.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/javax/xml/soap/MessageFactory.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -66,7 +66,7 @@
  */
 public abstract class MessageFactory {
 
-    static private final String DEFAULT_MESSAGE_FACTORY
+    static final String DEFAULT_MESSAGE_FACTORY
         = "com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl";
 
     static private final String MESSAGE_FACTORY_PROPERTY
@@ -96,16 +96,22 @@
      * @see SAAJMetaFactory
      */
 
-    public static MessageFactory newInstance()
-        throws SOAPException {
+    public static MessageFactory newInstance() throws SOAPException {
+
+
         try {
-            MessageFactory factory = (MessageFactory)
+            MessageFactory factory = (MessageFactory) FactoryFinder.find(
+                    MESSAGE_FACTORY_PROPERTY,
+                    DEFAULT_MESSAGE_FACTORY,
+                    false);
                 FactoryFinder.find(MESSAGE_FACTORY_PROPERTY,
                         DEFAULT_MESSAGE_FACTORY, false);
 
-            if (factory != null)
+            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: "
--- a/src/share/jaxws_classes/javax/xml/soap/SAAJMetaFactory.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/javax/xml/soap/SAAJMetaFactory.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -44,7 +44,7 @@
 public abstract class SAAJMetaFactory {
     static private final String META_FACTORY_CLASS_PROPERTY =
         "javax.xml.soap.MetaFactory";
-    static private final String DEFAULT_META_FACTORY_CLASS =
+    static final String DEFAULT_META_FACTORY_CLASS =
         "com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl";
 
     /**
--- a/src/share/jaxws_classes/javax/xml/soap/SOAPConnectionFactory.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/javax/xml/soap/SOAPConnectionFactory.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -38,7 +38,7 @@
      * A constant representing the default value for a <code>SOAPConnection</code>
      * object. The default is the point-to-point SOAP connection.
      */
-    static private final String DEFAULT_SOAP_CONNECTION_FACTORY
+    static final String DEFAULT_SOAP_CONNECTION_FACTORY
         = "com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnectionFactory";
 
     /**
--- a/src/share/jaxws_classes/javax/xml/soap/SOAPFactory.java	Thu May 30 10:58:13 2013 -0700
+++ b/src/share/jaxws_classes/javax/xml/soap/SOAPFactory.java	Wed Jun 12 14:47:09 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -54,11 +54,9 @@
         "javax.xml.soap.SOAPFactory";
 
     /**
-     * A constant representing the name of the default <code>SOAPFactory</code>
-     * factory class to be used if another cannot be found.
-     * a <code>SOAPFactory</code> implementation class.
+     * Class name of default <code>SOAPFactory</code> implementation.
      */
-    static private final String DEFAULT_SOAP_FACTORY
+    static final String DEFAULT_SOAP_FACTORY
         = "com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl";
 
     /**